Kurs
CALCULATE() işlevi, Power BI’nin en önemli (ve en popüler) DAX işlevlerinden biridir. Kullanımı kolay ve son derece esnektir; veri analizlerinizi genişletmenize ve daha değerli Power BI raporları geliştirmenize olanak tanır.
Bu eğitim, CALCULATE() işlevinin ne olduğuna ve nasıl kullanılacağına odaklanır ve Power BI ve DAX temellerine zaten aşina olduğunuzu varsayar.
Power BI Calculate() İşlevi Nedir?
Microsoft Power BI belgelerine göre CALCULATE() işlevi, filtre işlevleri kategorisinin bir parçasıdır ve "değiştirilmiş bir filtre bağlamında bir ifadenin değerlendirilmesi" olarak tanımlanır. Bir ifade, özünde bir ölçüdür ve SUM(), AVERAGE() ve COUNT() gibi işlevleri içerir. Bu ifade, bir veya daha fazla filtrenin bağlamında değerlendirilir.
Bildiginiz gibi, CALCULATE() işlevini kullanarak bir ölçü oluşturmadan da, yalnızca dilimler (slicer) ekleyerek bir Power BI raporuna filtreler uygulanabilir. Ancak CALCULATE() işlevinin daha uygun olduğu pek çok kullanım durumu vardır. Özellikle başka bir işlevin bileşeni olarak kullanmak faydalıdır. Toplamın yüzdesini hesaplama örneğinde bunun nasıl çalıştığını aşağıda göreceğiz.
DAX Calculate() Temel Söz Dizimi
CALCULATE() işlevinin temel DAX söz dizimi şöyledir:
CALCULATE( <expression> [, <filter1> [, <filter2> [, ...]]])
CALCULATE() işlevi 2 ana bileşenden oluşur:
-
İfade (expression) - bu,
SUM(),AVERAGE()veCOUNT()gibi işlevlerle bir ölçü gibi oluşturulan toplama (aggregasyon) bileşenidir. -
Filtreler - bu bileşen, toplamanın bağlamını kontrol eden bir veya daha fazla filtre belirtmenizi sağlar.
CALCULATE() işlevinde kullanılabilecek 3 tür filtre vardır:
-
Boole filtre ifadeleri - sonucun
TRUEya daFALSEolması gereken basit bir filtredir. -
Tablo filtre ifadeleri - sonucun bir tablo olduğu daha karmaşık bir filtredir.
-
Filtreyi değiştiren işlevler -
ALLveKEEPFILTERSgibi filtreler bu kategoriye girer ve uygulamak istediğiniz filtre bağlamı üzerinde daha fazla kontrol sağlar.
CALCULATE() işlevinin filtre bileşenine, her filtreyi virgülle ayırarak birden çok filtre ekleyebilirsiniz. Tüm filtreler birlikte değerlendirilir ve sıraları önemli değildir.
Filtrelerin nasıl değerlendirileceğini mantıksal operatörlerle kontrol edebilirsiniz. Tüm koşulların TRUE olarak değerlendirilmesini istiyorsanız AND (&&) kullanabilirsiniz. Bu aynı zamanda yukarıda belirtildiği gibi filtrelerin varsayılan davranışıdır. Alternatif olarak, OR (||) operatörüyle, bir sonucun döndürülmesi için en az bir koşulun TRUE olması gerekir.
Power BI Calculate() Nasıl Kullanılır
CALCULATE() kullanmak için tablonuza bir ölçü eklemeniz yeterlidir. Bunu, şeritteki Modeling sekmesine gidip New measure seçeneğini belirleyerek yapabilirsiniz.

Power BI Modeling sekmesinde New measure seçimi. Görsel: Yazar
Aşağıda, toplam geliri bulmak için SUM() kullanan ve Country = United Kingdom için filtre uygulayan basit bir CALCULATE() örneği yer alıyor. Bu örneği, eğitimin sonunda daha ayrıntılı olarak tekrar ele alacağız.
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
'Online Retail'[Country] = "United Kingdom")
Bir tabloda görüntülendiğinde, UK Revenue ölçüsünün, tabloda Month için zaten mevcut olan filtre bağlamına ek olarak Country için bir filtre uyguladığını görebiliriz. CALCULATE() işlevini bu şekilde kullanmak, görselimizde hangi tür bilgilerin görüntüleneceği üzerinde daha ayrıntılı kontrol sağlar.
Power BI'da gelir tablosu. Görsel: Yazar
Ölçüler oluştururken akılda tutulması gereken önemli bir nokta, özellikle sorgularınızın hızı ve optimizasyonu açısından iyi veri modelleme uygulamalarını izlemektir. Bu nedenle, CALCULATE() işlevinin bazı kullanımları diğerlerinden daha hızlı veya daha uygundur.
Örneğin, Microsoft belgeleri, FILTER() işlevini diğer işlevlere (örneğin CALCULATE() içine) argüman olarak kullanmaktan kaçınmanızı önerir. Bunun yerine, mümkün olduğunda, bu amaç için açıkça optimize edildikleri için boole ifadeleri kullanmak daha iyidir.
Yukarıdaki örnekte, Country = United Kingdom filtremizi tanımlamak için bir boole ifadesi kullandık. Bu, daha hızlı ve daha optimize bir yaklaşımdır. Öte yandan, aşağıda aynı sonucu veren ancak daha yavaş hesaplanan bir FILTER() işlevi örneği yer alıyor:
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER('Online Retail',
'Online Retail'[Country] = "United Kingdom")
Power BI Calculate() İşlevi Örnekleri
Gerçek dünyadan bir e-ticaret veri seti kullanarak, CALCULATE() işlevinin iş sorunlarını çözmek için nasıl kullanılabileceğine dair birkaç temel yolu inceleyeceğiz. Bu eğitimi adım adım takip etmek için DataLab’de barındırılan e-ticaret veri setine erişebilirsiniz.
Bu veri seti, bir müşterinin yaptığı her satın alma hakkında bilgi içerir: satın alma yapılan ülke, ürün açıklaması, satın alma tarihi ve saati ile satın alınan her bir ürünün miktarı ve fiyatı.
CALCULATE() işlevinin yardımıyla şu soruları yanıtlayacağız:
- Birleşik Krallık’taki aylık toplam gelir diğer tüm ülkelerle nasıl karşılaştırılır?
- Toplam gelirin yüzde kaçı Birleşik Krallık’tan geliyor?
- Kümülatif günlük gelir nedir?
Birleşik Krallık’taki aylık toplam gelir diğer tüm ülkelerle nasıl karşılaştırılır?
Bu soruyu yanıtlamak için CALCULATE() işlevini kullanarak iki ölçü oluşturmamız gerekir. Önce, Birleşik Krallık’taki toplam geliri (SUM() işleviyle) döndüren bir ölçü oluşturmak için basit bir boole filtresi kullanıyoruz:
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
'Online Retail'[Country] = "United Kingdom")
Ardından, benzer bir ölçü oluşturuyoruz ancak bu kez FILTER() işlevini kullanıyoruz. Bu filtre ifadesi, Country sütununun her bir satırından geçer ve filtre koşuluyla eşleşen satırları içeren bir tablo döndürür. Burada FILTER() işlevi gereklidir çünkü filtreden basit bir TRUE veya FALSE döndüremiyoruz. Bunun yerine çoklu değerler içeren bir tablo elde ediyoruz.
Non-UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER('Online Retail',
'Online Retail'[Country] <>"United Kingdom")
Dolayısıyla, Birleşik Krallık’ın bu e-ticaret mağazası için, diğer tüm ülkelere kıyasla gelirin büyük kısmını oluşturduğunu görebiliriz.
Aylık geliri gösteren Power BI çizgi grafiği. Görsel: Yazar.
Toplam gelirin yüzde kaçı Birleşik Krallık’tan geliyor?
Bu, Power BI geliştiricileri ve kullanıcılarının çok sık karşılaştığı bir soru türüdür ve CALCULATE() işlevini uygulamak için mükemmel bir durumdur.
Bir toplamın yüzdesini bulmak için önce, rapordaki diğer filtre bağlamlarından etkilenmeden toplamı döndürebilmemiz gerekir. Bunu başarmak için ALL() adlı bir filtre değiştirici kullanırız. Bu işlevi kullanarak, hesabımızın tamamen yok saymasını istediğimiz filtrelerin hangi sütundan geldiğini belirtiriz.
Bu örnekte, Birleşik Krallık’taki toplam gelirin yüzdesini arıyoruz. Bu, hesabımızın Country sütunundaki tüm filtreleri yok sayması gerektiği anlamına gelir.
Total Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
ALL('Online Retail'[Country]))
Bu, CALCULATE() dışındaki bir filtre bağlamı zaten Product[Color]’ı filtreliyorken CALCULATE()’in içerden çalıştırılabilmesi nedeniyle önemlidir. Bu senaryoda, ALL’un varlığı, Product[Color] üzerindeki dış filtreyi yok sayar ve CALCULATE() tarafından getirilen yeni filtreyle değiştirilir. Bu durum, matriste Brand yerine Color ile dilimleme yaptığımızda da görülebilir.
Artık toplam gelirimizi bildiğimize göre, toplam gelir yüzdesini gösterecek bir ölçü oluşturabiliriz. Ancak özellikle Birleşik Krallık ile ilgilendiğimiz için, CALCULATE işlevini bir kez daha kullanacağız, fakat bu kez basit bir boole filtresi kullanacağız.()
UK % of Revenue = CALCULATE(SUM('Online Retail'[Revenue])/[Total Revenue],
'Online Retail'[Country] = "United Kingdom")
Artık Birleşik Krallık’ın bu e-ticaret mağazasının toplam gelirinin %84’ünü oluşturduğunu görebiliyoruz.
Power BI'da yüzde hesaplama. Görsel: Yazar
Kümülatif günlük gelir nedir?
Kümülatif gelir, gelir eğilimleri hakkında bazı içgörüler sağlayabilir. Bu kümülatif geliri bir grafikte çizerek, zaman içinde gelirin daha hızlı artıp artmadığını görsel olarak da görebiliriz.
Bu soruyu yanıtlamak için, CALCULATE() işlevinin yanı sıra şu filtre işlevlerini kullanan bir ölçü oluşturmalıyız: ALLSELECTED(), FILTER() ve MAX() işleviyle bir değerlendirme.
Cumulative Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER( ALLSELECTED('Online Retail'[InvoiceDate]),
'Online Retail'[InvoiceDate] <= MAX('Online Retail'[InvoiceDate])))
Burada bu filtrelerin neden önemli olduğuna bakalım:
-
FILTER()işlevi, belirttiğimiz 2 filtrenin her birinin satır satır değerlendirilmesine olanak tanır ve eşleşme olan durumlarda bir tablo döndürür. -
ALLSELECTED()işlevi, mevcut sorguda (aşağıdaki sonuçta mevcut sorgu çizgi grafiktir) InvoiceDate üzerindeki filtreyi sıfırlar, ancak harici filtrelere (örneğin dilimleyicilerden gelen) izin verir. -
MAX()işlevi bir değerlendirmenin parçası olarak kullanılır — sorgudaki geçerli tarihe eşit veya ondan daha eski tüm tarihler için geliri toplamak istiyoruz.
Power BI'da tarihe göre geliri hesaplama. Görsel: Yazar.
Kapanış Notları
Bu eğitimde, Power BI’de CALCULATE() işlevinin ne olduğunu ve nasıl kullanılacağını ele aldık. Ayrıca CALCULATE() işlevini gerçek bir e-ticaret veri setine uygulayarak bazı temel iş sorularını yanıtladık.
CALCULATE(), Power BI’deki en yararlı işlevlerden biridir ve raporlar oluştururken ve verilerinizden daha derin içgörüler elde ederken muhtemelen sıkça kullanmanız gerekecektir.
Umarız bu eğitim, yalnızca CALCULATE()’in temel söz dizimini değil, aynı zamanda bir Power BI veri analisti olarak gerçek iş sorunlarını çözmekle nasıl ilişkili olduğunu da anlamanıza yardımcı olur.
