Power BI’da Hesaplama Grupları Oluşturmak

Power BI raporlarında fazlasıyla ölçü olur, çoğu zaman yüzlerce. Veri modelinde yapılan değişikliklerde, tüm bu ölçülerde de güncelleme yapılması gerekebiliyor. Ölçülere boyut kazandırabilseydik, ölçü sayısını da azaltabilirdik. Gerçekten var mı ki böyle bir özellik? Evet var! Adı da Hesaplama Grupları! Power BI geliştiricileri tarafından en çok talep edilen özelliklerden biri oldu 2023 sonlarında aramıza katılana kadar.

Hesaplama gruplarının çözüm ürettiği konu aslında bu denli basit ama çok etkili. Bunu bir örnek yardımıyla açıklayalım. DAX’ta en popüler zaman analiz fonksiyonları arasında to date fonksiyonları geliyor şüphesiz. Her ölçü için ayrı time intelligcene ölçüleri oluşturduğunuzda geniş bir ölçü arşiviniz olur, bakımı zorlaşır, kullanıcı grubu için de pratik değildir. Düşünsenize , Satış tutarları, adetler, kar vb. hesaplayan ölçüleriniz var. Her ölçü için  Year To Date (YTD), Quarter To Date (QTD), Month To Date (MTD), Year Over YTD, Quarter Over QTD, Month Over MTD, Year Over Year, Quarter Over Quarter, Month Over Month, her biri için sapma% ve dahasını ölçü olarak ekliyorsunuz. Bir de  Role-playing-dimensions ölçüleri eklenince, ölçü sayısı katlanarak artıyor. Yani ölçülerinizde kullanılan tarihler de, kullanıcıya göre değişebiliyor ki bu daha da fazla ölçü demek. Üstel olarak artan ölçü nüfusu, bir süre sonra içinden çıkılmaz bir hal alabiliyor. 

Gelin hesaplama gruplarına biraz daha yakından bakalım ve Time Intelligence (zaman zekası) örneğiyle açıklayalım. Hesaplama grubumuzu ekledikten sonra oluşacak olan hesaplama öğeleri seçeneğine sağ tıklayarak yeni hesaplama öğesi ekleyebiliriz. Aşağıda formüllerini veriyor olduğumuz hesaplama öğelerini ekleyelim. Contoso Power BI dosyasını buradan indirebilirsiniz. Time Intelligence (zaman zekası) fonksiyonları kullandığımız için calendar tablosunu, tarih tablosu (calendar > sağ tık-tarih tablosu olarak işaretle) olarak işaretlemeyi lütfen atlamayın.

Seçili Ölçü = SELECTEDMEASURE() 

SELECTEDMEASURE(), hesaplama grubunda aktif olan ölçüyü getirir. Örneğin, Contoso örneğinde “Satış Döviz Tutarı” gibi bir ölçü seçildiğinde, bu fonksiyon devreye girerek hangi ölçünün kullanıldığını tanımlar ve buna göre hesaplama yapar.

Seçili Ölçü Önceki Yıl = 

CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Calendar'[DateKey])
)
YTD = // Yılın başından bugüne (ya da filtre varsa, filtrelenen son tarihe) kadar kümülatif toplam

VAR _YTD =
    CALCULATE(
        SELECTEDMEASURE(),
        DATESYTD('Calendar'[DateKey])
    )

RETURN _YTD
YTD Önceki Yıl = 

CALCULATE(
    SELECTEDMEASURE(),
    SAMEPERIODLASTYEAR('Calendar'[DateKey]),
    'Hesaplama grubu'[Hesaplama grubu sütunu] = "YTD"
)
YOYTD = 

VAR _BYHes = // Bu yıl hesaplaması    
CALCULATE(
    SELECTEDMEASURE(),
    'Hesaplama grubu'[Hesaplama grubu sütunu] = "Seçili Ölçü" 
)
VAR _GYHes = //Geçen yıl hesaplaması
CALCULATE(
    SELECTEDMEASURE(),
    'Hesaplama grubu'[Hesaplama grubu sütunu] = "Seçili Ölçü Önceki Yıl"
)
RETURN _BYHes - _GYHes
YOYTD % Değişim = 
VAR _YOYTD = 
CALCULATE(
    SELECTEDMEASURE(),
    'Hesaplama grubu'[Hesaplama grubu sütunu] = "YOYTD"
)
VAR _YTDGY = //YTD Geçen Yıl
CALCULATE(
    SELECTEDMEASURE(),
    'Hesaplama grubu'[Hesaplama grubu sütunu] = "YTD Önceki Yıl"
)
VAR _Sonuc = DIVIDE(_YOYTD,_YTDGY)
RETURN 
IF(
    _YOYTD <>  0 || _YTDGY <> 0,
    FORMAT(_Sonuc, "0.00%")
)

DAX’ta bir ölçü yazarken, daha önce tanımlanmış başka bir ölçü adını [içerisinde] yazarak çağırabiliyoruz Ölçülerin aksine, hesaplama öğesine direkt olarak referans veremeyiz. Formüllerini verdiğimiz son hesaplama öğesinde olduğu gibi, örneğin YTD Geçen Yıl hesaplama öğesine referans vermek için CALCULATE() fonksiyonunun içerisinde belirtmemiz gerekiyor.

Bir tek ölçümüz var o da matrix görselindeki Satış Döviz Tutarı.  YTD tablosuna sipariş adet ölçünüze mi bakmak istiyorsunuz? Ya da bir maliyet kalemi tutarları? Kar?  Ağ. Ort. Proses Verimliliği? COGS? Materyal kullanım performansı? Stok miktarları? Ağ. Ort. On-time? Ağ. Ort. Lead-Time? ya da hikayenizi anlatmak için başka nasıl bir ölçüye ihtiyacınız varsa. Artık yalnızca Satış Döviz Tutarı ölçüsü yerine, kullanmak istediğiniz yeni ölçüyü yerleştirmek yeterli! 

Bu pratikliğe ek olarak hesaplama grupları kullanarak modeldeki karmaşıklığı azalttık ve performansı arttırdık. Özellikle büyük veri modellerinde bu durum, dizayna bağlı olarak değişmekle beraber, genelde sorgu hızını dramatik bir şekilde artıran önemli bir faktördür.

Hesaplama grubu sütunlarını dilimleyici olarak eklediğimizde, Power BI’da dilimleyiciyle sütun eklemenin güzel bir örneğini de görmüş olduğunu yeri gelmişken belirtelim. Özellikle farklı kullanıcıların farklı hesaplama öğeleriyle çalışmayı tercih ettiği durumlarda görsel anlatımı kolaylaştırır. Ya da belki de hikayenizi anlatmak için birçok boyuta hızlıca bakarak yalnızca gerekli olanları göstermek istersiniz.

Şimdi sıra sizde: Artık arsenalinizde ölçülere boyut katabilen güçlü bir özellik var. Ölçülerinize boyut katın, farklı açılardan yorumlayın, esnek raporlarınızla hikayenizi anlatın. Bir sonraki yazıda görüşmek üzere..