Power BI’nin veri modelleme ve hesaplama dilini oluşturan DAX (Data Analysis Expressions), raporlama ve iş zekası uygulamalarında gelişmiş veri analizi yapmanızı sağlayan güçlü bir fonksiyon seti ve ifade dilidir.
DAX, Excel’deki formüllere benzer bir yapıya sahip olmakla birlikte, çok boyutlu veri modelleri üzerinde karmaşık hesaplamalar yapma olanağı tanır. Bu sayede Power BI, Excel Power Pivot, SQL Server Analysis Services (Tabular) gibi platformlarda tablolar, sütunlar ve önceden hesaplanmış ölçüler (measure’lar) üzerinden ileri düzey analitik hesaplamalar gerçekleştirebilirsiniz.
Aşağıda DAX hakkında detaylı bilgiler, kavramlar ve örnekler yer almaktadır:
DAX’ın Temel Kavramları
- Hesaplanmış Sütun (Calculated Column):
Hesaplanmış sütunlar, veri modelinizde bulunan bir tabloya yeni bir sütun eklemek için DAX formüllerini kullanır. Bu sütunlar, veri yenilendiğinde otomatik olarak yeniden hesaplanır. Hesaplanmış sütunlar, her bir satır için hesaplama yaparak o satırın bağlamında çalışır.
Örneğin, bir “Satış” tablosundaki “Toplam Tutar” sütunu, [Miktar] * [Birim Fiyat] formülüyle hesaplanabilir. - Ölçü (Measure):
Ölçüler, raporda görselleştirmeler oluşturulurken hesaplanan dinamik değerlerdir. Hesaplanmış sütunlardan farklı olarak ölçüler, satır bağlamından ziyade bir filtre veya görselleştirme bağlamında hesaplanır. Bu, aynı ölçünün farklı slicer, filtre veya görselleştirme kombinasyonları altında farklı sonuçlar vermesini sağlar.
Örneğin, “Toplam Satış” ölçüsü, SUM(Satış[Toplam Tutar]) gibi bir DAX ifadesiyle tanımlanabilir. Bu ölçü tabloya bağlı olarak farklı ürünler, yıllar veya bölgeler için ayrı ayrı toplamları otomatik olarak hesaplar. - Tablo Fonksiyonları:
DAX, tablo döndüren fonksiyonlar içerir. Bu fonksiyonlar genellikle filtre bağlamını değiştirmek, yeni tablolara ulaşmak veya mevcut tablo verilerini dönüştürmek için kullanılır.
Örneğin, FILTER(), belirli bir koşulu sağlayan satırları içeren bir tablo döndürür; ALL(), ilgili tablonun veya kolonun filtrelerini kaldırarak bağlamdan bağımsız bir hesaplama yapılmasına olanak tanır. - Bağlam (Context):
DAX’ta bağlam (context), bir ifadenin nasıl değerlendirileceğini belirler. İki temel bağlam vardır: satır bağlamı (row context) ve filtre bağlamı (filter context).- Satır bağlamı: Hesaplanmış sütunlarda veya ITERATOR fonksiyonlarında (örneğin SUMX, AVERAGEX) her bir satır için geçerli olan koşullar.
- Filtre bağlamı: Görsellerde, dilimleyicilerde (slicers), filtrelerde veya diğer koşullarda veri alt kümelerine uygulanan sınırlamalar. Ölçüler genellikle filtre bağlamıyla etkileşim halindedir.
DAX Fonksiyon Kategorileri ve Örnekler
- Toplama Fonksiyonları (Aggregation Functions):
- SUM(): Bir kolonun sayısal değerlerini toplar.
Örnek:Toplam Satış = SUM(Satış[Toplam Tutar])
- AVERAGE(): Belirtilen kolonun ortalamasını alır.
Örnek:Ortalama Fiyat = AVERAGE(Urunler[Birim Fiyat])
- MIN(), MAX(), COUNT(), COUNTROWS() gibi diğer fonksiyonlar da benzer şekilde kullanılır.
- SUM(): Bir kolonun sayısal değerlerini toplar.
- Zaman Zekası (Time Intelligence) Fonksiyonları:
Zaman zekası fonksiyonları, tarih tablolarıyla etkileşime geçerek farklı zaman dilimlerinde karşılaştırmalar yapmanızı sağlar.- TOTALYTD(): Yıl başından belli bir tarihe kadar olan toplamı hesaplar.
Örnek:YTD Satış = TOTALYTD(SUM(Satış[Toplam Tutar]), Takvim[Tarih])
- PREVIOUSMONTH(), SAMEPERIODLASTYEAR(), DATEADD() gibi fonksiyonlarla önceki dönemlere göre değişim oranları veya farkları hesaplanabilir.
- TOTALYTD(): Yıl başından belli bir tarihe kadar olan toplamı hesaplar.
- Filtre Fonksiyonları:
Veri modelinizdeki filtre bağlamını değiştirmek veya özel koşullara göre hesaplama yapmak için kullanılır.- CALCULATE(): Belirli bir ifadenin filtre bağlamını değiştirerek hesaplama yapar.
Örnek:Sadece Belli Ürün Satışı = CALCULATE( SUM(Satış[Toplam Tutar]), Satış[Ürün Kategorisi] = "Elektronik" )
- ALL(), ALLEXCEPT(), VALUES(), FILTER() gibi fonksiyonlar, tablo veya kolon bazlı filtre manipülasyonları yapar.
- CALCULATE(): Belirli bir ifadenin filtre bağlamını değiştirerek hesaplama yapar.
- Mantıksal ve Bilgi Fonksiyonları:
Koşullu ifadeler, hata denetimleri, tür dönüşümleri gibi amaçlarla kullanılır.- IF(): Koşullu hesaplama yapar.
Örnek:Fiyat Kategorisi = IF( AVERAGE(Urunler[Birim Fiyat]) > 100, "Pahalı", "Uygun" )
- ISBLANK(), ISERROR(), ERROR(), SWITCH() gibi fonksiyonlar da bu kategoridedir.
- IF(): Koşullu hesaplama yapar.
- Matematiksel, Metinsel ve İstatistiksel Fonksiyonlar:
Metin birleştirmeleri (CONCATENATE), yuvarlama işlemleri (ROUND), istatistiksel dağılımlar (MEDIAN, STDDEV), tarih-saati bölme (YEAR, MONTH, DAY) gibi fonksiyonlar da DAX içerisinde bulunur.
Detaylı Örnekler
- Hesaplanmış Sütun Örneği:
Veri modelinizde bir “Satış” tablosu olduğunu varsayalım. Bu tabloda “Miktar” ve “Birim Fiyat” kolonları olsun. Yeni bir hesaplanmış sütunla her satırın toplam satış tutarını hesaplayalım.Toplam Tutar = Satış[Miktar] * Satış[Birim Fiyat]
Bu hesaplanmış sütun her satırda ilgili ürünün adet başına fiyatını miktarla çarpar. - Ölçü Örneği:
Yukarıdaki “Toplam Tutar” değerlerini toplayarak genel toplam satış ölçüsünü oluşturalım. Bu sayede raporda farklı filtreler uygulandığında toplam satış dinamik olarak değişecektir.Toplam Satış = SUM(Satış[Toplam Tutar])
Bu ölçü bir karta, tabloya veya grafiğe yerleştirildiğinde seçilen filtrenin geçerli olduğu kategori, tarih aralığı veya coğrafi bölgeye göre güncellenen değerler elde edersiniz. - Time-intelligence Örneği:
Toplam satışların bir önceki yıla göre farkını hesaplamak istediğinizi düşünelim. Bir “Takvim” tablonuz ve “Tarih” kolonunuz olduğunu varsayalım. Öncelikle geçen yılın aynı dönemine ait satışları hesaplayalım:Geçen Yılın Satışı = CALCULATE( [Toplam Satış], SAMEPERIODLASTYEAR(Takvim[Tarih]) )
Ardından farkı bulmak için:Yıl Bazlı Fark = [Toplam Satış] - [Geçen Yılın Satışı]
- Filtre Manipülasyonu Örneği:
Belirli bir ürün kategorisinin toplam satışını, diğer filtrelerden bağımsız olarak hesaplamak isterseniz ALL fonksiyonu kullanabilirsiniz:Elektronik Toplam Satış (Filtre Bağımsız) = CALCULATE( SUM(Satış[Toplam Tutar]), ALL(Satış), Satış[Ürün Kategorisi] = "Elektronik" )
Burada ALL(Satış) ifadesi, mevcut filtreleri kaldırarak hesaplamanın tüm “Satış” tablosu üzerinden yeniden yapılmasını sağlar ve ardından “Ürün Kategorisi = Elektronik” filtresi uygulanır.
Sonuç
DAX, Power BI ve benzeri platformlarda veri modelinizi zenginleştirerek karmaşık hesaplamalar, zaman bazlı karşılaştırmalar, kategorik özetler ve koşullu analizler yapmanızı mümkün kılar. DAX dilini iyi anlamak, veri modelleme prensiplerini kavramak ve bağlam kavramını özümsemek; raporlarınızı daha etkili, dinamik ve interaktif hale getirir. Zamanla pratik yaparak, DAX fonksiyonlarının gücünü farklı senaryolarda kullanmayı öğrenebilir ve daha gelişmiş iş zekası çözümlemeleri üretebilirsiniz.
🟢Eğitim talepleri için bizimle buradan iletişime geçebilirsiniz. 👉 https://ecv.microsoft.com/VC3RPPTT4U
🟢Linkedin Power BI Grubu
👉 https://www.linkedin.com/groups/9504703/
Bir yorum bırak