Power BI'da DAX ile Ölçü (Measure) Yazmayı Öğrenme Rehberi
Power BI'da DAX ölçüleri adım adım: ölçü ile hesaplanmış sütun farkı, filtre bağlamı, CALCULATE, zaman zekası ve performans ipuçları.
DAX ve ölçü nedir?
DAX (Data Analysis Expressions), Power BI ve benzeri Microsoft araçlarında hesaplama yazmak için kullanılan formül dilidir. Ölçü (measure) ise raporda kullanıcının seçtiği filtrelere göre anlık hesaplanan bir değerdir. Toplam satış, ortalama sipariş tutarı ya da geçen yıla göre değişim birer ölçü olabilir.
Ölçünün temel özelliği, sabit bir değer saklamaması, görüntülendiği bağlama göre yeniden hesaplanmasıdır. Aynı "Toplam Satış" ölçüsü, bir tabloda her ürün için ayrı ayrı, bir kartta ise tüm veri için tek bir sonuç verir. Bu esneklik DAX'ın gücüdür, ama ilk başta kafa karıştırır; çünkü sonucu belirleyen formülün kendisi kadar, formülün çalıştığı bağlamdır.
Ölçü mü, hesaplanmış sütun mu?
DAX ile iki tür hesaplama yapılır: ölçüler ve hesaplanmış sütunlar. Hesaplanmış sütun tabloya yeni bir sütun ekler, değeri veri yüklenirken satır satır hesaplanır ve modelde saklanır. Ölçü ise sorgu anında, görselin bağlamına göre hesaplanır.
Pratik kural şudur: Satır düzeyinde bir değer gerekiyorsa (örneğin bir kategorileme) ve bu değerle filtrelemek ya da gruplamak istiyorsanız hesaplanmış sütun uygundur. Toplama, oran ve karşılaştırma gibi kullanıcının seçimine göre değişen sonuçlar ise ölçü olmalıdır. Yeni başlayanların sık yaptığı hata, her şeyi hesaplanmış sütunla çözmeye çalışıp modeli gereksiz şişirmektir.
Filtre bağlamı ve CALCULATE
DAX öğrenmenin kilit noktası bağlamı anlamaktır. Satır bağlamı, bir formülün tablonun tek bir satırında çalıştığı durumu; filtre bağlamı ise raporda seçilen filtrelerin, dilimleyicilerin ve satır-sütun gruplamalarının veriyi daralttığı durumu ifade eder. Bir ölçü, bulunduğu hücrenin filtre bağlamına göre sonuç üretir.
CALCULATE, bu bağlamı değiştirmeye yarayan en önemli fonksiyondur. Bir ifadeyi, siz belirlediğiniz ek filtrelerle ya da kaldırdığınız filtrelerle yeniden hesaplamanızı sağlar. Örneğin toplam satışı yalnızca belirli bir bölge için hesaplayan ya da bölge filtresini yok sayarak toplam içindeki payı bulan bir ölçü, CALCULATE ile kurulur. Bağlamı çizerek ve küçük tablolarda elle deneyerek öğrenmek, formülü ezberlemekten çok daha kalıcıdır.
Örnek bir ölçü akışı: önce toplam satışı temel ölçü olarak tanımlayın, ardından bu ölçüyü diğer ölçülerin içinde kullanın: bölge payı, geçen yılın aynı dönemi, hedefle fark. Temel ölçüyü ayrı tutmak, tanım değiştiğinde yalnızca tek yerin güncellenmesini sağlar ve karmaşık formülleri okunur kılar.
Zaman zekası ve dönem analizi
Raporlamada en çok istenen hesaplamalar dönemlere dayanır: yılbaşından bugüne toplam, geçen yılın aynı dönemi, önceki aya göre değişim. DAX bu işler için zaman zekası fonksiyonları sunar. Bunların sağlıklı çalışması için modelde sürekli ve tekrarsız tarihleri içeren bir tarih tablosu bulunmalı ve bu tablo olgu tablosuna doğru bağlanmalıdır.
Örneğin bir yönetici panosunda geçen yılın aynı dönemiyle karşılaştırma yapılacaksa, tarih tablosu eksik günler içeriyorsa sonuçlar sessizce yanlış çıkar. Bu nedenle önce modeli düzgün kurmak, sonra zaman hesaplarını yazmak gerekir. Formül doğru olsa bile yanlış model yanlış sonuç üretir.
Sıralama, sınıflandırma ve karmaşık analizler
Temel ölçülerden sonra sıralama, ilk n değer, Pareto gibi analizler ve koşullu sınıflandırmalar gelir. Bu tür ölçüler genellikle birden fazla fonksiyonun birleşimidir: bir tabloyu sanal olarak oluşturur, üzerinde hesaplama yapar ve sonucu tek bir değere indirger. Karmaşık ölçüleri yazarken küçük parçalara bölmek, değişkenler kullanmak ve ara sonuçları ayrı ölçülerde test etmek hataları ayıklamayı kolaylaştırır.
Hesaplama grupları gibi ileri kalıplar, aynı mantığı (örneğin zaman karşılaştırmasını) birçok ölçüye tekrar tekrar yazmak yerine tek yerden uygulamaya yarar. Bu konu temel bağlam mantığı oturmadan zor olduğu için ileri aşamaya bırakılmalıdır.
Ölçülere anlaşılır adlar vermek, biçimlendirmeyi (para birimi, yüzde) ölçü düzeyinde ayarlamak ve ilgili ölçüleri klasörlerde gruplamak, raporu devralan kişinin işini kolaylaştırır. Bir ölçü ne işe yaradığını adından belli etmiyorsa kısa bir açıklama eklemek de iyi bir alışkanlıktır.
Performans optimizasyonu ve güvenlik
Büyük veri modellerinde ölçüler yavaş çalışabilir. Gereksiz sütunları modele almamak, ilişkileri sade tutmak, tekrar eden hesaplamaları değişkenle bir kez yapmak ve yüksek kardinaliteli sütunlardan kaçınmak performansı iyileştirir. Performans sorunlarını tahminle değil, ölçerek bulmak gerekir; Power BI'ın performans analiz araçlarıyla hangi görselin ve hangi sorgunun yavaş olduğu görülebilir.
Satır düzeyi güvenlik (RLS), kullanıcının yalnızca yetkili olduğu veriyi görmesini sağlar. Örneğin bölge müdürü yalnızca kendi bölgesini görür. Bu kuralların DAX filtreleriyle tanımlandığını ve test edilmesi gerektiğini bilmek, raporu paylaşmadan önce önemlidir.
Öğrenme yolu ve sık hatalar
Önerilen sıra: veri modelini ve ilişkileri anlamak, basit toplama ölçüleri yazmak, bağlam kavramını oturtmak, CALCULATE ile filtre değiştirmek, tarih tablosuyla zaman hesapları yapmak, sonra ileri kalıplara geçmek.
Sık hatalar: • Veri modelini düzenlemeden doğrudan formül yazmaya başlamak • Her hesabı hesaplanmış sütunla çözmek • Bağlamı anlamadan örnek formülleri kopyalamak • Sürekli tarih tablosu kullanmadan zaman hesabı yapmak • Karmaşık ölçüyü parçalara bölmeden yazıp hata ayıklayamamak
Mindset programlarında DAX
Mindset'in Power BI İleri Düzey ve DAX programı şu modülleri içerir: DAX diline derinlemesine giriş, CALCULATE ve filtre bağlamında ustalaşmak, zaman zekası ve dönem analizi, sıralama, sınıflandırma ve karmaşık analizler, hesaplama grupları ve ileri kalıplar, performans optimizasyonu, güvenlik, RLS ve yetkilendirme.
İlgili Mindset programı
Power BI İleri Düzey ve DAX
Sık sorulan sorular
DAX öğrenmek için Excel bilmek yeterli mi?
Excel formül bilgisi iyi bir başlangıçtır, çünkü fonksiyon mantığı tanıdık gelir. Ancak DAX, hücre yerine tablo ve ilişki üzerinde çalışır ve filtre bağlamı Excel'de karşılığı olmayan bir kavramdır. Bu yüzden veri modelleme temellerini ayrıca öğrenmek gerekir. Excel bilgisi hızlandırır, ama bağlamı yeniden kurmanızı gerektirir.
DAX ile SQL aynı şey mi?
Hayır. SQL veritabanından veri çekmek ve düzenlemek için kullanılan sorgu dilidir; DAX ise Power BI veri modeli üzerinde hesaplama yapmak için kullanılan formül dilidir. Benzer yönleri olsa da çalışma mantığı farklıdır. İkisini bilmek, veriyi hem hazırlama hem raporlama aşamasında esneklik sağlar.
Ölçülerim yanlış sonuç veriyorsa nereye bakmalıyım?
Önce veri modelindeki ilişkilere ve tarih tablosuna bakın; çoğu hata formülde değil modeldedir. Sonra ölçüyü basit parçalara bölüp her birini ayrı bir kartta test edin. Filtre bağlamını görmek için ölçüyü farklı filtre kombinasyonlarıyla tabloya yerleştirmek, beklenmeyen sonucun nerede çıktığını gösterir.
Zaman zekası fonksiyonları için tarih tablosu şart mı?
Pratikte evet. Zaman zekası fonksiyonları, kesintisiz bir tarih sütunu içeren ve doğru ilişkilendirilmiş bir tarih tablosunu bekler. Eksik günler ya da tekrarlı tarihler hatalı sonuç üretir. Tarih tablosunu bir kez doğru kurmak, sonraki tüm dönem hesaplarını güvenilir kılar. Tarih tablosu ayrıca ay, çeyrek ve yıl gibi gruplamalar için de tek bir güvenilir kaynak sağlar.
DAX çalışmalarımı nasıl pekiştirebilirim?
Gerçek bir veri setiyle bir yönetici panosu hazırlayın: toplam, oran, geçen yıla göre değişim ve ilk n ürün gibi ölçüler yazın. Her ölçüyü hangi bağlamda hangi sonucu verdiğini açıklayarak belgeleyin. Başka birinin yazdığı ölçüleri okuyup yorumlamak da bağlam mantığını güçlendirir.
İlgili rehberler
Kategori: Veri Analitiği ve İş Zekası