CALCULATE
Şunlar için geçerlidir:Hesaplanan sütun
Hesaplanan tablo
Ölçü
Görsel hesaplama
Değiştirilen filtre bağlamındaki bir ifadeyi değerlendirir.
Not
ayrıca CALCULATETABLE işlevi de vardır.
Sözdizimi
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Parametre
Terim | Tanım |
---|---|
expression |
Değerlendirilecek ifade. |
filter1, filter2,… |
(İsteğe bağlı) Filtreleri veya filtre değiştirici işlevlerini tanımlayan Boole ifadeleri veya tablo ifadeleri. |
İlk parametre olarak kullanılan ifade temelde bir ölçüyle aynıdır.
Filtreler şu şekilde olabilir:
- Boole filtre ifadeleri
- Tablo filtresi ifadeleri
- Filtre değiştirme işlevleri
Birden çok filtre olduğunda, bunlar AND (&&
) mantıksal işleçkullanılarak değerlendirilebilir. Bu, tüm koşulların TRUE
olması gerektiği anlamına gelir veya OR (||
) mantıksal işleci tarafından (koşullardan birinin doğru olabileceği anlamına gelir).
Boole filtre ifadeleri
Boole ifade filtresi, TRUE
veya FALSE
olarak değerlendirilen bir ifadedir. Uymaları gereken birkaç kural vardır:
- Tek bir tablodaki sütunlara başvurabilir.
- Ölçülere başvuramazlar.
- İç içe CALCULATE işlevi kullanamazlar.
Power BI Desktop'ın Eylül 2021 sürümünden itibaren aşağıdakiler de geçerlidir:
- Toplama işlevlerine bağımsız değişken olarak geçirilmedikçe tabloyu tarayabilen veya döndüren işlevleri kullanamazlar.
- Bunlar skaler değer döndüren bir toplama işlevi içerebilir. Mesela
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Tablo filtresi ifadesi
Tablo ifadesi filtresi, bir tablo nesnesini filtre olarak uygular. Bir model tablosuna başvuru olabilir, ancak büyük olasılıkla tablo nesnesi döndüren bir işlevdir. Boole filtre ifadesi tarafından tanımlanamayanlar da dahil olmak üzere karmaşık filtre koşulları uygulamak için FILTER işlevini kullanabilirsiniz.
Filtre değiştirici işlevleri
Filtre değiştirici işlevleri, yalnızca filtre eklemekten daha fazlasını yapmanıza olanak sağlar. Filtre bağlamı değiştirilirken size ek denetim sağlar.
Fonksiyon | Amaç |
---|---|
REMOVEFILTERS | Tablonun bir veya daha fazla sütundan ya da tek bir tablonun tüm sütunlarından tüm filtreleri veya filtreleri kaldırın. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Filtreleri bir veya daha fazla sütundan veya tek bir tablonun tüm sütunlarından kaldırın. |
KEEPFILTERS | Aynı sütunlardaki mevcut filtreleri kaldırmadan filtre ekleyin. |
USERELATIONSHIP | İlgili sütunlar arasında etkin olmayan bir ilişki oluşturun; bu durumda etkin ilişki otomatik olarak etkin olmaz. |
CROSSFILTER | Filtre yönünü değiştirin (her ikisinden tekine veya tekten her ikisine) veya bir ilişkiyi devre dışı bırakın. |
1ALL işlevi ve varyantları hem filtre değiştiricileri hem de tablo nesnelerini döndüren işlevler olarak davranır. REMOVEFILTERS işlevi aracınız tarafından destekleniyorsa filtreleri kaldırmak için kullanmak daha iyidir.
Dönüş değeri
İfadenin sonucu olan değer.
Açıklamalar
Filtre ifadeleri sağlandığında, CALCULATE işlevi ifadeyi değerlendirmek için filtre bağlamını değiştirir. Her filtre ifadesi için, filtre ifadesi KEEPFILTERS işlevinde sarmalanmadığında iki olası standart sonuç vardır:
- Sütunlar (veya tablolar) filtre bağlamında değilse, ifadeyi değerlendirmek için filtre bağlamlarına yeni filtreler eklenir.
- Sütunlar (veya tablolar) zaten filtre bağlamındaysa, CALCULATE ifadesini değerlendirmek için yeni filtreler mevcut filtrelerin üzerine yazılır.
Filtreler olmadan kullanılan CALCULATE işlevi belirli bir gereksinime ulaşır. Filtre bağlamı için satır bağlamı geçirir. Model verilerini özetleyen bir ifadenin (model ölçüsü değil) satır bağlamında değerlendirilmesi gerektiğinde gereklidir. Bu senaryo, hesaplanan sütun formülünde veya yineleyici işlevindeki bir ifade değerlendirildiğinde gerçekleşebilir. Satır bağlamında bir model ölçüsü kullanıldığında bağlam geçişinin otomatik olduğunu unutmayın.
Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.
Örnekler
Aşağıdaki Sales tablo ölçüsü tanımı, yalnızca mavi renkli ürünler için gelir sonucu verir.
Bu makaledeki örnekler örnek Adventure Works DW 2020 Power BI Desktop modeliyle kullanılabilir. Modeli almak için bkz.örnek modeli
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Kategori | Satış Tutarı | Mavi Gelir |
---|---|---|
Aksesuar -lar | 1.272.057,89 USD | $165,406,62 |
Bisiklet | 94.620.526,21 ABD doları | 8.374.313,88 ABD Doları |
Giysi | $2,117,613,45 | $259,488,37 |
Bileşen | 11.799.076,66 USD | $803,642,10 |
Toplam |
$109.809.274,20 | $9,602,850,97 |
Aşağıdaki Sales tablo ölçüsü tanımı, tüm satış kanalları için satışlara göre bir satış oranı oluşturur.
Kanal | Satış Tutarı | Gelir % Toplam Kanal |
---|---|---|
Internet | 29.358.677,22 ABD doları | 26,74% |
Bayi | $80,450,596,98 | 73.26% |
Toplam |
$109.809.274,20 | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
DIVIDE işlevi, Sales tablosunu Sales Amount sütun değerini (filtre bağlamında) değişen filtre bağlamındaki aynı ifadeye bölen bir ifadeyi böler. Bir filtre değiştirici işlevi olan REMOVEFILTERS işlevini kullanarak filtre bağlamını değiştiren CALCULATE işlevidir. Sales Order tablosundaki Channel sütunundaki filtreleri kaldırır.
Aşağıdaki Customer tablosu hesaplanmış sütun tanımı müşterileri bir bağlılık programı sınıfına sınıflandırır. Bu çok basit bir senaryodur: Müşteri tarafından üretilen gelir 2500 ABD dolarının altında olduğunda,
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
Bu örnekte, satır bağlamı filtre bağlamı olarak dönüştürülür.
İlgili içerik
Filtre bağlamıSatır bağlamıCALCULATETABLE işleviFilter işlevleri