Aracılığıyla paylaş


HESAPLAMAK

Şunlar için geçerlidir: Hesaplanmış sütun Hesaplanan tablo Ölçü Görseli hesaplaması

Değiştirilen filtre bağlamındaki bir ifadeyi değerlendirir.

Not

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> [, …]]])

Parametreler

Süre Tanım
ifade Değerlendirilecek ifade.
filtre1, filtre2,... (İ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, and (&) mantıksal işleci kullanılarak değerlendirilebilir. Bu, tüm koşulların DOĞRU olması gerektiği anlamına gelir veya VEYA (||) mantıksal işleci tarafından her iki koşulun da doğru olabileceği anlamına gelir.

Boole filtre ifadeleri

Boole ifadesi filtresi, TRUE veya FALSE sonucunu veren bir ifadedir. Uymaları gereken birkaç kural vardır:

  • Tek bir tablodaki sütunlara başvurabilir.
  • Ölçülere başvuramazlar.
  • İç içe CALCULATE işlevini 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.
  • Skaler değer döndüren bir toplama işlevi içerebilirler . Ö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. Filter işlevini kullanarak Boole filtre ifadesi tarafından tanımlanamayanlar da dahil olmak üzere karmaşık filtre koşulları uygulayabilirsiniz.

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.

İşlev Purpose
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.
ÇAPRAZ FILTRE Filtre yönünü değiştirin (her ikisinden tekine veya tekten her ikisine) veya bir ilişkiyi devre dışı bırakın.

1 ALL 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 hesaplanmış sütun formülünde veya yineleyici işlev içindeki bir ifade değerlendirildiğinde ortaya çıkabilir. 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 tablosu ölçü tanımı, yalnızca mavi rengine sahip ürünler için bir gelir sonucu verir.

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

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
Kategori Satış Tutarı Mavi Gelir
Aksesuarlar 1.272.057,89 USD $165,406,62
Bisikletler 94.620.526,21 ABD doları 8.374.313,88 ABD Doları
Giysi $2,117,613,45 $259,488,37
Bileşenler 11.799.076,66 USD $803,642,10
Toplam 109.809.274,20 USD $9,602,850,97

CALCULATE işlevi, değiştirilmiş bir filtre bağlamında Sales table Sales Amount sütununun toplamını değerlendirir. Product tablosu Color sütununa yeni bir filtre eklenir veya filtre, sütuna zaten uygulanmış olan tüm filtrenin üzerine yazar.

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

Kanal Satış Tutarı Gelir % Toplam Kanal
İnternet 29.358.677,22 ABD doları 26.74%
Reseller 80.450.596,98 ABD doları 73.26%
Toplam 109.809.274,20 USD 100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

DIVIDE işlevi Sales tablosunun Sales Amount sütun değerini (filtre bağlamında) toplayan bir ifadeyi değiştirilmiş filtre bağlamındaki aynı ifadeye böler. Filtre değiştirici işlevi olan REMOVEFILTERS işlevini kullanarak filtre bağlamını değiştiren CALCULATE işlevidir. Satış Siparişi tablosu Kanal sütunundaki filtreleri kaldırır.

Aşağıdaki Müşteri 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üşük olarak sınıflandırılır; aksi takdirde Yüksektir.

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. Bağlam geçişi olarak bilinir. ALLEXCEPT işlevi, CustomerKey sütunu dışındaki tüm Customer tablosu sütunlarından filtreleri kaldırır.

Filtre bağlamı
Satır bağlamı
CALCULATETABLE işlevi
Filtre işlevleri