ALL, ALLSELECTED ve Rasyolar

Power BI 'da bize en çok lazım olan metrik gruplarından biri de rasyolar, yani yüzde hesaplamaları.

Bunun için bize lazım olan fonksiyonlar CALCULATE ile birlikte ALL ve ALLSELECTED.  Daha önce ALL ile örnekler yapmıştık. 1, 2, 3.

ALL fonksiyonuna parametre olarak ya bir sütun(lar) verebiliriz ya da bir tablo. Hangisini verdiysek, ilgili sütunu veya tabloyu filtreleyen  her şeyi kaldırıp  sütunun (veya tablonun) tamamını görmemizi sağlar. Bir nevi "filtreleri kaldır" işlevi görüyor.

Aşağıdaki gibi metriklerimiz var.

Satışlar := SUM ('Satışlar'[Tutar])
Tüm Renklerin Satışları := CALCULATE( [Satışlar] ; ALL ('Ürünler'[Renk]))

Her iki metriği de matrise düşürüyorum.


ALL fonksiyonuna "Renk" sütununu verdiğimizden  Renk ile ilgili hiçbir seçime aldırmıyor  ve tüm renkleri görmeye devam ediyor. Fakat başka sütunlardan gelen filtrelere riayet edecektir.

Örneğin matrise markayı düşürdüğümüzde hesaplayacağı şey her bir markanın tüm renk satışları olacaktır.


ALL fonksiyonuna birden fazla sütun da verebiliriz. Aşağıdaki formül, marka ve renk seçimlerine kayıtsız kalacak, yani tüm markalardaki tüm renklerin satışını hesaplayacak fakat başka bir sütundan gelen filtrelere uymaya devam edecektir.

Tüm Renkler Tüm Markalar := CALCULATE([Satışlar]; ALL('Ürünler'[Renk];'Ürünler'[Marka]))



ALL 'un sonuncu formu bir tablo vermek şeklinde.

Tüm Satışlar := CALCULATE([Satışlar] ; ALL('Satışlar'))


Bu formül, Satışlar tablosunu filtreleyen hiçbir şeyi umursamayacaktır. Bir tablo üzerindeki  tüm filtreleri kaldırmak için  bu formu kullanabiliriz.

Her bir rengin satışının  tüm satışlar içindeki  payını bulmak istersek şöyle bir metrik yazabiliriz.

Rasyo_ALL := DIVIDE([Satışlar] ; [Tüm Satışlar])


En dip toplama göre rasyoyu bulmak için işimize yarıyor. Matrise Yıl bilgisini de düşürüyorum.


ALL('Satışlar') parametresi satışlar tablosunu filtreleyen her şeyi kaldırdığı için, her bir rasyo, toplam satırındakiler de dahil olmak üzere en dip toplama göre oranı gösteriyor.

Her bir yıl için ilgili rengin satış içindeki payını göstermek için elbette formülü Yıl sütunu değişikliğine riayet edecek şekilde VALUES ile farklı yazabiliriz.

Rasyo ALL_VALUES := 
DIVIDE(
    [Satışlar];
    CALCULATE([Satışlar] ; ALL('Satışlar') ; VALUES('Tarih'[Yıl]))
)


Yıl değişmesi durumunda çalışıyor ama ya kullanıcı Yıl haricinde başka bir şeyi seçerse, örneğin rengi seçerse?

Burada devreye ALLSELECTED fonksiyonu giriyor. Kullanıcının rapor ekranında  seçtiği tüm filtreler üzerinden  rasyo bulmak için ALLSELECTED() fonksiyonunu  parametre vermeden  kullanabiliriz.

Satışlar_ALLSELECTED := CALCULATE([Satışlar] ; ALLSELECTED())

ALL ile yazdığımız [Tüm Satışlar] metriği ile birlikte matrise düşürüyorum.


Herhangi bir filtre seçili değilken her iki metrik de aynı rakamı gösterse de dilimleyiciden seçim yapmaya başladığımızda aradaki fark ortaya çıkacaktır.

ALLSELECTED versiyonlu formül,  kullanıcın yaptığı seçimlerin tamamını dikkate alıyor , ALL versiyonlu olan ise seçimleri hiç umursayıp en dip toplamı alıyor.

Yeni rasyomuzu yazabiliriz.

Rasyo_ALLSELECTED := DIVIDE([Satışlar] ; [Satışlar_ALLSELECTED])


Özetlemek gerekirse, ALL ile tüm en dip rasyoları bulabiliriz, ALLSELECTED ile de görsel -yani kullanıcı neleri seçtiyse- rasyoları bulabiliriz.

ALLSELECTED'in parametre verilmemiş hali bu işlevi görüyor. Aynen ALL fonksiyonunda olduğu gibi ALLSELECTED fonksiyonuna da sütun veya tablo verebiliriz. Fakat bu durumda işlevi biraz farklılaşıyor, bu da başka bir yazının konusu.

Yazıdaki modeli indirebilirsiniz.

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

Yaklaşan Power BI Eğitimleri

Uçtan Uca Power BI,  17-18 Aralık
DAX ve Veri Modelleme, 24-25 Aralık