- RANKX ile TOPN aynı işi yapmaz
- RANKX ile ürün sıralama ölçüsü yazmak
- ALL, ALLSELECTED ve ALLEXCEPT: sıralama neye göre yapılıyor?
- Eşit değerler ve boş satırlar
- TOPN ile ilk N kaydı seçmek
- N değerini kullanıcıya bırakmak
- Sık yapılan hatalar ve kontrol listesi
- Bu beceriyi Mindset programlarında nerede çalışırsınız
- Sık sorulan sorular
DAX ile sıralama ve ilk N analizi: RANKX ve TOPN adım adım
RANKX ile sıra numarası, TOPN ile ilk N listesi: filtre bağlamı, eşit değerler, ALL ve ALLSELECTED seçimi ve sık yapılan hatalar örneklerle anlatılıyor.
RANKX ile TOPN aynı işi yapmaz
Power BI'da sıralama ihtiyacı iki farklı biçimde ortaya çıkar. Birincisi her satıra bir sıra numarası yazmaktır: bu ürün satışta kaçıncı, bu bölge kaçıncı. Bunu RANKX yapar ve sonucu tek bir sayı olarak döndürür. İkincisi yalnızca en yüksek değerli kayıtları göstermektir: en çok satan ürünler, en büyük müşteriler. Bunu TOPN yapar ve sonucu bir tablo olarak döndürür.
Bu fark önemlidir, çünkü RANKX bir ölçü içinde skaler değer üretir, TOPN ise genellikle CALCULATE gibi bir fonksiyonun filtre argümanına girer ya da bir hesaplanmış tabloyu besler. Rapor yazarının ilk sorusu şu olmalı: görselde sıra numarasını mı görmek istiyorum, yoksa listeyi kısıtlamak mı? Cevap hangi fonksiyonla başlayacağınızı belirler.
Görsel düzeyi Top N filtresi de vardır ve basit raporlarda yeterlidir. DAX gerektiren durumlar, sıra numarasının başka bir hesaba girdiği, N değerinin kullanıcı tarafından değiştirildiği ya da ilk N toplamının toplam içindeki payının hesaplandığı durumlardır.
RANKX ile ürün sıralama ölçüsü yazmak
Önce temel bir ölçü gerekir. Örneğin satış toplamı için şu ölçü tanımlıdır:
Toplam Satış = SUM(Satışlar[Tutar])
Sıra ölçüsü bunun üzerine kurulur:
Ürün Sırası = RANKX(ALL(Ürünler[Ürün Adı]), [Toplam Satış], , DESC, DENSE)
Argümanların anlamı sırayla şöyledir: • İlk argüman sıralanacak tablo ya da sütundur. Burada ALL ile ürün sütunundaki tüm değerler alınır. • İkinci argüman her satır için hesaplanacak ifadedir: karşılaştırma ölçüsü. • Üçüncü argüman boş bırakılmıştır. Boşsa RANKX, o anki satırın bağlamındaki değeri kullanır, bu da çoğu durumda istenen davranıştır. • Dördüncü argüman DESC büyükten küçüğe sıralar, ASC küçükten büyüğe. • Beşinci argüman eşit değerlerin nasıl numaralanacağını belirler.
Bu ölçüyü bir tabloya ürün adıyla birlikte koyduğunuzda her ürünün yanında sırası görünür. Ürün sütunu olmayan bir kart görselinde ise ölçü anlamsız bir değer döndürür, çünkü o bağlamda sıralanacak tek bir ürün yoktur. Sıra ölçüleri satır düzeyinde görsellerde anlamlıdır.
ALL, ALLSELECTED ve ALLEXCEPT: sıralama neye göre yapılıyor?
RANKX'in ilk argümanı, kaç kişilik bir yarışma olduğunu belirler. ALL(Ürünler[Ürün Adı]) kullanırsanız rapordaki dilimleyici ve filtreler yok sayılır, her ürün tüm ürünler içinde sıralanır. Kullanıcı bir kategori seçtiğinde bile sıra numaraları değişmez. Bazen bu istenir: genel sıralama sabit kalsın.
Çoğu raporda ise kullanıcı bir kategoriyi ya da bölgeyi filtrelediğinde sıranın yalnızca görünen ürünler arasında hesaplanması beklenir. Bunun için ALLSELECTED kullanılır:
Ürün Sırası (Seçime Göre) = RANKX(ALLSELECTED(Ürünler[Ürün Adı]), [Toplam Satış], , DESC, DENSE)
ALLSELECTED, görsel içi filtreleri kaldırır ama dilimleyici gibi dış seçimleri korur. Yani kullanıcı bir yıl seçtiyse sıra o yıl içindeki satışa göre hesaplanır.
Bir üçüncü durum, belirli bir boyut içinde sıralamadır: her kategorinin kendi içinde ürün sırası gibi. Burada ilk argümanı kategori filtresini koruyacak şekilde kurarsınız, örneğin ALLEXCEPT(Ürünler, Ürünler[Kategori]) ile tablo bazında tüm filtreleri kaldırıp kategoriyi korursunuz. Bu seçimlerin farkını ayrıca ele alan sayfa, ALL ve ALLEXCEPT fonksiyonlarını daha ayrıntılı anlatır.
Eşit değerler ve boş satırlar
Aynı satış tutarına sahip iki ürün olduğunda ne olacağını sıralama türü argümanı belirler. SKIP varsayılandır: iki ürün aynı sırayı alırsa sonraki sıra numarası atlanır. DENSE ise atlama yapmaz ve numaralar kesintisiz devam eder. Raporda ilk N listesi gösteriyorsanız DENSE bazen beklenenden fazla satır getirir, SKIP ise sıra numarasıyla filtrelediğinizde daha tutarlı davranır. Karar, raporun okuyucusunun sıra numarasından ne anlayacağına bağlıdır.
Bir diğer tuzak boş değerlerdir. Hiç satışı olmayan ürünler için ölçü boş döner. Bu ürünler sıralamada son sıraya düşebilir ya da görselden tamamen kaybolabilir. Satışı olmayan ürünlerin de listelenmesi gerekiyorsa karşılaştırma ölçüsünü sıfır dönecek biçimde yazmak gerekir. Bu seçim, sıralamanın kapsamını da değiştirir: ürünün satışı yoksa yarışmaya girmesi mi, dışarıda kalması mı doğrudur? Bunu raporu isteyen kişiyle netleştirin.
Eşitlikleri tamamen kırmak gerekiyorsa ölçüye ikinci bir kriter eklenir. Örneğin satış tutarına çok küçük bir katsayıyla ürün kodunun sırası eklenir. Bu teknik yaygındır ama ölçüyü okumayı zorlaştırır; yalnızca gerçekten benzersiz sıra gerektiğinde kullanın.
TOPN ile ilk N kaydı seçmek
TOPN üç temel parçaya sahiptir: kaç kayıt, hangi tablo, hangi ifadeye göre. İlk N ürünün satış toplamı şöyle yazılır:
İlk N Satış = CALCULATE([Toplam Satış], TOPN([Seçilen N], ALL(Ürünler[Ürün Adı]), [Toplam Satış], DESC))
TOPN, satışa göre en yüksek ürünleri tablo olarak döndürür. CALCULATE bu tabloyu filtre olarak kullanır ve toplam satışı yalnızca o ürünler için hesaplar. Böylece ilk N ürünün toplam ciroyu ve toplam içindeki payı bulunabilir:
İlk N Payı = DIVIDE([İlk N Satış], CALCULATE([Toplam Satış], ALL(Ürünler)))
TOPN'un bilinen bir özelliği, eşitlik durumunda N'den fazla satır döndürebilmesidir. Sınırdaki sıralarda iki ürünün satışı aynıysa ikisi de gelir ve sonuç N'den bir satır fazla olur. Bu davranış çoğu zaman sorun yaratmaz ama kart görselinde beklenen sayıdan farklı kayıt görürseniz ilk bakılacak yer budur.
TOPN'un bir de görsel düzeyi Top N filtresiyle farkı vardır: filtre yalnızca o görselin satırlarını sınırlar, ölçülerin diğer görsellerde kullanılmasını sağlamaz. TOPN ise ölçünün içinde olduğu için kart, grafik ve tablo aynı mantığı paylaşır.
N değerini kullanıcıya bırakmak
Sabit bir N yazmak yerine kullanıcının seçtiği değeri okumak, raporu esnek yapar. Bunun için sayısal bir parametre oluşturulur: Modelleme sekmesinden yeni parametre eklenir, aralık ve artış belirlenir, dilimleyici olarak sayfaya konur. Power BI parametre için bir tablo ve bir ölçü üretir. Bu ölçüyü, ilk N hesaplarında şu biçimde kullanabilirsiniz:
Seçilen N = SELECTEDVALUE('N Parametresi'[N Parametresi Değeri], ilk değer)
SELECTEDVALUE, dilimleyicide tek değer seçiliyse onu, hiç seçim yoksa ikinci argümandaki varsayılanı döndürür. Varsayılanı vermeyi unutursanız kullanıcı dilimleyiciyi temizlediğinde ölçü boş döner ve görseller boşalır.
Sıra ölçüsüyle birleştirdiğinizde şu kalıp çok işe yarar: sıra ölçüsü seçilen N'den küçük ya da eşitse değeri, değilse boş döndürür. Görselde bu ölçüyü kullandığınızda yalnızca ilk N kayıt satır olarak kalır, geri kalanlar kendiliğinden gizlenir. Böylece görsel düzeyinde ayrıca Top N filtresi tanımlamanız gerekmez ve N kullanıcının elinde olur.
Sık yapılan hatalar ve kontrol listesi
Sıralama ölçüleri yanlış sonuç verdiğinde nedenler genellikle benzerdir: • Sıra ölçüsünü ürün sütunu olmayan bir görsele koymak. Ölçü her zaman bir satır bağlamı bekler. • ALL yerine ALLSELECTED gerektiği yerde ALL kullanmak: kullanıcı filtre seçse de sıra değişmez, rapor bozuk görünür. • Toplam satırında anlamsız sıra görmek. Toplam satırında tek ürün bağlamı yoktur; ölçüyü HASONEFILTER ya da ISINSCOPE ile kontrol edip toplam satırında boş döndürmek iyi bir pratiktir. • Karşılaştırma ölçüsünün kendisinin yanlış bağlamda hesaplanması. Önce [Toplam Satış] ölçüsünün tabloda doğru çıktığını doğrulayın, sonra sıralamaya geçin. • Büyük tablolarda RANKX'i hesaplanmış sütun olarak yazmak: veri yenilenince hesaplanır ve filtrelere tepki vermez. Dinamik sıra için ölçü kullanın.
Kontrol için yöntem basittir: aynı tabloya toplam satış ve sıra ölçüsünü birlikte koyun, toplam satışa göre sıralayın ve sıra sütununun büyükten küçüğe birden başlayıp ilerlediğini gözle doğrulayın. Dilimleyici seçimiyle bu davranışı sınayın. Performans sorunu varsa Performans Analizörü ile ölçünün süresine bakın; çok sayıda ürünü olan modellerde RANKX her satır için yeniden değerlendirildiği için maliyetlidir.
Bu beceriyi Mindset programlarında nerede çalışırsınız
Sıralama ve sınıflandırma, Power BI İleri Düzey ve DAX eğitiminde 'Sıralama, Sınıflandırma ve Karmaşık Analizler' modülünün konusudur; aynı eğitimde CALCULATE ve filtre bağlamı modülü RANKX ve TOPN'un dayandığı bağlam mantığını işler. Satış analisti, finans raporlama uzmanı ya da ürün yöneticisi gibi 'hangi ürün, hangi müşteri, hangi bölge öne çıkıyor' sorusuna her gün cevap arayan roller için uygundur.
Kurumsal ekiplerde bu konu, haftalık satış ve performans raporlarını Excel'de elle sıralamaktan kurtulup tek bir ölçü kümesine bağlamak isteyen ekipler için işe yarar.
İlgili Mindset programı
Power BI İleri Düzey ve DAX
Sık sorulan sorular
RANKX sonucu neden her satırda aynı sayıyı veriyor?
Genellikle ilk argümandaki tablo yanlış kurulmuştur ya da ölçü satır bağlamı olmayan bir görselde çalışıyordur. Sıra ölçüsünü ürün adı gibi bir sütunun bulunduğu tabloya koyun. Karşılaştırma ölçüsünün her satırda farklı değer döndürdüğünü ayrıca doğrulayın; ölçü sabitse sıra da sabit çıkar.
Görsel düzeyi Top N filtresi mi, TOPN fonksiyonu mu kullanılmalı?
Tek bir grafikte basit bir ilk N listesi yeterliyse görsel filtresi hızlıdır. İlk N toplamı, toplam içindeki pay ya da kullanıcının seçtiği N değeri gerekiyorsa TOPN fonksiyonu ile ölçü yazın. Ölçü hem kart hem grafik hem tabloda aynı mantıkla çalışır.
RANKX hesaplanmış sütun olarak yazılabilir mi?
Yazılabilir ama dilimleyiciye ve filtreye tepki vermez, çünkü veri yenilendiğinde bir kez hesaplanır. Kullanıcı seçimine göre değişen bir sıra gerekiyorsa ölçü kullanılmalıdır. Sabit bir genel sıra, örneğin yıl sonu sınıflaması gerekiyorsa hesaplanmış sütun da kabul edilebilir.
Toplam satırında sıra neden anlamsız görünüyor?
Toplam satırında tek bir ürün bağlamı yoktur, bu yüzden RANKX tüm ürünleri tek değer gibi değerlendirir. Ölçüyü ISINSCOPE ile sarmalayıp yalnızca ürün düzeyinde sonuç döndürmek, toplam satırında boş bırakmak yaygın çözümdür.
Sıralamayı iki ölçüye göre yapabilir miyim?
Evet. Eşit durumda ikinci kriterin devreye girmesi için karşılaştırma ifadesine ikinci ölçüyü çok küçük bir ağırlıkla eklersiniz. Alternatif olarak önce ana ölçüyle sıralayıp eşitlikleri ayrı bir yardımcı ölçüyle kırarsınız. Ölçü okunabilirliğini korumak için yorum satırı eklemeniz yararlı olur.
İlgili rehberler
Kategori: Veri Analitiği ve İş Zekası