DAX Temelleri — İlk Formülleriniz
DAX Nedir
DAX (Data Analysis Expressions); Power Pivot, Power BI ve Analysis Services ürünlerinde veri modeli üzerinde formül yazmak için kullanılan ifade dilidir. Klasik Excel formüllerinden farklı olarak hücre değil tablo ve sütun düzeyinde çalışır. Bir DAX ifadesi yazdığınızda Excel tek bir hücreye değil; milyonlarca satıra aynı anda uygulanan kuralı tanımlamış olursunuz. Bu yazıda yeni başlayanlar için temel mantığı, ilk fonksiyonları ve sık yapılan hataları inceleyeceğiz.
Excel Formülünden Farkı
Klasik Excel formülünde =B2*1,18 şeklinde tek hücreye bakarsınız. DAX dünyasında ise sütunun tamamına şu şekilde refere edersiniz:
NetTutar = Satışlar[BirimFiyat] * Satışlar[Adet]
Burada Satışlar[BirimFiyat]; Satışlar tablosunun BirimFiyat sütunu demektir. Excel; bu ifadeyi her satır için ayrı ayrı hesaplar ama söylemi tek seferdir. Klasik formül hücresel düşünür, DAX sütunsal düşünür.
İki Yer Tipi — Sütun ve Ölçü
DAX iki farklı bağlamda yazılır:
- Hesaplanmış Sütun: Tablonun yeni bir sütunu olarak yazılır. Her satır için değer üretilir, modelde yer kaplar.
- Ölçü: Tablonun altında bir hücreye yazılır. Yalnızca rapor çekildiğinde hesaplanır, modelde yer kaplamaz.
Bir oranı Net Tutar / Brüt Tutar şeklinde yazacaksanız bunu sütun olarak yazmak yanlıştır; her satırda hesap doğru çıkmaz. Ölçü olarak yazıldığında hangi filtre uygulanırsa o filtreye göre toplamlardan oran hesaplanır.
İlk Fonksiyon — SUM
ToplamSatis = SUM(Satışlar[NetTutar])
Bu ölçü Satışlar tablosundaki NetTutar sütununun toplamını verir. PivotTable üzerinde hangi şehri seçerseniz seçin filtre otomatik uygulanır. Klasik Excel TOPLA fonksiyonuna en yakın akrabadır ama hücre yerine sütun bekler.
Sayma — COUNTROWS
SiparisSayısı = COUNTROWS(Satışlar)
Tablodaki satır sayısını verir. Klasik COUNT fonksiyonundan farkı; bir sütun değil tablo bekler. Aktif filtre uygulandığında yalnızca filtreye uyan satırları sayar.
Filtreli Hesap — CALCULATE
DAX dünyasının en önemli fonksiyonu CALCULATE'tır. Mevcut filtre bağlamını değiştirip yeni bir hesap yapılmasını sağlar.
IstanbulSatis = CALCULATE(SUM(Satışlar[NetTutar]); Müşteriler[Şehir]="Istanbul")
Bu ölçü; hangi filtre uygulanmış olursa olsun yalnızca İstanbul müşterilerinin toplamını verir. CALCULATE öğrenildiğinde DAX kapısı tamamen aralanır; bu fonksiyona hakim olmadan ileri DAX yazılamaz.
Geçen Yıl Karşılaştırması
GectenYil = CALCULATE(SUM(Satışlar[NetTutar]); SAMEPERIODLASTYEAR(Tarih[Tarih]))
Tarih tablosu işaretlenmişse bu ölçü; aktif dönemin geçen yıl aynı tarihiyle karşılaştırma yapar. Klasik PivotTable bu kıyaslamayı yapamaz; DAX zaman zekasını işin içine katar.
İlişkili Tablo — RELATED
SehirAdi = RELATED(Müşteriler[Şehir])
İki tablo arasında ilişki kuruluysa Satışlar tablosundan Müşteriler tablosundaki şehir bilgisini alıp aynı satıra yazabilirsiniz. Klasik DÜŞEYARA yerine geçer; çok daha hızlı ve esnektir.
Akıl Tablosu — Filtreyi Kaldırma
GenelToplam = CALCULATE(SUM(Satışlar[NetTutar]); ALL(Satışlar))
ALL fonksiyonu; CALCULATE içinde tablonun tüm filtrelerini kaldırır. Bunu raporda kullandığınızda; filtreden bağımsız bir genel toplam alır, satır bazlı yüzdeleri hesaplayabilirsiniz.
Yüzde Hesaplama — Oran
Pay = DIVIDE(SUM(Satışlar[NetTutar]); CALCULATE(SUM(Satışlar[NetTutar]); ALL(Satışlar)))
Bu ölçü; her satırın genel toplam içindeki yüzdesini verir. DIVIDE fonksiyonu sıfıra bölme hatasını otomatik ele alır; klasik / işareti yerine tercih edin.
Karşılaştırma Tablosu
| Excel Karşılığı | DAX | Açıklama |
|---|---|---|
| TOPLA | SUM | Sütun toplamı |
| BAĞ_DEĞ_DOLU_SAY | COUNTROWS | Tablo satır sayısı |
| DÜŞEYARA | RELATED | İlişkili tabloya bakma |
| EĞER | IF | Koşullu değer |
| Yok | CALCULATE | Filtre değiştirme |
| Yok | SAMEPERIODLASTYEAR | Zaman zekası |
Yeni Başlayanların En Sık Hatası
Yeni öğrenenler ölçüye benzer şekilde sütun yazıp hesabın bozuk çıkmasına şaşırır. Bir oranı sütun olarak yazarsanız her satırda paydaki ve paydadaki tek satır değerini bölmüş olursunuz; sonra PivotTable o oranları toplar; mantıksız sonuç çıkar. Toplam, ortalama, oran gibi özetler her zaman ölçü olarak yazılmalıdır.
Sonuç
DAX; klasik Excel formüllerinden ilk bakışta tanıdık görünse de düşünme biçimi tamamen farklıdır. Sütun ve ölçü ayrımını, CALCULATE mantığını ve filtre bağlamını kavradığınızda kapı sonuna kadar açılır. Bu rehberdeki on iki örneği sırayla denerseniz iki haftada gerçek dünya raporlarını yazacak seviyeye gelirsiniz. Modern Excel çağında DAX bilmek; klasik fonksiyonları bilmek kadar değerlidir.