Bir boyut değerini -misal kategori satışlarını- diğerleriyle karşılaştırırken genelde istenilen şey, ilgili boyut değeri hariç diğer tüm boyut değerlerine göre karşılaştırmak.
Neyi kastediyorum?
Aşağıdaki gibi kategori satışlarını gösteren bir matrisimiz var ve her bir satıra, satırdaki kategorinin satışının, diğer tüm seçili kategori satışlarının ortalamasına oranını getirmek istiyoruz! Misal “Bilgisayarlar” kategorisi için bulmak istediğimiz oran, Bilgisayarlar hariç diğer tüm seçili kategorilerin satış ortalamasına oranı!
Yani 2.819.093 / ((10.449.200-2.819.093)/3)
Soruyu parçalara bölelim:
- Matrisin satırındaki kategorinin hangi kategori olduğunu bulmamız lazım.
- Seçili kategorilerin listesini, satırdaki kategoriyi içermeyecek şekilde bulmamız lazım.
- Bu listenin ortalama satışlarını bulmamız lazım.
- Satırdaki kategorinin satışlarını bu ortalamaya bölmemiz lazım.
Matristeki satırda hangi kategorinin gözüktüğünü SELECTEDVALUE fonksiyonu ile bulabiliriz.
Satırdaki Kategori = SELECTEDVALUE('Kategoriler'[Kategori])
Seçili kategorilerin listesini ALLSELECTED ile bulmak mümkün.
ALLSELECTED ( Kategoriler[Kategori] )
Bu listeyi görselleştirmek için CONCATENATEX parantezine alabiliriz!
Seçili Kategorilerin Listesi =
CONCATENATEX (
ALLSELECTED ( Kategoriler[Kategori] ),
'Kategoriler'[Kategori],
"-"
)
Satırdaki kategoriyi içermeyecek şekilde bu listeyi de FILTER veya CALCULATETABLE ile modifiye edebiliriz!
Seçili Kategorilerin Listesi-2 =
CONCATENATEX (
FILTER(
ALLSELECTED ( Kategoriler[Kategori] ),
'Kategoriler'[Kategori] <> SELECTEDVALUE( 'Kategoriler'[Kategori])
),
'Kategoriler'[Kategori],
"-"
)
Bu kategorilerin ortalama satışlarını bulalım!
Seçili Kategorilerin Ortalama Satışları =
CALCULATE(
AVERAGEX( 'Kategoriler', [Satışlar] ),
FILTER(
ALLSELECTED ( Kategoriler[Kategori] ),
'Kategoriler'[Kategori] <> SELECTEDVALUE( 'Kategoriler'[Kategori])
)
)
- Bu formülde “context transition” var. Row context altında -ki bunu yaratan AVERAGEX- bir metrik çağırdık!
Bölelim!
Oran = DIVIDE( [Satışlar] , [Seçili Kategorilerin Ortalama Satışları] )
Total satırında bunu göstermek çok mantıklı değil! O zaman HASONEVALUE ile total satırında mıyız / değil miyiz kontrol edip IF parantezine alabiliriz.
Oran =
IF( HASONEVALUE('Kategoriler'[Kategori] ),
DIVIDE( [Satışlar] , [Seçili Kategorilerin Ortalama Satışları] ),
BLANK()
)
- Aslında “false” durumu için BLANK() yazmasak da olur. Varsayılan değer zaten BLANK!
Yazıdaki örneği -siteye üyeyseniz- indirebilirsiniz.
Sadece üyeler görebilir. Hızlı üyelik için sosyal medya hesabınızla giriş yapabilirsiniz!