Toplam Satırı Toplamı Göstermiyor

Veri modeline giriş yazısında, Power BI  hesaplama yaparken her bir hücreyi ayrı ayrı ilgili context altında hesaplar, buna Total (Toplam) satırı da dahil demiştim. Total satırı toplam satırı demek değildir, bir özet satırıdır. Aynen diğer hücrelerde olduğu gibi, total satırının da her bir hücresi, gördüğü context üzerinden hesaplanır.

Contoso modeli üzerinde aşağıdaki gibi metriklerimiz var.

 Satışlar := SUM ('Satışlar'[Tutar] ) 
 Satış Yapılan Gün Sayısı := DISTINCTCOUNT ('Satışlar'[Fatura Tarihi] )
 Günlük Satışlar := DIVIDE ( [Satışlar] ; [Satış Yapılan Gün Sayısı] )

Tüm metrikleri aşağıdaki gibi bir matrise düşürelim:

Her bir kategorinin satıldığı gün sayısı farklı.  Bisikletler 2004 yılında 182 farklı günde satılmış. 2004 satırına yani Total satırına baktığımızda, 2004 yılında 213 farklı günde satış yapıldığını görüyoruz.

Yukarıdaki cümleye geri dönüyorum: Total satırının her bir hücresi, aynen diğer hücreler gibi gördüğü context altında hesaplanır.

2004  Total satırı için [Satış Yapılan Gün Sayısı] metriğinin gördüğü context, 2004 yılına ait fatura satırlarıdır ve bu satırlardaki  tekil fatura tarihini  sayıyor. Aynı gün hem aksesuar, hem bisiklet hem de elbiseler kategorilerinden satış yapıldıysa bunu 1 gün olarak sayar.

Aynı metriğin 2004-Bisikletler satırı için gördüğü context, 2004 yılında kategorisi bisiklet olan ürünlerin olduğu fatura satırlarıdır. Bu satırlardaki tekil fatura tarihini sayar.

Bisikletlerin satışlarını, bisiklet satılan gün sayısına böldüğümüzde 50.342 çıkıyor.

2004 yılının satışlarını, 2004 yılında satış yapılan gün sayısına böldüğümüzde 45.873 çıkıyor.

Yani formüller doğru çalışıyor!

Fakat şöyle bir durum ortaya çıkıyor: 2004 yılının günlük satışları, nasıl oluyor da tek bir kategorinin günlük satışından daha az!

Aslında cevap belli, her bir kategorinin satıldığı gün sayısı farklı, 2004 yılı için satış yapılan gün sayısı her bir kategorinin satıldığı gün sayısının toplamı değil.

Fakat Total satırı için görmek istediğimiz rakam, tüm kategorilerin günlük satışlarının toplamı. Bu durumda [Günlük Satışlar] metriğini biraz modifiye etmemiz lazım.

Satır bazındaki rakamlar doğru, fakat toplam satırı istediğimiz gibi değil. Dolayısıyla metriği modifiye ederken kategori satırında mıyız yoksa toplam satırında mıyız anlamamız lazım.

Bunun için şöyle bir kalıp kullanabiliriz:

Günlük Satışlar Modifiye :=
IF (
    HASONEVALUE ( 'Ürünler'[Kategori] );
    "Satırdaysak ne yapacağız";
    "Satırda değilsek, yani toplam satırındaysak ne yapacağız" )
)
 HASONEVALUE ('Ürünler'[Kategori])  True dönerse, yani 1 dönerse toplam satırında olmadığımızı, kategori satırında olduğumuzu anlarız. False dönerse toplam satırındayız demektir.

Kategori satırındaysak [Günlük Satışlar] metriğini döndüreceğiz, değilsek her bir kategori için [Günlük Satışlar] metriğini toplamamız lazım.

Günlük Satışlar Modifiye := 
IF (
    HASONEVALUE ( 'Ürünler'[Kategori] );
    [Günlük Satışlar];
    SUMX ( VALUES ( 'Ürünler'[Kategori] ); [Günlük Satışlar] )
)

Toplam satırındaysak  VALUES ( 'Ürünler'[Kategori] )  bize  kategorilerin tekil listesini içeren tabloyu döndürür . SUMX  bir iterator. Yani bir tablo verdiğinizde,  tabloda gördüğü her bir satır için belirttiğiniz işlemi yapar, en sonunda her bir satır için bulduğu rakamları toplar.

Dolayısıyla  SUMX ( VALUES ( 'Ürünler'[Kategori] ); [Günlük Satışlar] )  kodu bize, gördüğü her bir kategori için [Günlük Satışlar] 'ı hesaplar, gördüğü tüm kategorileri bitirdiğinde bulduğu rakamları toplar.

Toplam satırı, artık istediğimiz toplamı gösteriyor.

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, 24-25 Eylül
DAX ve Veri Modelleme, 1-2 Ekim