DAX'e Giriş: Hesaplanmış Sütunlar ve Ölçüler

Bu derste ne yapacağız?

Bu derste Excel formüllerinden DAX diline geçişin ilk adımını atacaksınız. DAX, Power BI'ın hesaplama dilidir. Amacımız üç şey: hesaplanmış sütun ile ölçü arasındaki farkı anlamak, SUM, CALCULATE ve DIVIDE işlevleriyle ilk ölçülerinizi yazmak ve bu ölçüleri bir rapor sayfasında denemek.

Ön koşul: Power BI Desktop açık olmalı ve içinde en az bir satış tablosu bulunmalı. Önceki derslerde verinizi içeri aktarıp modelinizi hazırladığınızı varsayıyoruz. Örneklerde Satışlar tablosunda Adet, Birim Fiyat, Maliyet ve Şehir sütunları olduğunu düşünün. Kendi tablonuzun adları farklıysa formüllerdeki adları kendi adlarınızla değiştirin.

Köprü: Önceki derste verinizi Power BI'a taşıdınız ve tabloların birbiriyle nasıl konuştuğunu gördünüz. Bugün bu tablolar üzerinde hesap yapmaya başlıyoruz. Sonraki derste yazdığınız ölçüleri görsellere taşıyacak, grafiklerde ve dilimleyicilerde nasıl davrandıklarını inceleyeceksiniz. Bu yüzden bugün yazacağınız ölçüler sonraki dersin hammaddesi olacak.

Kavram

Excel'de bir hücreye formül yazarsınız ve sonuç o hücrede durur. DAX'te ise hücre yoktur. Formülü bir sütuna ya da bir ölçüye yazarsınız. Bu ikisinin farkı dersin en önemli noktasıdır.

Hesaplanmış sütun, tablonuza eklenen yeni bir sütundur. Formül her satır için ayrı çalışır ve sonuç veri modelinde saklanır. Excel'de bir sütunun her satırına aynı formülü aşağı doğru kopyalamaya çok benzer. Günlük hayat benzetmesi: market fişindeki her kalemin yanına, kasiyerin "adet çarpı fiyat" hesabını yazması gibidir. Her satırın sonucu kâğıda yazılmıştır.

Ölçü, tabloda görünen bir sütun değildir. Formül, raporda o an hangi filtreler varsa onlara göre çalışır. Aynı ölçü bir kartta toplam ciroyu, bir grafikte şehir bazında ciroyu, bir dilimleyici seçildiğinde de sadece seçilen dönemin cirosunu gösterir. Benzetme: kasiyerin gün sonunda "bugünkü toplam ne kadar?" sorusuna anında cevap vermesi gibidir. Soru değişince cevap yeniden hesaplanır, önceden yazılmış bir cevap yoktur.

Kısa bir karar kuralı ezberleyin:

  • Satır bazında bir değer lazımsa ya da o değeri filtre, eksen veya grup olarak kullanacaksanız, hesaplanmış sütun kullanın.
  • Toplam, ortalama, oran gibi birleştirilmiş bir sonuç lazımsa ölçü kullanın.

Yeni başlayanların en sık yaptığı hata her şeyi sütun olarak yazmaktır. Sütunlar dosya boyutunu büyütür. Ölçüler ise yalnızca ihtiyaç duyulduğunda hesaplanır, bu yüzden çoğu durumda tercih edilmelidir.

Şimdi üç temel işleve bakalım:

İşlevNe yapar?Excel'deki yakını
SUMBir sütunun tüm değerlerini toplar (mevcut filtreler içinde).TOPLA
CALCULATEBir hesabı, sizin belirlediğiniz ek filtreyle yeniden yapar.ETOPLA'ya benzer, ama çok daha güçlüdür
DIVIDEBölme yapar, payda sıfırsa hata yerine boş ya da belirlediğiniz değeri döndürür.EĞERHATA ile sarılmış bölme

Bir başka fark daha var: Excel'de bir hücreye "B2" diye başvurursunuz. DAX'te ise Tablo[Sütun] biçiminde başvurursunuz, örneğin Satışlar[Adet]. Ölçülere başvururken ise yalnızca köşeli parantez kullanılır, örneğin [Ciro].

Adım adım uygulama

  • Adım 1 - Veri görünümünü açın: Power BI Desktop'ın solundaki dikey şeritte, ortadaki tablo simgeli Tablo görünümü düğmesine tıklayın. Sağdaki Veri bölmesinden Satışlar tablosunu seçin. Arayüz sürüme göre biraz farklı görünebilir. Simge adı değişmiş olabilir, ama şeritte rapor, tablo ve model görünümleri her zaman bulunur.
  • Adım 2 - Hesaplanmış sütun ekleyin: Üstteki şeritte Tablo araçları sekmesine geçin ve Yeni sütun düğmesine tıklayın. Tablonun üstünde formül çubuğu açılır. Şunu yazın: Tutar = Satışlar[Adet] * Satışlar[Birim Fiyat]. Enter tuşuna basın. Tabloda her satır için bir tutar hesaplandığını göreceksiniz. Formül, her satırda o satırın Adet ve Birim Fiyat değerlerini çarpar.
  • Adım 3 - İlk ölçünüzü yazın: Rapor görünümüne dönün (şeritteki çubuk grafik simgeli düğme). Giriş sekmesinde Yeni ölçü düğmesine tıklayın. Formül çubuğuna şunu yazın: Ciro = SUM(Satışlar[Tutar]). Bu ölçü, Tutar sütunundaki değerleri o anki filtre bağlamında toplar. Enter'a basın. Sağdaki Veri bölmesinde Ciro adının yanında küçük bir hesap makinesi simgesi belirir.
  • Adım 4 - Ölçüyü bir kartta görün: Görselleştirmeler bölmesinden Kart görselini seçin. Veri bölmesinden Ciro ölçüsünü karta sürükleyin. Kartta toplam ciro görünür.
  • Adım 5 - Bir ölçü daha yazın: Yeniden Yeni ölçü düğmesine tıklayın ve şunu yazın: Kâr = SUM(Satışlar[Tutar]) - SUM(Satışlar[Maliyet]). Buradaki önemli nokta, iki toplamı çıkarmanızdır. Bu, satır satır kâr hesaplayıp sonra toplamaktan farklı bir yoldur ve çoğu durumda aynı sonucu verir.
  • Adım 6 - Ölçüden ölçü türetin: Yeni ölçü olarak şunu yazın: Kâr Oranı = DIVIDE([Kâr], [Ciro], 0). Burada köşeli parantezle daha önce yazdığınız ölçülere başvuruyorsunuz. Üçüncü parametre (0), payda sıfır olduğunda ne döndürüleceğini belirler. Ölçünün biçimini yüzdeye çevirmek için Veri bölmesinde ölçüyü seçin, üstteki şeritte Ölçü araçları sekmesine geçin ve yüzde simgeli düğmeye tıklayın.
  • Adım 7 - CALCULATE ile filtre uygulayın: Yeni ölçü olarak şunu yazın: İstanbul Cirosu = CALCULATE([Ciro], Satışlar[Şehir] = "İstanbul"). CALCULATE'in ilk parametresi hesaplanacak ifadedir, sonrakiler filtrelerdir. Bu ölçü, rapordaki diğer filtrelere ek olarak şehri İstanbul'a sabitler. Bunu ikinci bir karta koyup ilk kartla karşılaştırın.
  • Adım 8 - Ölçüleri gruplayın: Ölçüleriniz çoğaldıkça karışmaması için Veri bölmesinde bir ölçüye sağ tıklayın ve Görüntüleme klasörüne ekle gibi bir seçenek arayın. Bu seçenek sürüme göre adı ve yeri değişebilir. Alternatif olarak ölçü adlarını anlamlı ve tutarlı tutmanız yeterlidir.
  • Adım 9 - Bağlamı gözlemleyin: Rapora bir Tablo görseli ekleyin. Şehir sütununu ve Ciro, Kâr, Kâr Oranı ölçülerini bu görsele sürükleyin. Her şehir satırında ölçülerin ayrı ayrı hesaplandığına dikkat edin. Bu, ölçülerin filtre bağlamına göre çalışmasının canlı örneğidir.

Formüllerin ne yaptığını özetleyelim:

  • Tutar = Satışlar[Adet] * Satışlar[Birim Fiyat]: her satırda iki değeri çarpar, sonucu sütunda saklar.
  • Ciro = SUM(Satışlar[Tutar]): filtrelenmiş satırların tutarını toplar.
  • Kâr = SUM(...) - SUM(...): iki toplam arasındaki farkı verir.
  • Kâr Oranı = DIVIDE(...): güvenli bölme yapar, sıfıra bölme hatası vermez.
  • İstanbul Cirosu = CALCULATE(...): ciro ölçüsünü şehir filtresiyle yeniden hesaplar.

Sık karşılaşılan sorunlar

HataÇözüm
Formülde "Sütun bulunamadı" benzeri bir uyarı çıkıyor.Tablo ve sütun adını Veri bölmesindeki yazılışla birebir karşılaştırın. Boşluk içeren adlar köşeli parantez içinde tam yazılmalıdır. Yazarken çıkan öneri listesinden seçmek en güvenlisidir.
Ölçüyü tablo görseline sürükleyince her satırda aynı toplam değer görünüyor.Görseldeki sütun ile ölçünün kullandığı tablo arasında ilişki kurulmamış olabilir. Model görünümünde ilişkiyi kontrol edin.
Kâr oranı boş görünüyor.DIVIDE, payda sıfır ya da boşsa üçüncü parametreyi döndürür. Parametre verilmediyse sonuç boş kalır. 0 yazarak değeri belirleyin.
Ölçüyü tabloya yeni sütun olarak eklemek istiyorum ama satırlarda görünmüyor.Ölçüler satır bazında saklanmaz. Bir tablo ya da kart görseline sürükleyerek görüntüleyin.
Yeni sütun seçeneği yerine yanlışlıkla ölçü ekledim.Ölçü eklendiyse silin ve doğru düğmeyi kullanın. Satır bazında değer için Yeni sütun, toplu sonuç için Yeni ölçü seçilir.
Formülde noktalı virgül ile virgül karışıyor.DAX'te parametre ayırıcı bilgisayarınızın bölgesel ayarına göre virgül ya da noktalı virgül olabilir. Önerilen listeden seçim yapınca doğru ayırıcı gelir. Hata alırsanız diğerini deneyin.
Metin filtresi çalışmıyor.Metinler çift tırnak içinde yazılmalıdır. Yazım da birebir aynı olmalıdır, örneğin "İstanbul" ile "Istanbul" farklı değerlerdir.

Mini görev

Kendi veri setinizde ya da örnek satış tablosunda aşağıdaki işi yapın. Bir rapor sayfasında üç kart ve bir tablo görseli hazırlayın:

  • Satır bazında bir hesaplanmış sütun yazın (örneğin Tutar).
  • Toplam ciro için bir ölçü yazın.
  • Kâr ya da benzeri bir fark ölçüsü yazın.
  • DIVIDE ile bir oran ölçüsü oluşturun ve yüzde biçimine çevirin.
  • CALCULATE ile seçtiğiniz bir şehir, ürün ya da kategori için filtreli bir ölçü yazın.
  • Ölçüleri kartlara ve şehir bazlı bir tabloya yerleştirin.

Kontrol listesi:

  • Sütun ve ölçüyü doğru düğmeyle (Yeni sütun / Yeni ölçü) eklediniz mi?
  • Kart değerleri ile tablo görselindeki toplam satırı tutarlı mı?
  • Oran ölçüsü yüzde olarak görünüyor mu?
  • CALCULATE ölçüsünün değeri, tabloda ilgili şehrin satırıyla aynı mı?
  • Ölçü adları anlaşılır ve tutarlı mı?

Kendini sına

  • Soru 1: Hesaplanmış sütun ile ölçü arasındaki temel fark nedir?
  • Soru 2: Bir ürünün adet ve fiyatını çarparak her satırda tutar bulmak istiyorsunuz. Sütun mu, ölçü mü kullanırsınız?
  • Soru 3: DIVIDE işlevi normal bölme işaretine göre hangi avantajı sağlar?
  • Soru 4: CALCULATE işlevinin ilk parametresi ile sonraki parametreleri neyi ifade eder?
  • Soru 5: Bir ölçü neden farklı görsellerde farklı sonuç verebilir?

Cevaplar

  • Cevap 1: Hesaplanmış sütun her satır için hesaplanır ve modelde saklanır. Ölçü ise raporda o anki filtrelere göre çalışır ve satırlarda saklanmaz.
  • Cevap 2: Satır bazında değer istediğiniz için hesaplanmış sütun kullanırsınız. Toplamını almak içinse ayrıca bir ölçü yazarsınız.
  • Cevap 3: Payda sıfır ya da boş olduğunda hata vermez. Boş ya da sizin belirlediğiniz alternatif değeri döndürür.
  • Cevap 4: İlk parametre hesaplanacak ifadedir (örneğin bir ölçü). Sonraki parametreler, hesabın yapılacağı bağlamı değiştiren filtrelerdir.
  • Cevap 5: Çünkü ölçü, bulunduğu görselin filtre bağlamına göre yeniden hesaplanır. Kartta genel toplamı, şehir tablosunda her şehir için ayrı sonucu verir.

Tebrikler! Artık Excel'deki TOPLA ve EĞER mantığını, DAX'in sütun ve ölçü ayrımıyla birleştirebiliyorsunuz. Bir sonraki derste bu ölçüleri farklı görsellerde kullanarak raporunuzu etkileşimli hale getireceksiniz.

Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol