İngilizce dilinde oku

Aracılığıyla paylaş


CALCULATE

Şunlar için geçerlidir:Hesaplanan sütunHesaplanan tabloMeasureGörsel hesaplama

Bir ifadeyi değiştirilmiş filter bağlamında değerlendirir.

Not

ayrıca CALCULATETABLE işlevi de vardır. tam olarak aynı işlevi gerçekleştirir tablo nesnesi döndüren bir ifadeye uygulanan bağlam değiştirir.

Sözdizimi

CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

Parametre

Terim Tanım
expression Değerlendirilecek ifade.
filter1, filter2,… (İsteğe bağlı) Boole ifadeleri, filtersorfilter değiştirici işlevlerini tanımlayan tablo ifadelerini or.

first parametresi olarak kullanılan ifade temelde measureile aynıdır.

Filters olabilir:

  • Boole filter ifadeleri
  • Tablo filter ifadeleri
  • Filter değişiklik işlevleri

Birden çok filtersolduğunda, bunlar AND (&&) mantıksal işleçkullanılarak değerlendirilebilir; bu da all koşulların TRUEolması gerektiği anlamına gelir, OR (||) mantıksal işleci tarafından or, yani iki koşul da trueolabilir.

Boole filter ifadeleri

Boole ifadesi filter, TRUEorFALSEolarak 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, tarama or tablo döndüren işlevleri kullanamazlar.
  • skaler valuedö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 filter ifadesi

Tablo ifadesi filter tablo nesnesini filterolarak uygular. Bir model tablosuna başvuru olabilir, ancak büyük olasılıkla tablo nesnesi döndüren bir işlevdir. Boole filter ifadesi tarafından tanımlanamayanlar da dahil olmak üzere karmaşık filter koşulları uygulamak için FILTER işlevini kullanabilirsiniz.

Filter değiştirici işlevleri

Filter değiştirici işlevleri, filterseklemekten daha fazlasını yapmanıza olanak sağlar. filter bağlamı değiştirirken size ek denetim sağlar.

Fonksiyon Amaç
REMOVEFILTERS tablonun bir or daha fazla sütundan orfiltersallfiltersor tek bir tablonun all sütunlarından kaldırın.
ALL 1, ALLEXCEPT, ALLNOBLANKROW Tek bir tablonun all sütunlarından or bir or daha fazla sütundan filters kaldırın.
KEEPFILTERS Aynı sütunlardaki mevcut filters kaldırmadan filter ekleyin.
USERELATIONSHIP related sütunlar arasında etkin olmayan bir ilişki oluşturun; bu durumda etkin ilişki otomatik olarak devre dışı kalır.
CROSSFILTER bir ilişkiyi devre dışı bırakmak orfilter yönünü değiştirin (her ikisinden tekine, or tekten her ikisine).

1ALL işlevi and değişkenleri, tablo nesnelerini döndüren işlevler olarak and her iki filter değiştirici olarak da davranır. REMOVEFILTERS işlevi aracınız tarafından desteklendiğinden Iffilterskaldırmak için kullanmak daha iyidir.

İade value

İfadenin sonucu olan value.

Açıklamalar

  • filter ifadeler sağlandığında, CALCULATE işlevi ifadeyi evaluate için filter bağlamını değiştirir. her filter ifadesi için, filter ifadesi KEEPFILTERS işlevine sarmalandığında iki olası standart sonuç not:

    • If sütunlar (or tablolar) filter bağlamında değilse, ifadeyi evaluate için filter bağlama yeni filters eklenir.
    • Sütunların (or tablolar) zaten filter bağlamında If, var olan filters yeni filtersCALCULATE ifadesini evaluate için üzerine yazılır.
  • olmadan kullanılan işlevi belirli bir gereksinime ulaşır. Satır bağlamı filter bağlama geçirir. Model verilerini özetleyen bir ifadenin (model measurenot) satır bağlamında değerlendirilmesi gerektiğinde gereklidir. Bu senaryo, yineleyici işlevindeki bir ifade değerlendirildiğinde hesaplanan sütun formülünde or gerçekleşebilir. Satır bağlamında model measure kullanıldığında bağlam geçişinin otomatik olduğunu unutmayın.

  • Bu işlev, satır düzeyi güvenlik (RLS) kuralları or hesaplanmış sütunlarda kullanıldığında DirectQuery modunda kullanılmak üzere not desteklenir.

Örnekler

Aşağıdaki Sales tablosu measure tanımı, yalnızca mavi renkli ürünler için bir gelir sonucu verir.

Bu makaledeki örnekler sample Adventure Works DW 2020 Power BI Desktop modeliyle kullanılabilir. Modeli almak için bkz.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

işlevi, değiştirilen bağlamında sales amount sütunu Sales tablosunun değerlendirir. Product tablo Color sütununa yeni bir filter eklenir;or, filter sütuna zaten uygulanmış olan tüm filter üzerine yazılır.

Aşağıdaki Sales tablosu measure tanımı, all 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 value (filter bağlamında) toplayan bir ifadeyi değiştirilmiş bir filter bağlamında aynı ifadeye böler. filter değiştirici işlevi olan REMOVEFILTERS işlevini kullanarak filter bağlamını değiştiren CALCULATE işlevidir. Sales Order tablosundan filters Channel sütunundan 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"
)

Bu örnekte, satır bağlamı filter bağlama dönüştürülür. bağlam geçişi olarak bilinir. ALLEXCEPT işlevi, CustomerKey sütunu exceptallCustomer tablo sütunlarından filters kaldırır.

bağlam
satır bağlamı

CALCULATETABLE işlevi
Filter işlevleri