Power BI'da Kümülatif Toplam Hesaplama: Adım Adım Rehber

Bu yazıda, Power BI'da kümülatif toplam hesaplamanın adımlarını ele alıyoruz. Kümülatif toplam, performans takibi, hedef kontrolü, karar destek ve dönemsel karşılaştırmalar gibi analizlerde kritik bir rol oynar. Yazımızda, tarih tablosu oluşturma, verileri aktarma, tablolar arası ilişki kurma ve DAX formüllerini kullanarak kümülatif toplam hesaplamanın nasıl yapılacağını örneklerle açıklıyoruz. Bu rehber, Power BI'da analiz süreçlerinizi daha etkili hale getirmek için adım adım detayları içermektedir.

Power BI, iş zekası ve veri görselleştirme araçları arasında popüler bir platformdur ve analiz süreçlerini optimize etmek için gelişmiş özellikler sunar. Bu yazımızda, Power BI'da kümülatif toplam hesaplamanın nasıl yapıldığını adım adım açıklıyoruz.

Power BI'da Kümülatif Toplam Hangi Durumlarda Kullanılır?
Kümülatif toplam, belirli bir zaman aralığındaki verilerin sürekli olarak toplanması anlamına gelir. Power BI kullanıcıları için kümülatif toplam:

  • Performans İzleme: Aylık veya yıllık bazda satış trendleri gibi önemli ölçütleri gözlemlemeyi sağlar.
  • Hedef Takibi: Belirli bir hedefe ulaşma sürecini analiz ederek, gerçekleşen performansın hedefe ne kadar yaklaştığını gösterir.
  • Karar Destek: Geçmiş trendler üzerinden gelecekteki performansı tahmin ederek karar süreçlerine katkıda bulunur.
  • Dönemsel Karşılaştırmalar: Yıllık satışları karşılaştırarak büyüme oranlarını belirlemeye yardımcı olur.

Power BI'da Kümülatif Toplam Oluşturmanın Temel Aşamaları
Kümülatif toplam hesaplama adımları karmaşık olabilir, ancak doğru bir yapılandırmayla oldukça etkili hale gelir. İşte Power BI'da kümülatif toplam oluşturmanın temel adımları:

a. Tarih Tablosu Oluşturma
Power BI’da kümülatif hesaplamalar için bir tarih tablosu oluşturmak gereklidir. Bu tablo, zaman aralıklarıyla analiz yapma olanağı sağlar ve DAX (Data Analysis Expressions) formülleri ile kolayca kullanılabilir. İşte örnek bir tarih tablosu DAX formülü:

Tarih = 
ADDCOLUMNS(
    CALENDAR(DATE(2020, 1, 1), DATE(2024, 12, 31)),
    "DateKey", FORMAT([Date], "YYYYMMDD"),
    "Yıl", YEAR([Date]),
    "Ay", INT(FORMAT([Date], "MM")),
    "KısaAyAdı", FORMAT([Date], "mmm"),
    "Hafta", WEEKNUM([Date])
)

Bu formül, 'Tarih' tablosuna farklı zaman birimlerini eklerken 'CALENDAR' ve 'ADDCOLUMNS' fonksiyonlarını kullanarak bir tarih tablosu oluşturur. Bu, Power BI raporunuzda zaman serisi verilerini analiz ederken farklı zaman birimlerine göre gruplama, filtreleme ve analiz yapmanıza olanak tanır. Elbette bu oluşturulan tablo ihtiyaçlara göre şekillendirilebilir.

b. Verilerin Power BI'a Aktarılması
Verilerin Power BI’a eksiksiz aktarımı sağlanmalı ve aktarma sırasında gereken düzenlemeler yapılmalıdır.

  • Örnek üzerinde gidersek elimde excel üzerinden Power BI’a aktardığım böyle bir veri var. Bu veri modelinde Marka, Model ve No sütunları ile üç kırılım mevcuttur.

Bu veri modelinde Marka , Model  ve No sütunları ile üç kırılımı vardır. 

c. Tablolar Arası İlişki Kurma
İlişki Ekleme: Veri modeli oluşturulduktan sonra, farklı tablolar arasında ilişkiler oluşturmanız gerekmektedir. Bu genellikle ilişkili sütunları kullanarak yapılır. Örneğin, Tarih tablosunda bulunan "Date" sütunu, başka bir tablodaki "Tarih" sütunu ile ilişkilendirilebilir. Burada dikkat edilmesi gereken husus ise veri tablonuzdaki TARİH sütununun içeriğidir örneğin sizin verilerinizdeki Tarih bilgisi saatli bir şekilde geliyorsa ve oluşturulan Tarih tablosundaki DATE sütunu saatsiz bir şekilde ele alındıysa bu ilişki düzgün çalışmayacaktır.

İlişki Türlerini Belirleme: İlişkiler oluşturulduktan sonra, ilişki türlerini belirlemeniz gerekecektir. Power BI'da üç temel ilişki türü bulunur: "Many-to-One" (Çoktan Bire), "One-to-One" (Birden Bire), ve "Many-to-Many" (Çoktan Çoka). İlişki türleri, verilerin nasıl ilişkilendirileceğini ve hangi türde birleştirmenin yapılacağını belirler.

İlişkileri Doğrulama ve Düzenleme: Oluşturduğunuz ilişkileri doğrulayın ve gerekirse düzenleyin. İlişkilerin doğru olduğundan ve veri modelinizin beklendiği gibi çalıştığından emin olmak için veri modelinizi dikkatlice kontrol edin.

 

 

d. Kümülatif Toplam Hesaplamak İçin DAX Formülü Kullanma
DAX formülü oluşturulurken dikkat edilmesi gereken hususlardan birisi de tablolar arasındaki ilişkiye göre DAX formülünün yazılması olmalıdır. Örneğin Satışlar tablonuz ile Tarih tablonuz arasında ilişki kurduğunuz sütunlar DATE ve TARİH ise DAX formülünü bu şekilde yazdığınız da çalışacaktır:

Satış Tutarı Kümülatif Toplam = 
CALCULATE(
    SUM('Satışlar'[Tutar]),
    FILTER(
        ALL('Tarih'[Date]),
        'Tarih'[Date] <= MAX('Tarih'[Date])
    )
)

 

 

 

 

 

 

 

Bu DAX formülünü açıklarsak:

  1. SUM('Satışlar'[Tutar]): Bu kısım, 'Satışlar' tablosundaki 'Tutar' sütununda bulunan değerlerin toplamını hesaplar. 'Tutar' sütunu genellikle satışların miktarını veya tutarını içerir.
  2. FILTER(ALL('Tarih'[Date]), 'Tarih'[Date] <= MAX('Tarih'[Date])): Bu kısım, 'Tarih' tablosundaki 'Date' sütununu filtreler. Ancak, 'Tarih' tablosunun tüm satırlarını korur (bu yüzden ALL işlevi kullanılır). Ancak, bu filtrelemeyi yapan kısım, tüm tarihleri, belirli bir tarihe (en büyük tarih değerine) kadar olanları içerecek şekilde filtreler. MAX('Tarih'[Date]), 'Tarih' tablosundaki en büyük tarih değerini döndürür.
  3. Bu iki parça birlikte kullanıldığında, toplam satış tutarı, belirli bir tarihe kadar olan tüm satışların toplamını ifade eder. Yani, son satırda listelenen tarih değerine kadar olan tüm satışların toplam tutarını hesaplar.

Bu hesaplama sonucunda ise beklediğimiz sonuç bu şekildedir:

 

Ancak ilişki yöntemini başka bir sütun ile kurduğunuzu varsayalım örneğin Satışlar Tablosundaki Donem2 sütunu (20140101) ile Tarih Tablosundaki Datekey sütunu (20140101) arasında "Many-to-One" bir ilişki oluşturdunuz,  bu durumda eğer önceki DAX formülünü yazarsanız çalışmayacaktır. 

 

 

 

 

 

 

 

 

 

Bu durumda ise beklediğimiz sonuç bu şekildedir:

Bunun yerine şöyle bir DAX yazabilirsiniz:

Satış Tutarı Kümülatif Toplam =
VAR maxd=
 CALCULATE(
 MAX('Satışlar'[Dönem]), 
 ALLEXCEPT('Satışlar','Satışlar'[Marka]) 
 ) 
RETURN
 CALCULATE(
 SUM('Satışlar'[Tutar]),
 FILTER(ALL('Tarih'), 'Tarih'[Date]<=MAX('Tarih'[Date]) && 'Tarih'[Datekey]<=maxd)
 )

  1. VAR maxd = CALCULATE(MAX('Satışlar'[Dönem]), ALLEXCEPT('Satışlar', 'Satışlar'[Marka])): Bu kısım, 'Satışlar' tablosundaki 'Dönem' sütununda maksimum değeri bulur. Ancak, bu işlemi 'Marka' dışında tüm diğer bağlamı kaldırarak yapar (ALLEXCEPT işlevi kullanılarak). Bu, her bir marka için ayrı ayrı en son dönem değerlerini almayı sağlar. Bu değer daha sonra 'maxd' değişkenine atanır.
  2. RETURN CALCULATE(SUM('Satışlar'[Tutar]), FILTER(ALL('Tarih'), 'Tarih'[Date] <= MAX('Tarih'[Date]) && 'Tarih'[Datekey] <= maxd)): Bu kısım, toplam satış tutarını hesaplar. İlk olarak, 'Tarih' tablosundaki tarih değerlerini filtreler. Ancak, bu filtrelemeyi yapan kısım, belirli bir tarihe kadar olanları içerecek şekilde yapılmıştır ('Tarih'[Date] <= MAX('Tarih'[Date])). Daha sonra, 'maxd' değişkeni aracılığıyla belirli bir döneme kadar olan satışları içerecek şekilde filtreleme yapılır ('Tarih'[Datekey] <= maxd). Son olarak, bu filtrelenmiş veri setinde 'Satışlar' tablosundaki 'Tutar' sütununda bulunan değerlerin toplamı hesaplanır.

Bu formül, belirli bir döneme kadar olan kümülatif satış tutarını hesaplamak için kullanılır. 'Marka' bağlamına göre en son döneme kadar olan satışların toplamını getirir.