HESAPLA

İfadeyi, değiştirilen filtre bağlamında değerlendirir.

Not

Ayrıca CALCULATETABLE işlevi vardır. Tablo nesnesi döndüren bir ifadeye uygulanan filtre bağlamını değiştirmesi dışında, tam olarak aynı işlevselliği gerçekleştirir.

Söz dizimi

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çü ile aynıdır.

Filtreler şu şekilde olabilir:

  • Boole filtresi 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 TRUE 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 filtresi ifadeleri

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

  • Tek bir tablodan sütunlara başvurabilir.
  • Ölçüye başvuramazlar.
  • İç içe yerleştirilmiş CALCULATE işlevini kullanamazlar.

Power BI Desktop 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çirilmedikleri sürece tabloyu tarayan 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 yönelik başvuru olabilir, ancak genellikle tablo nesnesi döndüren bir işlevdir. Boole filtresi ifadesi tarafından tanımlanamayanlar dahil olmak üzere karmaşık filtre koşullarına 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ını değiştirirken size ek denetim sağlar.

İşlev Amaç
REMOVEFILTERS Tüm filtreleri veya tablodaki bir veya daha fazla sütunda yer alan filtreleri ya da tek bir tablonun tüm sütunlarından kaldırır.
ALL1, ALLEXCEPT, ALLNOBLANKROW Bir veya daha fazla sütunda yer alan filtreleri veya tek bir tablonun tüm sütunlarından kaldırır.
KEEPFILTERS Aynı sütunlarda mevcut filtreleri kaldırmadan filtre ekler.
USERELATIONSHIP Etkin ilişkinin otomatik olarak devre dışı kalacağı durumdaki ilişkili sütunlar arasındaki etkin olmayan ilişkiyle etkileşim kurar.
CROSSFILTER Filtre yönünü (iki yönden tek yöne veya tek yönden iki yöne) değiştirir ya da ilişkiyi devre dışı bırakır.

1 ALL işlevi ve değişkenleri tablo nesneleri döndüren filtre değiştiricileri ve işlevler gibi davranır. REMOVEFILTERS işlevi aracınız tarafından destekleniyorsa bunu, filtreleri kaldırmak için kullanmanız daha iyidir.

Döndürülen değer

İfadenin sonucu olan değer.

Açıklamalar

  • Filtre ifadeleri sağlandığında, CALCULATE işlevi filtre bağlamını ifadeyi değerlendirecek şekilde değiştirir. Her filtre ifadesi için, filtre ifadesi KEEPFILTERS işlevine sarmalanmadığında iki olası standart çıkış vardır:

    • Sütunlar (veya tablolar) filtre bağlamında değilse yeni filtreler ifadeyi değerlendirecek şekilde filtre bağlamına eklenir.
    • Sütunlar (veya tablolar) zaten filtre bağlamındaysa mevcut filtreler, CALCULATE ifadesini değerlendirecek şekilde yeni filtrelerin üzerine yazılır.
  • Filtresiz kullanılan CALCULATE işlevi belirli bir gereksinim üretir. Satır bağlamını filtre bağlamına geçirir. Model verilerini özetleyen bir ifadenin (model ölçüsü değil) satır bağlamında değerlendirilmesi gereken durumlarda buna ihtiyaç duyulur. Bu senaryo hesaplanmış sütun formülünde veya yineleyici işlev içindeki bir ifade değerlendirildiğinde ortaya çıkabilir. Model ölçüsü satır bağlamında kullanıldığında, bağlam geçişinin otomatik olacağını unutmayın.

  • Hesaplanmış sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında, bu işlevin DirectQuery modunda kullanılması desteklenmez.

Örnekler

Aşağıdaki Satış tablosu ölçü tanımı, yalnızca mavi renkli ürünler için bir gelir sonucu üretir.

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 ABD doları 165.406,62 ABD doları
Bisikletler 94.620.526,21 ABD doları 8\.374.313,88 ABD doları
Clothing 2\.117.613,45 ABD doları 259.488,37 ABD doları
Bileşenler 11.799.076,66 ABD doları 803.642,10 ABD doları
Toplam 109.809.274,20 ABD doları 9.602.850,97 ABD doları

CALCULATE işlevi Sales tablosunun Sales Amount sütununun toplamını, değiştirilmiş filtre bağlamında değerlendirir. Ürün tablosunun Color sütununa yeni bir filtre eklenir veya filtre, sütuna zaten uygulanmış olan herhangi bir filtrenin üzerine yazılır.

Aşağıdaki Sales tablosu ölçü tanımı, tüm satış kanalları için satış üzerinden satış oranını üretir.

Kanal Satış Tutarı Gelir % Toplam Kanal
İnternet 29.358.677,22 ABD doları %26,74
Kurumsal Bayi 80.450.596,98 ABD doları %73,26
Toplam 109.809.274,20 ABD doları %100,00
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

DIVIDE işlevi Sales tablosu Sales Amount sütun değerini toplayan bir ifadeyi (filtre bağlamında), 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. Sales Order tablosu Channel sütunundaki filtreleri kaldırır.

Aşağıdaki Customer tablosu hesaplanmış sütun tanımı, müşterileri bağlılığa göre sınıflandırır. Bu çok basit bir senaryodur: Müşteri tarafından üretilen gelir 2.500 ABD dolarından azsa Low, fazlaysa High olarak sınıflandırılırlar:

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

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

Ayrıca bkz.

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