DAX ile Zaman Zekası: Dönem Karşılaştırması Nasıl Kurulur?
Beceri rehberi

DAX ile Zaman Zekası: Dönem Karşılaştırması Nasıl Kurulur?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 7 dk okuma

Power BI'da takvim tablosu kurma, yıl başından bugüne, önceki yıl ve büyüme ölçülerini DAX ile yazma adımları, sık hatalar ve öğrenme sırası.

Zaman zekası ne işe yarar?

Bir satış ya da maliyet rakamı tek başına çok az şey anlatır. Karar vericinin asıl sorusu genellikle şudur: bu ay geçen aya göre nasıl, yılbaşından bugüne hedefin neresindeyiz, geçen yılın aynı dönemine göre büyüdük mü? Zaman zekası (time intelligence), DAX'ın bu tür dönem kıyaslarını ölçü olarak yazmanızı sağlayan fonksiyon ailesidir.

Microsoft'un DAX belgelerinde bu aile, gün, ay, çeyrek ve yıl gibi zaman dilimleri üzerinde hesap yapıp bu dilimleri birbiriyle karşılaştırmaya yarayan fonksiyonlar olarak tanımlanır. Pratikte tek tek rapor sayfaları için ayrı ayrı filtre kurmak yerine bir kez doğru ölçü yazarsınız; ölçü, kullanıcının seçtiği ay, çeyrek ya da yıla göre kendiliğinden yeniden hesaplanır.

Bu yüzden zaman zekası, Power BI'da DAX öğrenenlerin toplam alma ve filtreleme aşamasından sonra karşılaştığı ilk gerçek eşiktir. Mantığı oturduğunda yönetim panosundaki neredeyse her karşılaştırma kartı aynı kalıbın küçük varyasyonuna dönüşür.

Önce takvim tablosu: her şeyin temeli

Zaman zekası fonksiyonları, modelinizde düzgün kurulmuş bir takvim (tarih) tablosu olmadan güvenilir çalışmaz. Microsoft'un tarih tablosu rehberine göre böyle bir tabloda tarih sütunu benzersiz değerlerden oluşmalı, boş (BLANK) değer içermemeli, eksik gün barındırmamalı ve tam yılları kapsamalıdır. Yıl her zaman Ocak-Aralık takvim yılı olmak zorunda değildir; mali yıl da olabilir.

Sık görülen hata, satış tablosundaki sipariş tarihi sütununu doğrudan fonksiyonlara vermektir. Satış olmayan günler o sütunda hiç yer almadığından tarih dizisinde boşluklar oluşur ve önceki dönem hesapları sessizce yanlış çıkar. Doğru yol, satış tablosundan bağımsız bir takvim tablosu üretmek ve satış tablosundaki tarihe ilişkilendirmektir.

Takvim tablosunu üretmenin yolları: • Veri kaynağınızda (örneğin veri ambarında) hazır bir tarih boyut tablosu varsa onu içeri almak • Power Query ile üretmek • DAX'ta CALENDAR ya da CALENDARAUTO fonksiyonuyla hesaplanmış tablo oluşturmak

CALENDAR başlangıç ve bitiş tarihini siz verirsiniz; CALENDARAUTO ise modeldeki tüm tarihleri kapsayacak tam yılları kendisi bulur. Klasik zaman zekası yaklaşımında bu tabloyu Power BI Desktop'ta tarih tablosu olarak işaretlemeniz de gerekir. Microsoft, takvim tabanlı yeni bir zaman zekası yaklaşımını da belgelemiştir; hangisini kullandığınıza göre gereksinimler farklılaştığından güncel durumu resmî sayfadan kontrol edin.

Yıl başından bugüne (YTD) ölçüsü

Dönem başından bugüne toplamlar için DAX'ta hazır fonksiyonlar vardır: TOTALYTD yılbaşından bugüne, TOTALQTD çeyrek başından bugüne, TOTALMTD ay başından bugüne değeri hesaplar. Önce temel bir ölçü yazarsınız, sonra onu dönem fonksiyonuna sararsınız.

Örneğin temel ölçü şöyle olsun: Toplam Satış = SUM(Satışlar[Tutar]). Yılbaşından bugüne karşılığı: Satış YTD = TOTALYTD([Toplam Satış], Takvim[Tarih]). Bir matris görselinde satırlara ay koyarsanız, her ayın karşısında o aya kadar biriken toplamı görürsünüz.

Aynı sonucu esnek biçimde elde etmenin ikinci yolu, DATESYTD fonksiyonunu CALCULATE içinde kullanmaktır: Satış YTD = CALCULATE([Toplam Satış], DATESYTD(Takvim[Tarih])). TOTALYTD aslında bu kalıbın kısaltmasıdır. Ek filtre eklemeniz gerektiğinde, mesela yalnızca belirli bir kanalın YTD'si, CALCULATE biçimi daha okunaklı kalır.

Mali yılınız takvim yılından farklıysa, bu fonksiyonlar yıl sonu tarihini isteğe bağlı bir parametre olarak alır. Mali dönem başlangıcını belirtmeyi unutmak, YTD kartının Ocak'ta sıfırlanıp yöneticinin beklediği mali yıl değerini göstermemesi gibi can sıkıcı bir farka yol açar.

Önceki yıl ve önceki dönemle karşılaştırma

Geçen yılın aynı dönemini getirmek için en sık kullanılan fonksiyon SAMEPERIODLASTYEAR'dır. Belgelerdeki tanımıyla, belirtilen tarih sütunundaki tarihleri bir yıl geriye kaydırılmış biçimde döndürür. CALCULATE içinde şöyle kullanılır: Satış Geçen Yıl = CALCULATE([Toplam Satış], SAMEPERIODLASTYEAR(Takvim[Tarih])).

Daha esnek gerekirse DATEADD vardır: tarihleri belirlediğiniz aralık sayısı kadar, istediğiniz birimde (gün, ay, çeyrek, yıl) ileri ya da geri kaydırır. Böylece aynı ölçü kalıbıyla bir önceki ayı, bir önceki çeyreği ya da geçen yılı alabilirsiniz. PARALLELPERIOD benzer biçimde paralel bir dönemi tam periyot olarak getirir. PREVIOUSMONTH, PREVIOUSQUARTER ve PREVIOUSYEAR ise bir önceki takvim ayı, çeyreği ve yılının tüm tarihlerini döndüren daha dar fonksiyonlardır.

Büyüme oranı için iki ölçüyü birleştirirsiniz: Yıllık Değişim = [Toplam Satış] - [Satış Geçen Yıl]. Yüzdesel karşılığı: Yıllık Değişim Yüzdesi = DIVIDE([Yıllık Değişim], [Satış Geçen Yıl]). Bölme için DIVIDE kullanmak önemlidir; geçen yıl değeri boş ya da sıfır olduğunda hata yerine boş sonuç döner ve görsel bozulmaz.

SAMEPERIODLASTYEAR ile DATEADD arasındaki pratik fark şudur: ilki yalnızca yıllık kıyas içindir, ikincisi her birimde kayma yapabilir. Tek kalıbı öğrenmek istiyorsanız DATEADD'i öğrenin; diğerleri onun özel durumları gibi okunabilir.

Adım adım örnek: aylık satış panosu

Örneğin bir perakende ekibinin aylık satış panosunu kurduğunuzu düşünün. Sıra genellikle şöyle ilerler.

  • Satış ve ürün tabloları yüklenir, ayrıca ayrı bir takvim tablosu oluşturulur ve satış tarihine ilişkilendirilir.
  • Takvim tablosuna yıl, ay adı ve ay sıra numarası sütunları eklenir; ay adı, ay sıra numarasına göre sıralanır, böylece Nisan Ağustos'tan sonra gelmez.
  • Temel ölçü yazılır, ardından yılbaşından bugüne ve geçen yıl ölçüleri eklenir.
  • Büyüme yüzdesi hesaplanır ve bir kart ile bir çizgi grafikte gösterilir.
  • Bir ay dilimleyicisi eklenir; kullanıcı Mart'ı seçtiğinde tüm kartlar kendiliğinden o aya göre hesaplanır.

Bu akışta çıktınız, tek bir rapor sayfasının her ay yeniden hazırlanması gerekmeyen, dönem seçimine uyum sağlayan bir yönetim özetidir. Aynı kalıp ay yerine hafta, çeyrek ya da gün seviyesinde de çalışır; sadece takvim tablosunun ilgili sütunları değişir.

Sık yapılan hatalar ve nasıl önlenir

En sık hata, takvim tablosunu işaretlememek ya da ilişkiyi yanlış kurmaktır. Sonuç, değerleri doğru görünen ama dönem kayması yapan ölçülerdir. Önlem: ölçüyü yazmadan önce takvim tablosunun benzersiz, boşluksuz ve tam yıllık olduğunu kontrol edin.

İkinci hata, görselde takvim tablosu yerine satış tablosundaki tarih sütununu eksene koymaktır. Zaman zekası ölçüleri takvim tablosundaki sütunlarla birlikte kullanılmalıdır; aksi halde filtre bağlamı beklediğiniz gibi gelmez.

Üçüncü hata, eksik veriyle çalışan yıllarda yanıltıcı kıyas yapmaktır. Yıl henüz bitmediyse geçen yılın tamamını bu yılın yarısıyla karşılaştırmak anlamsızdır; bu yüzden YTD ve geçen yıl YTD ölçülerini yan yana göstermek gerekir.

Dördüncü hata, her kıyas için ayrı ve kopyala-yapıştır ölçü yazmaktır. Ölçü sayısı arttıkça bakım zorlaşır. Çok sayıda zaman kıyası gerekiyorsa hesaplama grupları (calculation groups) adı verilen yapı bu işi tek yerde toplamak için tasarlanmıştır; ileri aşamada öğrenilecek bir konudur.

Son olarak ölçüleri küçük bir test tablosuyla doğrulayın: bilinen bir ay için elle toplamı hesaplayın ve ölçü sonucuyla karşılaştırın. Rapor yayımlanmadan önce yapılan bu kontrol, yönetim toplantısında bulunan hatadan çok daha ucuza gelir.

Öğrenme yolu: temelden ileriye

Başlangıç: veri modelleme temelleri, yıldız şema ve tarih tablosu mantığı. Zaman zekasından önce ilişkilerin nasıl filtre taşıdığını anlamalısınız.

Orta düzey: SUM, CALCULATE, FILTER gibi temel DAX fonksiyonları ve filtre bağlamı kavramı. Zaman zekası fonksiyonlarının hemen hepsi CALCULATE'in içinde bir filtre argümanı olarak çalıştığından CALCULATE'e hâkim olmak bu aşamanın çekirdeğidir.

İleri düzey: DATEADD ile esnek kayma, hesaplama grupları, mali takvimler, hafta bazlı karşılaştırmalar ve büyük modellerde performans optimizasyonu.

Çalışma yöntemi olarak gerçek bir veri kümesi seçin ve her fonksiyonu önce tek bir kartta deneyin, sonra bir matriste ay ay kontrol edin. Sadece sözdizimini okumak yerine sonucun hangi tarih kümesinden geldiğini anlamaya çalışın.

Bu beceriyi Mindset programlarında nerede çalışırsınız

Mindset'in Power BI İleri Düzey ve DAX programının modül başlıkları arasında DAX Diline Derinlemesine Giriş, CALCULATE ve Filtre Bağlamında Ustalaşmak, Zaman Zekası ve Dönem Analizi, Sıralama, Sınıflandırma ve Karmaşık Analizler, Hesaplama Grupları ve İleri Kalıplar ve Performans Optimizasyonu yer alır. Bu sıra, bu sayfada anlatılan öğrenme yoluyla örtüşür: önce CALCULATE ve bağlam, sonra dönem analizi, ardından hesaplama grupları.

Uygulamalı Power BI ile Veri Analitiği ve Görselleştirme Sertifika Programı ise Veri Modelleme ve Yönetimi ile DAX Analiz Dili ve Kullanımı gibi başlıklarla daha geniş bir temel sunar. Finans, satış analitiği ve raporlama ekiplerinde dönem kıyaslaması sık gerektiğinden, bu başlıklar kurumsal ekiplerin ortak ölçü standartları kurmasında da kullanılabilir.

İlgili Mindset programı

Power BI İleri Düzey ve DAX

Sık sorulanlar

Sık sorulan sorular

Zaman zekası fonksiyonları için ayrı bir takvim tablosu şart mı?

Pratikte evet. Microsoft'un tarih tablosu rehberi, tarih sütununun benzersiz olmasını, boş değer ve eksik gün içermemesini ve tam yılları kapsamasını ister. Satış tablosundaki tarih sütununda satış olmayan günler bulunmaz; bu nedenle önceki dönem hesapları kayabilir. Ayrı bir takvim tablosu üretip satış tarihine ilişkilendirmek en güvenli yoldur.

TOTALYTD ile DATESYTD arasındaki fark nedir?

TOTALYTD, ifadeyi yılbaşından bugüne değerlendirip doğrudan sonuç döndürür. DATESYTD ise yalnızca yılbaşından bugüne tarih kümesini üretir ve CALCULATE içinde filtre olarak kullanılır. Ek filtre koyacaksanız ya da kalıbı diğer fonksiyonlarla birleştirecekseniz DATESYTD'li CALCULATE biçimi daha esnek ve okunaklıdır.

Geçen yılın aynı dönemi boş geliyorsa sorun nerede olabilir?

Önce takvim tablosunun geçen yılın tarihlerini içerip içermediğine ve eksik gün bulunup bulunmadığına bakın. Ardından ilişkinin takvim tablosundan satış tablosuna doğru kurulduğunu ve görselde takvim tablosundaki sütunları kullandığınızı doğrulayın. Geçen yıl verisi gerçekten yoksa DIVIDE ile boş sonucu yönetin.

Mali yılı Ocak'ta başlamayan şirketler ne yapmalı?

Yıl sonu tarihini ilgili fonksiyonun isteğe bağlı parametresiyle belirtmek, mali yıla göre biriken toplamı almanızı sağlar. Takvim tablosunun mali yılı da tam kapsaması gerekir. Mali takvim kuralları kuruma göre değiştiğinden önce finans ekibiyle dönem tanımını netleştirin.

Zaman zekası ölçüleri büyük modellerde yavaşlar mı?

Çok sayıda ölçü ve geniş veri bir arada kullanıldığında yavaşlama görülebilir. Takvim tablosunu sade tutmak, gereksiz sütunları kaldırmak ve benzer ölçüleri tek yerde toplamak yardımcı olur. Performans analizi ayrı bir konudur ve ileri DAX eğitimlerinde ele alınır.

Power BI Zaman Zekası: YTD ve Önceki Yıl DAX Ölçüleri