Ana içeriğe geç
Kesit Power BI
Orta · DAX Kalıpları

BLANK, hatalar ve DAX’ta hata ayıklama

BLANK’in aritmetikte ve karşılaştırmada davranışı, COALESCE ve ISBLANK, sıfıra bölme, IFERROR’ın tuzakları ve bir ölçüyü adım adım ayıklama yöntemi.

Uygulamada aç, 7 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

BLANK: “değer yok”

DAX’ta bir ölçünün hesaplayacak satırı yoksa sonuç BLANK olur. Hiç satılmamış bir ürünün [Net Satış]’ı 0 değil, BLANK’tir. Görseller BLANK olan satırları varsayılan olarak gizler: matriste hiç satmayan ürün görünmez. Bu çoğu zaman istenen davranıştır.

BLANK, SQL’deki NULL’a benzer ama aynı değildir. Aritmetikte ve karşılaştırmada kendine özgü kuralları var:

İfadeSonuçNeden önemli?
BLANK() + 11Toplama ve çıkarmada BLANK, 0 gibi davranır. [Net Satış] - [Satış GY] ilk yılda tüm satışı “büyüme” gösterir.
BLANK() * 2BLANKÇarpmada BLANK yayılır. Bölmede pay BLANK ise sonuç BLANK; payda BLANK ise 5 / BLANK sonsuz, 0 / BLANK NaN verir. Bu yüzden bölmede DIVIDE kullan.
BLANK() = 0TRUE= karşılaştırmasında BLANK; 0 ve "" ile eşittir.
BLANK() == 0FALSE== katı eşitliktir; BLANK yalnızca BLANK’e eşittir.
ISBLANK(0)FALSE0 bir değerdir; BLANK değildir.

BLANK’i yönetmek: ISBLANK ve COALESCE

Satış Değişimi =
VAR GY = [Satış GY]
RETURN IF(ISBLANK(GY), BLANK(), [Net Satış] - GY)

Geçen yıl verisi yoksa fark anlamsızdır; BLANK döndürmek görselde o hücreyi boş bırakır. COALESCE ise ilk BLANK olmayan değeri döndürür:

Net Satış (0'lı) = COALESCE([Net Satış], 0)
“+0” ve COALESCE tuzağıBir ölçü hiçbir zaman BLANK döndürmezse görsel, satır ve sütun alanlarının tüm kombinasyonlarını gösterir: 40 ürün × 150 müşteri tablosu 6.000 satıra çıkar ve yavaşlar. Sıfır göstermeyi yalnızca kart gibi tek değerli görsellerde ya da kombinasyonların anlamlı olduğu küçük matrislerde kullan.

Boş değerlere göre filtrelemek

Şehri Bilinmeyen Satış = CALCULATE([Net Satış], ISBLANK(Musteriler[Sehir]))

Veri kalitesi ölçüleri (“şehri boş müşterilerin cirosu”) raporda sorunun büyüklüğünü görünür kılar. Power Query’de sütun kalitesi aynı bilgiyi yükleme sırasında verir.

Hata mı, BLANK mı?

Güvenli Sayı = IFERROR(VALUE("12a"), 0)
IFERROR’ı alışkanlık hâline getirmeIFERROR ve ISERROR her satırda hatayı yakalamak için formül motorunda çalışır; ölçüyü yavaşlatır ve sorunu saklar. Bölme için DIVIDE, tür sorunları için Power Query’de doğru veri türü kullan. IFERROR(1/0, 0) beklediğin gibi 0 döndürmez; çünkü 1/0 bir hata değil, sonsuzdur.

Bir ölçüyü adım adım ayıklamak

  1. Böl: Uzun bir ölçüyü VAR’larla parçalara ayır. RETURN’den sonra sonucu değil, şüphelendiğin değişkeni yaz ve görsele bak.
  2. Tabloyu say: Değişken bir tabloysa RETURN COUNTROWS(Tablo) ile kaç satır kaldığını gör. Beklediğinden fazla ya da az satır, filtrenin yanlış olduğunu söyler.
  3. Sorguya dök: DAX sorgu görünümünde (ya da DAX Studio’da) tablo değişkenini EVALUATE ile doğrudan listele.
  4. Bağlamı yaz: Hücrenin filtre bağlamını bir “hata ayıklama” ölçüsüyle görünür yap: CONCATENATEX(VALUES(Tarih[Yil]), Tarih[Yil], ", ").
EVALUATE
VAR Iptaller = FILTER(Satislar, Satislar[Durum] = "İptal")
RETURN ROW("İptal satırı", COUNTROWS(Iptaller), "İptal tutarı", SUMX(Iptaller, Satislar[Tutar]))

Sık görülen hata mesajları

MesajNedenÇözüm
Birden çok değer içeren bir tablo, tek bir değer beklenen yerde kullanıldıBir sütunu ya da VALUES’u, birden çok satır dönebilecekken tek değer gibi kullandın.SELECTEDVALUE, MAX ya da HASONEVALUE ile koru.
Döngüsel bağımlılık algılandıİki hesaplanmış sütun (ya da sütun ile ilişki) birbirine dayanıyor.Hesabı ölçüye taşı ya da Power Query’ye al.
Sütun bulunamadı / geçerli bir satır için tek değer belirlenemiyorÖlçüde bir sütuna satır bağlamı olmadan başvurdun: = Satislar[Tutar] * 2.Toplama ya da yineleyici kullan: SUMX(Satislar, Satislar[Tutar] * 2).
Beklenmedik toplamToplam satırı, satırların toplamı değil, ölçünün toplam bağlamındaki sonucudur.Satır satır toplam isteniyorsa SUMX(VALUES(...), [Ölçü]).
Alıştırmalara geç (7)