Ana içeriğe geç
Kesit Power BI
Orta · DAX Temelleri

Hızlı ölçüler (quick measures) ve Copilot ile DAX

Kod yazmadan ölçü üretmek; üretilen DAX'ı okumak, düzeltmek ve ne zaman güvenmemek gerektiği.

Uygulamada aç, 8 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ç.

Hızlı ölçüler

Modelleme → Hızlı ölçü (ya da bir ölçüye sağ tık → Yeni hızlı ölçü). Bir hesaplama türü seçip alanları kutulara sürüklersin; Power BI DAX'ı yazar.

KategoriÖrnekler
Kategori başına toplamaKategori başına ortalama, varyans, maksimum
FiltrelerFiltrelenmiş değer, filtrelenmiş değerden fark, yüzde fark, yeni müşterilerin satışı
Zaman zekâsıYTD, QTD, MTD, yıldan yıla değişim, hareketli ortalama
ToplamlarKümülatif toplam, kategori toplamı
MatematikToplama, çıkarma, çarpma, bölme, yüzde fark, korelasyon katsayısı
MetinYıldız derecelendirmesi, değer listesi (birleştirilmiş)

Oluşan ölçü normal bir ölçüdür: formül çubuğunda açıp okuyabilir, değiştirebilirsin. Örneğin “Yıldan yıla değişim” şuna benzer bir kod üretir:

Net Satış YoY% =
VAR __PREV_YEAR = CALCULATE([Net Satış], DATEADD(Tarih[Tarih], -1, YEAR))
RETURN DIVIDE([Net Satış] - __PREV_YEAR, __PREV_YEAR)

Copilot ile DAX

DAX sorgu görünümünde ve ölçü düzenleyicide Copilot'a doğal dille istek yazarsın (“geçen yılın aynı dönemine göre büyüme”). Copilot ölçüyü önerir, açıklar; DAX sorgu görünümünde test edip modele ekleyebilirsin. Ayrıca Copilot rapor sayfası önerebilir, anlatı görseli oluşturabilir ve anlam modelini özetleyebilir (PL-300'de bu beceriler ölçülüyor).

Güven ama doğrulaHızlı ölçü ve Copilot, modeli tanımadan yazar: iptalleri dahil etmek, yanlış tarih sütununu kullanmak, toplam satırında yanlış sonuç vermek sık görülür. Her üretilen ölçüyü bir matriste toplam satırıyla birlikte kontrol et. Ölçüyü anlamadan rapora koyma.

Kontrol listesi

  1. Doğru temel ölçüyü mü kullanıyor? ([Toplam Satış] mı [Net Satış] mı?)
  2. Tarih tablosundaki sütunu mu kullanıyor, olgu tablosundakini mi?
  3. Toplam satırında ve boş dönemlerde ne veriyor?
  4. Adını ve biçimini ekip standardına göre düzelt (ör. __PREV_YEAR yerine GecenYil).
Uzmanlaş

Hızlı ölçünün ürettiği kodu okumak

Hızlı ölçü (Quick measure) kodu sen yazmasan da sorumluluğu sende. Üretilen kod genellikle doğrudur, ama modelini tanımaz. Üç tipik kalıbı okuyup iyileştirelim.

1. Kategori başına ortalama

“Kategori başına ortalama” hızlı ölçüsüne Satislar[Tutar] sütununu ve Urunler[Kategori] alanını sürüklersen şuna benzer bir kod alırsın:

Tutar ortalaması Kategori başına =
AVERAGEX(
    KEEPFILTERS(VALUES(Urunler[Kategori])),
    CALCULATE(SUM(Satislar[Tutar]))
)

Okuma: kategorileri dolaş (KEEPFILTERS dış kategori filtresini koru demek), her kategoride tutarı topla, ortalamasını al. Sorunlar modelle ilgili: SUM(Satislar[Tutar]) iptalleri de içerir; sonuç 192.313 ₺. Şirketin kuralına uyan [Net Satış] ile 178.682 ₺. Ayrıca Urunler[Kategori] hedef tablosunu süzmez; hedefle aynı görselde kullanılacaksa paylaşılan Kategoriler boyutu gerekir (Hedef ve gerçekleşen dersi). İyileştirilmiş hâli:

Kategori Başına Ortalama =
AVERAGEX(VALUES(Kategoriler[Kategori]), [Net Satış])

2. Filtrelenmiş değerden yüzde fark

“Web kanalına göre yüzde fark” hızlı ölçüsü, temel değeri ve karşılaştırılan değeri iki değişkene koyar:

Tutar Web’den fark % =
VAR __BASELINE_VALUE = CALCULATE(SUM(Satislar[Tutar]), Satislar[Kanal] IN { "Web" })
VAR __VALUE_TO_COMPARE = SUM(Satislar[Tutar])
RETURN
    IF(NOT ISBLANK(__VALUE_TO_COMPARE), DIVIDE(__VALUE_TO_COMPARE - __BASELINE_VALUE, __BASELINE_VALUE))

Yapı doğru, ama yine ham tutar kullanılmış. Mobil satırında +%23,0 gösterir; net satışla doğru değer +%31,2. Mağaza’da −%59,5 yerine −%57,7. Fark küçük görünebilir, ama yönetim sunumunda “Mobil, Web’den %23 büyük” ile “%31 büyük” farklı kararlara götürür. İyileştirme: SUM(Satislar[Tutar]) yerine [Net Satış], değişken adlarında da ekip standardı (WebSatisi, Satis).

3. Kümülatif toplam

Kümülatif toplam hızlı ölçüsü ALLSELECTED ve ISONORAFTER ile bir filtre kurar. Aynı mantığı daha okunur şekilde şöyle yazabilirsin:

Seçim İçi Kümülatif =
CALCULATE(
    [Net Satış],
    FILTER(ALLSELECTED(Tarih[Tarih]), Tarih[Tarih] <= MAX(Tarih[Tarih]))
)

Önemli davranış: ALLSELECTED yüzünden toplam, kullanıcının seçtiği dönemin başından başlar. Dilimleyicide 2023–2024 seçiliyse 2024 satırı 1.147.935 ₺ gösterir. Hazır [Kümülatif Satış] ise ALL kullandığı için 2022’yi de katar ve 1.250.772 ₺ gösterir. Hızlı ölçü sana hangisini istediğini sormaz; sen karar ver.

Copilot ile ölçü yazdırıp denetlemek

DAX sorgu görünümünde Copilot (Ctrl+I) doğal dilden sorgu yazabilir, seçili bir sorguyu açıklayabilir (“Explain this query”) ve bir DAX kavramını anlatabilir. Önerilen sorguyu çalıştırır (Run), beğenirsen sekmeye eklersin (Keep query). Bu özellik Fabric kapasitesi ve yönetici ayarları gerektirir.

Copilot modelin meta verisini görür: tablo, sütun ve ölçü adları ile açıklamaları. Verinin kendisini okumaz. Bu yüzden iki şey çok önemli:

  • Açıklamalar: ölçü ve sütun açıklamalarına iş kuralını yaz: “Net satış: iptal edilen siparişler hariç tutar”. Açıklamanın yalnızca ilk 200 karakteri kullanılır; kuralı başa koy.
  • Yapay zekâ için verileri hazırla (Prep data for AI): modele yapay zekâ talimatları ekleyerek “satış dendiğinde [Net Satış] ölçüsünü kullan” gibi kuralları Copilot’a kalıcı olarak öğretebilirsin.

İyi bir istem, modelin adlarını kullanır ve beklenen sonucu tarif eder: “[Net Satış] ölçüsünü kullanarak her kategori için Web kanalının payını hesaplayan bir ölçü yaz; payda kategorinin tüm kanallardaki net satışı olsun.” Sonra öneriyi bilinen bir sayıyla test et:

EVALUATE
SUMMARIZECOLUMNS(
    Satislar[Kanal],
    "Net", [Net Satış],
    "Web'e göre fark %", DIVIDE([Net Satış] - CALCULATE([Net Satış], Satislar[Kanal] = "Web"), CALCULATE([Net Satış], Satislar[Kanal] = "Web"))
)
Üretilen ölçüyü kabul etmeden önce1) Temel ölçü doğru mu ([Net Satış] mı, ham sütun mu)? 2) Boyut sütunu paylaşılan boyuttan mı? 3) Bilinen bir sayıyla eşleşiyor mu (ör. toplam net satış 1.250.772 ₺)? 4) Toplam satırında ve boş dönemde ne veriyor? 5) Dilimleyici seçimi davranışı (ALL mı, ALLSELECTED mı) bilinçli mi? 6) Adı, biçimi ve açıklaması ekip standardına uygun mu?
Alıştırmalara geç (8)