Değişken Kullanımı, VAR

Power BI 'da kompleks DAX formüllerini yazmayı kolaylaştıran değişken (variables) yapısı var.

Önceki yazıda bir giriş örneğini  yaptığımız değişken kullanımına farklı örnekler verelim.

Aşağıdaki gibi metriklerimiz var:

Satışlar := SUM ('Satışlar'[Tutar])
Müşteri Sayısı := DISTINCTCOUNT ('Satışlar'[Müşteri ID])
Ortalama Müşteri Satışları := AVERAGEX ('Müşteriler' ; [Satışlar])
 Bu ortalamanın üzerinde  satış yapılan müşteri  sayısını  değişken kullanarak bulalım.

İyi Müşteri Sayısı := 
VAR OrtalamaMusteriSatisi = [Ortalama Müşteri Satışları]
RETURN
    COUNTROWS (
        FILTER ('Müşteriler';
            [Ortalama Müşteri Satışları] > OrtalamaMusteriSatisi
        )
    )

Değişken isimleri arada boşluk veya Türkçe karakterleri desteklemiyor.

Burada bilinmesi gereken nokta  değişkenin değerinin tanımlandığı yerdeki context'e göre hesaplanmasıdır . Kullanıldığı yerde  tekrar hesaplama yapılmaz .

Değişkenin tanımlandığı yer  VAR ile başlayan ikinci satır. Matristeki  context şu an neyse, değişkenin değeri bu context'e göre bir kez hesaplanıyor. Kullanıldığı yer ise FILTER'ın içindeki altıncı satır.

FILTER, müşteriler tablosunu iterate ederken, her bir müşterinin satışını değişkenin daha önceden hesaplanmış değeriyle karşılaştırıyor.

Aynı hesaplamayı CALCULATE ile de yapabiliriz elbette.

İyi Müşteri Sayısı CALCULATE := 
COUNTROWS (
    FILTER ('Müşteriler';
        [Satışlar] > CALCULATE ([Ortalama Müşteri Satışları] ; ALL ('Müşteriler'))
    )
)


VAR ile yazılmış kodu yazması da okuması da (debug etmesi de) daha kolay.

Bir başka örnek daha yapalım:  satış frekansını bulalım, yani iki satış arasında geçen ortalama süreyi bulalım. Kurduğunuz cümleye göre farklı şekillerde hesaplanabilir.

Kaç Günde Bir Satış Yapıldı := 
VAR IlkTarih = FIRSTDATE ('Satışlar'[Tarih])
VAR SonTarih = LASTDATE ('Satışlar'[Tarih])
VAR KacFarkliGundeSatisYapildi = DISTINCTCOUNT ('Satışlar'[Tarih])
RETURN
    DIVIDE (SonTarih - IlkTarih ; KacFarkliGundeSatisYapildi; 0)

Değişken yapısı olmadan bu formülü yazmak daha zor olurdu.

FIRSTDATE ve LASTDATE, verdiğimiz tarih tipindeki sütunda gördüğü ilk ve son tarihleri döndüren gayet basit ve kullanışlı iki fonksiyon.

Değişkenlerle yukarıdaki örneklerde olduğu gibi sayısal değerler hesaplanabileceği gibi tablolar da atanabilir!

Kırmızı Ürünlerin Geçen Ayki Satışları := 
VAR KirmiziUrunler = FILTER ( ALL ('Ürünler') ; 'Ürünler'[Renk] = "Kırmızı")
RETURN
    CALCULATE ([Satışlar]; KirmiziUrunler ; DATEADD ('Tarih'[Tarih] ;-1 ; MONTH)
    )

DATEADD -daha sonra göreceğimiz time intelligence grubundaki fonksiyonlardan biri-, bir tarih sütunu verdiğimizde kaç periyod geriye gitmek istiyorsak bunu yapmamızı sağlıyor, periyod olarak gün, ay, çeyrek veya yıl seçebiliriz.

Değişkenler sadece metriklerde değil hesaplanmış sütunlarda da kullanılabilir. Yani DAX formülü yazabildiğimiz her yerde kullanabiliriz.

Yazıdaki modeli indirebilirsiniz.

Sadece kayıtlı üyeler görebilir. Giriş veya Üyelik için login.