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:
| İfade | Sonuç | Neden önemli? |
|---|---|---|
BLANK() + 1 | 1 | Toplama ve çıkarmada BLANK, 0 gibi davranır. [Net Satış] - [Satış GY] ilk yılda tüm satışı “büyüme” gösterir. |
BLANK() * 2 | BLANK | Ç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() = 0 | TRUE | = karşılaştırmasında BLANK; 0 ve "" ile eşittir. |
BLANK() == 0 | FALSE | == katı eşitliktir; BLANK yalnızca BLANK’e eşittir. |
ISBLANK(0) | FALSE | 0 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)
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ı?
1 / 0hata değildir: sonuç sonsuz (∞) olur.0 / 0ise NaN.DIVIDE(1, 0)BLANK döndürür; üçüncü bağımsız değişkenle başka bir değer verebilirsin:DIVIDE(a, b, 0).VALUE("12a")gerçek bir hatadır: metin sayıya çevrilemez.
Güvenli Sayı = IFERROR(VALUE("12a"), 0)
IFERROR 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
- 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. - 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. - Sorguya dök: DAX sorgu görünümünde (ya da DAX Studio’da) tablo değişkenini
EVALUATEile doğrudan listele. - 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ı
| Mesaj | Neden | Çö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 toplam | Toplam 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çü]). |