Online Uçtan Uca Power BI Eğitimi

Kendi temponuzda Power BI öğrenin ! Her ay canlı Q&A seanslarına katılın !

Hesaplanmış Sütun Olarak Kümülatif Toplam Alma

DAX

Power BI ‘da DAX ile kümülatif toplam alma yazısından sonra “Kümülatif toplamları hesaplanmış sütun olarak nasıl yapabiliriz?”  soruları geldi. Önceki yazının devamı olarak eklemek istedim.

Kategori bazında yıllık ve aylık satışları içeren hesaplanmış bir tablo oluşturalım. Bunu da SUMMARIZE ile yapalım, sonraki yazıların konusu olacak gruplama ve tablo oluşturma yazılarına da basit bir giriş olmuş olur böylelikle. Modelling menüsünden ” New Table” diyerek aşağıdali formülü yazıyorum.

Yıl ve Aylara Göre Kategori Satışları =
SUMMARIZE(
    'Satışlar';
    'Kategoriler'[Kategori];
    'Kategoriler'[Kategori ID];
    'Tarih'[Yıl];
    'Tarih'[Ay No];
    "Kategori Satışları"; SUM( 'Satışlar'[Tutar] )
)

SUMMARIZE kabaca tariflemek gerekirse SQL’deki Group By ‘a benziyor. “Satışlar” tablosunu Kategori, Kategori ID, Yıl ve Ay bazında gruplamış (özetlemiş) olduk. Group By sütunu olarak kullanabileceğimiz sütunlar ya ilk parametreye verdiğimiz tablodan olabilir, ya da bu tablonun RELATED tarafında -yani One tarafında- olan tablolardan gelebilir.

kümülatif toplam alma

Hatta bu dönen tabloyu da -satır sayısını azaltmak adına ve gene diğer yazılara ufak bir giriş olması açısından- daraltıyorum. Satış büyüklüğü 130,000 ‘in üzerinde olan Yıl-Ay No-Kategori-Kategori ID kombinasyonları gelsin!

Yıl ve Aylara Göre Kategori Satışları =
FILTER (
    SUMMARIZE (
        'Satışlar';
        'Kategoriler'[Kategori];
        'Kategoriler'[Kategori ID];
        'Tarih'[Yıl];
        'Tarih'[Ay No];
        "Kategori Satışları"; SUM ( 'Satışlar'[Tutar] )
    );
    [Kategori Satışları] > 130000
)

Hatta tabloyu düzgün sıralamak için de hesaplanmış sütun olarak bir Yıl-Ay No sütunu ekleyelim!

Kümülatif hesaplamalarda hep bize bir referans alabileceğimiz indeks -sıralama- sütunu lazım! Eğer amaç Kategori bazında kümülatif bulmaksa “Kategori ID” sütununu, ay bazında kümülatif almaksa “Yıl-Ay” sütununu kullanabiliriz.

Daha önce yazdığım EARLIER fonksiyonu bunun için en uygun fonksiyon. Yazıyı okumanızı öneririm, çünkü doğrudan formülü yazacağım!

Aylara Göre Kümülatif =
CALCULATE(
    SUM( 'Kategori Satışları'[Kategori Satışları] );
    FILTER(
        'Kategori Satışları';
        'Kategori Satışları'[Yıl-Ay No] <= EARLIER( 'Kategori Satışları'[Yıl-Ay No] )
    )
)

** “Yıl-Ay No” text tipinde bir sütun olmasına rağmen >=, <= gibi operatörlerle A-Z veya Z-A mantığına göre çalışıyor!

** Dikkatli okurun gözünden kaçmayacaktır, tablonun orijinal adını formül çok geniş alana yayılıp zor okunmasın diye “Kategori Satışları” diye değiştirip kısalttım. Blog yazılarında formülde refere edeceğim tabloların ismini çok uzun tutmamak lazımmış. Bu da bana ders olsun! Her neyse.

EARLIER olmaksızın değişken kullanarak da benzer bir kümülatif formülü yazabiliriz.

Aylara Göre Kümülatif_VAR =
Var _SatirdakiKategorininYilAyi = 'Kategori Satışları'[Yıl-Ay No]
-- Bu yukarıdaki '....'[Yıl-Ay No], 
-- hesaplanmış sütunun iterate ettiği satırın [Yıl-Ay No] değeri!
-- Satırdaki değer neyse bir kez bulunacak ve değeri değişkene atanacak!
RETURN
CALCULATE( SUM( 'Kategori Satışları'[Kategori Satışları] ) ;
    FILTER( 'Kategori Satışları' ;
        'Kategori Satışları'[Yıl-Ay No] <= _SatirdakiKategorininYilAyi
    )
)
-- FILTER 'ın altındaki ...[Yıl-AY No] ise, 
-- FILTER 'in iterate ettiği satırın [Yıl-Ay No] değeri!
-- Bu değeri daha önce hesaplanan değişkenle karşılaştıracak!

Bu kümülatifin yıl değişiminde tekrar sıfırdan başlaması için, yani daha düzgün Türkçe’yle yıllık kümülatife dönüştürmek için formülü VALUES ile veya ALLEXCEPT ile modifiye etmek mümkün.

Yıllık Kümülatif =
CALCULATE(
    SUM( 'Kategori Satışları'[Kategori Satışları] );
    FILTER(
        ALLEXCEPT( 'Kategori Satışları'; 'Kategori Satışları'[Yıl] );
        'Kategori Satışları'[Yıl-Ay No] <= EARLIER( 'Kategori Satışları'[Yıl-Ay No] )
    )
)

** Yukarıdaki formül FILTER olmadan da çalışır! Yazıdaki formüllerin mantığını bozmamak için eklemiyorum ama modelde görebilirsiniz.

Yazıdaki modeli -bloga üyeyseniz- indirebilirsiniz.

Sadece üyeler görebilir. Hızlı üyelik için sosyal medya hesabınızla giriş yapabilirsiniz!

Bloga sosyal medya hesabınızla hızlı üye olmak için ilgili ikonu tıklayabilirsiniz.

“Hesaplanmış Sütun Olarak Kümülatif Toplam Alma” üzerine 7 yorum

    • Meter_Date sütununu tarih saat olarak değil, tarih olarak tutun. Saat bilgisini ayrı bir sütunda tutuyorsunuz zaten. Böylece tarih tablosuyla arada ilişki kurmanız mümkün olur. Aynı gün içerisindeki maksimum değerleri MAX ile bulabilirsiniz. İki tarih arası hesaplamalar içinse DATESINPERIOD, DATEADD ve DATESBETWEEN kullanınabilirsiniz. Hesaplamaları değişkenlere atayıp istediğiniz hesaplamayı yapbilirsiniz. İlgili fonksiyonları blogta artırsanız bulursunuz. Değişkenler içinse “değişken kullanımı” ve “varyas analizi” yazılarına göz atabilirsiniz.

  1. Merhaba bir tabloda aylık hedefler tutulmakta, başka bir tablodan veriler ile matris tablo hazırladım, ay olarak 01.07,02.07 vb şekilde satırlarda tarih bulunmakta, örneğin hedef 10.000 olsun, 01.07 de 500, 02.07 de 250 … şeklinde değerler var, yeni kalan hedef adında yeni bir sütun yaparak 01.07 nin karşısına 9500 02.07 nin karşısına 9250 … şeklinde ilerletebileceğim bir sorgu / kod var mıdır? araştırıyorum ancak herhangi bir yazı bulamadım. Teşekkür ederim…

Yorum yapın

PowerBI İstanbul

Microsoft Power BI, Microsoft Fabric, veriyle ilgili Azure servisleri, veri analitiği, iş zekası, veri modelleme ve veri görselleştirme üzerine Türkçe bilgi içeriğine katkı sağlamayı amaçlar.

Intellect BI blog sitesidir. Intellect BI & PowerBI İstanbul, Microsoft Data Analytics ve Power BI Partneri 'dir.

Blog Yazılarına Üye Olun

Blog yazıları, eğitim ve meetup duyuruları posta kutunuza gelsin!

8,4K Üye