CALCULATE

Şunlar için geçerlidir:Hesaplanan sütunHesaplanan 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. tablo nesnesi döndüren bir ifadeye uygulanan filtre bağlamını değiştirmesi dışında tam olarak aynı işlevi gerçekleştirir.

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 kullandığınız ifade ölçü gibi çalışır.

Filtreler şu şekilde olabilir:

  • Boole filtre ifadeleri
  • Tablo filtresi ifadeleri
  • Filtre değiştirme işlevleri

Birden çok filtre kullandığınızda, bunları (&&) mantıksal işlecini kullanarak AND değerlendirebilirsiniz. Bu, tüm koşulların veya (||) mantıksal işlecinin () olması gerektiği TRUEanlamına gelir; bu da iki koşulun OR da doğru olabileceği anlamına gelir. Daha fazla bilgi için bkz DAX . işleçler > mantıksal işleçleri.

Boole filtre ifadeleri

Boole ifade filtresi, TRUE veya FALSEolarak değerlendirilen bir ifadedir. Birkaç kurala uyması gerekir:

  • Tek bir tablodaki sütunlara başvurabilir.

  • Ölçülere başvuramaz.

  • İç içe CALCULATE bir işlev kullanamaz.

  • Bir tabloyu toplama işlevlerine bağımsız değişken olarak geçirmediğiniz sürece tabloyu tarayan veya döndüren işlevleri kullanamaz.

  • Skaler değer döndüren bir toplama işlevi içerebilir. Örneğin:

    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ımlayamayanlar da dahil olmak üzere karmaşık filtre koşullarını uygulamak için işlevini kullanabilirsiniz FILTER .

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. Aracınız işlevi destekliyorsa REMOVEFILTERS filtreleri kaldırmak için kullanın.

Dönüş değeri

İfadeden kaynaklanan değer.

Açıklamalar

  • Filtre ifadeleri sağladığınızda işlev, ifadeyi CALCULATE değerlendirmek için filtre bağlamını değiştirir. Her filtre ifadesi için, filtre ifadesi işlevde KEEPFILTERS sarmalanmıyorsa iki 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, ifadeyi değerlendirmek için yeni filtreler mevcut filtrelerin CALCULATE üzerine yazılır.
  • İşlevin CALCULATEfiltre olmadan kullanılması belirli bir gereksinime ulaşır. Filtre bağlamı için satır bağlamı geçirir. Bu geçiş, 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 model ölçüsü kullandığınızda bağlam geçişi otomatiktir.

  • 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

Bu makaledeki örnekler örnek Adventure Works DW 2020 Power BI Desktop modeliyle kullanılabilir. Modeli almak için bkz.örnek modeli .

Aşağıdaki Sales tablo ölçüsü tanımı, yalnızca mavi renkli ürünler için gelir sonucu verir.

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

işlevi, değiştirilen filtre bağlamında sales amount sütununu Sales tablosunun toplamını değerlendirir. Product tablosuna Color sütunu yeni bir filtre eklenir veya filtre, sütuna zaten uygulanmış olan tüm filtrelerin üzerine yazılır.

Aşağıdaki Sales tablo ölçüsü tanımı, tüm satış kanalları için satışlara göre bir satış oranı oluşturur.

Revenue % Total Channel =
DIVIDE (
    SUM ( Sales[Sales Amount] ),
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        REMOVEFILTERS ( 'Sales Order'[Channel] )
    )
)
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%

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 CALCULATE işlevini kullanarak filtre bağlamını değiştiren REMOVEFILTERS 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, Düşükolarak sınıflandırılır; aksi takdirde yüksek.

Customer Segment =
IF (
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        ALLEXCEPT ( Customer, Customer[CustomerKey] )
    ) < 2500,
    "Low",
    "High"
)
Müşteri Segmenti Müşteri Sayısı Satış Tutarı
Yüksek 4,637 102.670.663,09 USD
Low 13,848 $7,138,611,11
Toplam 18,485 $109.809.274,20

Bu örnekte, satır bağlamı filtre bağlamı olarak dönüştürülür. bağlam geçişi olarak bilinir. ALLEXCEPT işlevi, CustomerKey sütunu dışındaki tüm Customer tablo sütunlarından filtreleri kaldırır.