Online Uçtan Uca Power BI Eğitimi

Kendi temponuzda Power BI öğrenin ! Her ay canlı Q&A seanslarına katılın !

CALCULATETABLE

DAXDAX 101

Daha önceki CALCULATE yazılarında FILTER, AND ve OR kullanımına ilişkin örnekler yapmıştık. Örnekleri kısaca tekrarlayıp konuyu CALCULATETABLE ‘a bağlayacağım.

Satışlar := SUM ('Satışlar'[Tutar] )

Contoso markalı siyah ürünlerin satışlarını hesaplamak için aşağıdaki gibi boolean tipinde filtrelerle CALCULATE fonksiyonunu kullanmıştık.

Contoso Siyah :=
CALCULATE (
    [Satışlar];
    'Ürünler'[Marka] = "Contoso";
    'Ürünler'[Renk] = "Siyah"
)

CALCULATE’in filtrelerinin boolean tipi olması durumunda formülün internal açılımının FILTER ( ALL …)  şeklinde olması önemli bir detay, bu yüzden tekrarlayacağım.

Contoso Siyah Açılım :=
CALCULATE (
    [Satışlar];
    FILTER (
        ALL ( 'Ürünler'[Marka]; 'Ürünler'[Renk] );
        AND ( 'Ürünler'[Marka] = "Contoso"; 'Ürünler'[Renk] = "Siyah" )
    )
)

Yani “Marka” ve “Renk” sütunları üzerindeki tüm filtreleri kaldır, Marka için = Contoso, Renk için de =Siyah context’ini yarat.

Aşağıdaki formül ise mevcut filter context’e uyarak çalışacaktır.

Contoso Siyah FILTER :=
CALCULATE (
    [Satışlar];
    FILTER (
        'Ürünler';
        AND ( 'Ürünler'[Marka] = "Contoso"; 'Ürünler'[Renk] = "Siyah" )
    )
)
CALCULATETABLE

FILTER ile yazdığımız formülü, tüm ürünler tablosunu görecek şekilde ALL ile revize edelim:

Contoso Siyah FILTER ALL :=
CALCULATE (
    [Satışlar];
    FILTER (
        ALL ( 'Ürünler' );
        AND ( 'Ürünler'[Marka] = "Contoso"; 'Ürünler'[Renk] = "Siyah" )
    )
)

Matrise düşürüyorum hepsini:
“Contoso Siyah” metriği ile son yazdığımız formül aynı sonuçları veriyor gibi gözükse de arada ciddi bir fark var: İlki sadece marka ve renk sütunları üzerindeki filtreleri kaldırıyor, diğeri ise tüm ürünler tablosundaki filtreleri kaldırıyor. Matrise marka ve renk haricinde bir sütun düşürdüğümüzde -örneğin Kategoriler gibi- aradaki fark ortaya çıkacaktır.

CALCULATETABLE fonksiyonu, CALCULATE ‘in eşleniğidir. Aradaki tek fark birinin sayısal değer döndürmesi, diğerinin ise bir tablo döndürmesidir.

CALCULATE ile yazdığımız “Contoso Siyah” metriğini bir de CALCULATETABLE ile yazalım:

CALCULATETABLE Versiyonu :=
CALCULATE (
    [Satışlar] ;
    FILTER(
        CALCULATETABLE (
            'Ürünler' ;
            ALL( 'Ürünler'[Marka] ) ;
            ALL( 'Ürünler'[Renk] ) 
        );
        AND(
            'Ürünler'[Marka] = "Contoso" ;
            'Ürünler'[Renk] = "Siyah"
        )
    )
)

Matrise düşürelim:

CALCULATETABLE  ‘ın bu kullanım şekli, tablodaki istediğimiz sütunlar üzerindeki filtreleri kaldırıp – ALL(‘Ürünler'[Marka] gibi –  diğer filtrelerin olduğu gibi kalmasını ya da yeni condition’lar eklememizi sağlıyor.

Bilgisayar kategorisindeki kırmızı ürünlerin olduğu tabloyu CALCULATETABLE ile bulalım: Modelling tabından New Table diyerek aşağıdaki formülü yazıyorum.

Bilgisayar Kategorisindeki Kırmızı Ürünler CALCULATETABLE :=
CALCULATETABLE (
    'Ürünler';
    'Ürünler'[Renk] = "Kırmızı";
    'Ürün Kategorileri'[Kategori] = "Bilgisayarlar"
)

Aynen CALCULATE ‘te olduğu gibi, filtreler için birden fazla tablodan sütun çağırabildiğimize dikkatinizi çekerim!

Böylelikle orijinal tablodan yeni bir tablo elde etmiş olduk.

Basit bir örnek olacak ama SUMMARIZE fonksiyonuna da bir giriş örneği yapmış olalım: Ürünler tablosundaki sütunların tamamını değil de sadece bazılarını alalım.

Bilgisayar Kategorisindeki Kırmızı Ürünler SUMMARIZE CALCULATETABLE =
CALCULATETABLE (
    SUMMARIZE ( 'Ürünler'; 
                'Ürünler'[Marka]; 'Ürünler'[Renk]; 'Ürünler'[Ürün Kodu]
    );
    'Ürünler'[Renk] = "Kırmızı";
    'Ürün Kategorileri'[Kategori] = "Bilgisayarlar"
)

CALCULATETABLE, bizden parametre olarak bir tablo isteyen diğer tüm fonksiyonlarla kullanılabilir.

Örneğin 2008 yılı şatışlarını aşağıdaki gibi bir formülle bulabiliriz.

Satışlar 2008 CALCULATETABLE :=
SUMX( 
     CALCULATETABLE ( 'Satışlar'; Tarih[Yıl] = 2008 ); 
     'Satışlar'[Tutar]
)

Son olarak, RELATEDTABLE ile CALCULATETABLE bir row context altında kullanılması durumunda aynı görevi görüyor. Ürünlerin kaç kez satıldığını, ürünler tablosuna bir hesaplanmış sütun olarak her iki fonksiyonla da getirebiliriz.

Kaç Kez Satıldı CALCULATETABLE :=
COUNTROWS ( CALCULATETABLE ( 'Satışlar' ) )

Kaç Kez Satıldı RELATEDTABLE :=
COUNTROWS ( RELATEDTABLE ( 'Satışlar' ) )

Yazıdaki modeli indirebilirsiniz.

Sadece üyeler görebilir. Hızlı üyelik için sosyal medya hesabınızla giriş yapabilirsiniz!

Bloga sosyal medya hesabınızla hızlı üye olmak için ilgili ikonu tıklayabilirsiniz.

PowerBI İstanbul

Microsoft Power BI, Microsoft Fabric, veriyle ilgili Azure servisleri, veri analitiği, iş zekası, veri modelleme ve veri görselleştirme üzerine Türkçe bilgi içeriğine katkı sağlamayı amaçlar.

Intellect BI blog sitesidir. Intellect BI & PowerBI İstanbul, Microsoft Data Analytics ve Power BI Partneri 'dir.

Blog Yazılarına Üye Olun

Blog yazıları, eğitim ve meetup duyuruları posta kutunuza gelsin!

8,4K Üye