Temel toplayıcılar
| Fonksiyon | Ne yapar? | Örnek |
|---|---|---|
SUM | Sütundaki sayıları toplar | SUM(Satislar[Tutar]) |
AVERAGE | Aritmetik ortalama | AVERAGE(Satislar[BirimFiyat]) |
MIN / MAX | En küçük / en büyük değer (tarihlerde de çalışır) | MAX(Satislar[Tarih]) |
COUNTROWS | Tablodaki satır sayısı | COUNTROWS(Satislar) |
DISTINCTCOUNT | Sütundaki farklı değer sayısı | DISTINCTCOUNT(Satislar[MusteriNo]) |
COUNT / COUNTA | Boş olmayan sayısal / tüm değerleri sayar | COUNTA(Musteriler[Sehir]) |
Satır mı, sipariş mi?
Satislar tablosunda her satır bir sipariş satırıdır. Bir siparişte iki ürün varsa iki satır olur. Bu yüzden:
Satır Sayısı = COUNTROWS(Satislar) Sipariş Sayısı = DISTINCTCOUNT(Satislar[SiparisNo])
İkisi farklı sonuç verir. “Kaç sipariş aldık?” sorusunun cevabı ikincisidir. Tanecik (grain) dediğimiz şey budur: tablonun bir satırı neyi temsil ediyor?
Güvenli bölme: DIVIDE
Ortalama Sepet = DIVIDE(SUM(Satislar[Tutar]), DISTINCTCOUNT(Satislar[SiparisNo]))
/ işleci payda sıfırsa sonsuz ya da hata üretir. DIVIDE(pay, payda, [alternatif]) ise payda sıfır ya da boşsa boş (ya da verdiğin alternatif değeri) döner. Görselde boş değerli satırlar gizlenir; bu genellikle istediğin davranıştır.
Ölçüleri yeniden kullan
Ortalama Sepet = DIVIDE([Toplam Satış], [Sipariş Sayısı])
Bir kez tanımladığın ölçüyü başka ölçülerde çağırmak, formülü kısa ve tutarlı tutar. Toplam Satış'ın tanımı değişirse (ör. iptaller hariç tutulursa) Ortalama Sepet de kendiliğinden güncellenir.
Hangi soru, hangi fonksiyon?
Doğru toplayıcıyı seçmek için önce soruyu cümle olarak yaz. Cümledeki anahtar kelime fonksiyonu söyler.
| Soru cümlesi | Fonksiyon | Bu modelde sonuç |
|---|---|---|
| “Toplam ne kadar sattık?” | SUM(Satislar[Tutar]) | 1.346.190 ₺ (iptaller dahil) |
| “Kaç satır kayıt var?” | COUNTROWS(Satislar) | 1.620 |
| “Kaç sipariş aldık?” | DISTINCTCOUNT(Satislar[SiparisNo]) | 910 |
| “Kaç farklı müşteri aldı?” | DISTINCTCOUNT(Satislar[MusteriNo]) | 136 |
| “Kaç farklı ürün satıldı?” | DISTINCTCOUNT(Satislar[UrunNo]) | 38 (katalogda 40 ürün var) |
| “Kaç satırda kargo günü dolu?” | COUNT(Satislar[KargoGun]) | 1.489 |
| “Bir satır ortalama kaç lira?” | AVERAGE(Satislar[Tutar]) | yaklaşık 831 ₺ |
Ortalama tuzağı: satır ortalaması sepet değildir
Satış müdürü “ortalama sepetimiz ne kadar?” diye soruyor. Aceleyle AVERAGE(Satislar[Tutar]) yazarsan yaklaşık 831 ₺ bulursun. Oysa doğru cevap toplam tutarın sipariş sayısına bölümüdür: 1.346.190 / 910 = yaklaşık 1.479 ₺.
Neden fark var? AVERAGE her satırı bir kez sayar. Bir siparişte üç ürün varsa o sipariş üç satırdır ve ortalamayı üç küçük parça olarak etkiler. “Sepet” ise siparişin tamamıdır. Kural: ortalama istendiğinde önce “neyin ortalaması?” diye sor. Cevap “satırın” değilse DIVIDE(toplam, sayım) kur.
Sayımlar toplanmaz
Bir matriste kategorilere göre müşteri sayısını gösterdin. Elektronik 98, Kitap 115, Ev & Yaşam 99… Alt alta toplarsan 649 eder. Ama toplam satırında 136 yazar. Hata yok: aynı müşteri hem kitap hem elektronik almış olabilir ve her iki satırda da sayılır. Toplam satırı ise müşterileri bir kez sayar.
Aynı şey yıllar için de geçerli: 2022'de 33, 2023'te 79, 2024'te 123 müşteri vardır; toplamları 235 eder ama üç yılda alışveriş yapan farklı müşteri sayısı 136'dır. DISTINCTCOUNT ile hesaplanan bir rakamı Excel'e alıp alt alta toplamak, iş hayatındaki en yaygın raporlama hatalarından biridir.
COUNT, COUNTA, COUNTROWS: boşlukları kim sayar?
Satislar tablosunda 1.620 satır var ama KargoGun sütunu 131 satırda boş. COUNTROWS(Satislar) 1.620, COUNT(Satislar[KargoGun]) 1.489 döndürür. COUNT yalnızca dolu (boş olmayan) değerleri sayar. “Kaç satır?” sorusu için COUNTROWS, “kaç satırda bu bilgi var?” sorusu için COUNT ya da COUNTA (metin sütunlarında) kullan. Boşlukların nedeni ve nasıl ele alınacağı BLANK, hatalar ve DAX'ta hata ayıklama dersinde.
Kargo Bilgisi Olan Satır = COUNT(Satislar[KargoGun]) Kargo Bilgisi Eksik Satır = COUNTROWS(Satislar) - [Kargo Bilgisi Olan Satır]