Groups, Bins ile Gruplama

DAXPower BI

Power BI ile hazırlamış olalım veya olmayalım, tüm raporlarda kullanıcı ihtiyaç ve talepleri genelde çok benzer: Bir matristeki rakamları incelerken 1000 tane ürünü altalta görmek istemeyiz, en yüksek veya en düşük -diyelim- 30 ürüne odaklanmak isteriz.

Görsellerde görüntülediğimiz ürün kategorileri, satış ekibi, müşteri sınıfı ya da masraf merkezi gibi modelimizde bulunan sütunları/değerleri gruplamak da benzer ihtiyaçlardan biri.

Aşağıdaki gibi bir görselimiz var: İlk iki kategorinin satışları diğerlerine göre çok daha yüksek, bunları kendi içinde gruplamak istiyoruz. Benzer şekilde Bilgisayarlar ile TV ve Video kategorilerini de kendi içinde gruplamak istiyoruz. Kalanlara da “Diğer” demek istiyoruz diyelim.

Ev Aletleri ve Kameralar kategorilerini kontrol (CTRL) tuşunu basılı tutarak seçiyorum, sağ tıkladığımda karşıma çıkan menüden de “Group” ‘u seçiyorum.

Aşağıdaki şekilde değişti görsel.

Aynı işlemi Bilgisayarlar + TV ve Video için de yapıyorum.

Bu yaptığımız işlemler modeldeki “Kategoriler” tablosunda hesaplanmış sütuna benzeyen bir sütun oluşturdu.

Tek farkla, bu sütunun formül satırında bir şey yazmıyor!

Oluşturduğumuz grupları düzenlemek için “Kategoriler” tablosunda oluşan bu sütunu sağ tıklayıp ” “Edit Groups” diyebiliriz veya sütunu seçtikten sonra “Modelling” tabından “Edit Group” butonunu kullanabiliriz.

Açılan menu son derece anlaşılır ve pratik.

“Name” kısmında, oluşan sütunun ismini değiştirebilirim. “Groups and Members” altında gözüken oluşturduğumuz grupların isimlerini çift tıklayarak yeni isimler verebilirim. Gruplanmamış değerleri dilediğim bir gruba “Group” butonunu kullanarak ekleyebilirim.  Ya da mevcut gruplardaki değerleri “Ungroup” butonunu kullanarak gruptan çıkartabilirim. “Include Other Group” opsiyonu ile, gruplanmamış tüm değerlerin Diğer (Other) diye gruplanmasını sağlayabilirim.

Ve bu oluşan sütunu diğer tüm sütunlardan farksız bir şekilde kullanabilirim.

Power BI ‘a bu gruplama özelliği bu haliyle gelmeden önce bu durumlar için gene benzer şekilde hesaplanmış sütun oluşturuyorduk. Zaten bu da bir hesaplanmış sütun oluşturuyor ama formülünü göremiyoruz.

Kendi gruplama sütunumuzu aşağıdakine benzer bir formülle ekleyebiliriz:  Daha önce yazdığım SWITCH ve IN fonksiyonlarını kullanacağım.

Manuel Kategori Grupları =
SWITCH(
    TRUE() ;
    'Ürün Kategorileri'[Kategori] IN { "Ev Aletleri" ; "Kameralar" } ; "Çok Satanlar" ;
    'Ürün Kategorileri'[Kategori] IN { "TV ve Video" ; "Bilgisayarlar" } ; "Orta Satanlar" ;
    "Diğerleri"
)

Örnek modelde -ki tüm yazılarda aynı Contoso veritabanına bağlı kısmen Türkçeleştirilmiş veriyi kullanıyorum- Satışlar tablosunda bulunan bilgilerden biri de “Fiyat” bilgisi. Yani satışın bir gerçekleşen fiyat bilgisi var.

Bu fiyat sütunundaki değerlere göre satışları bir sütun grafiğinde gösterelim:

Okumak biraz zor! 0-500 fiyat aralığındaki ürünlerin satışı mı daha yüksek, yoksa 500-1000 aralığındaki ürünlerinki mi?

Fiyat sütununu aynen yukarıda kategori grupları oluştururken yaptığımız gibi gruplara bölelim: Satışlar tablosunda Fiyat sütununu seçip “Modelling” tabından New Group” diyorum.

Daha önce karşımıza çıkana benzeyen bir Grup menüsü çıktı.

Grup tipi List değil “Bin”. (Bin ‘i kova diye çevirsek yanlış olmaz sanırım.) Fiyat sütunundaki minimum ve maksimum değerler gösterilmiş. “Bin Type” varsayılan olarak “Size of Bins” geldi.  Yani kovaların büyüklüğünü girebileceğiz. Bin Size ‘a 500 yazıyorum ve OK diyorum.

Aynen bu da, Satışlar tablosuna yeni bir sütun ekledi ve ilgili satırdaki fiyata göre fiyatları 0-500-1000-1500 şeklinde grupladı. Grubu oluştururken girdiğimiz “bin size”, yani 500, bu grupların eşit aralığını gösteriyor.

Sütun grafiğine bu sefer Fiyat yerine bu oluşturduğumuz grupları düşürüyorum.

Görseli okumak kolaylaştı! 0-500 aralığındaki ürünlerin satışları, 500-1000 aralığındaki ürünlerin satışlarından oldukça yüksekmiş, bu fark biraz önce bu kadar net anlaşılmıyordu.

Bin -kova- büyüklüğünü bu örnekte biz verdik 500 olarak. Aynı grup menüsünde bir opsiyon daha var: “Bin Type” olarak “Number of Bin” opsiyonunu da seçebiliriz. Aynı işlemleri tekrarlıyorum:

Bin tipini “Number of Bins” olarak seçip istediğim bin -kova- sayısını (Bin Count) girdiğimde bu sefer otomatik olarak fiyat sütunundaki minimum ve maksimum değerlere göre olması gereken kova büyüklüğünü hesapladı . (1500 – 0.76) / 4 = 374.81 . Bu yeni grubu sütun grafiğine düşürdüğümde aşağıdaki görünümü alıyorum.

Bu da aynen bir önceki kova örneği gibi satışlar tablosuna formülünü göremediğimiz bir sütun ekledi.

Benzer bir sütunu kendi formülümüzü yazarak da ekleyebiliriz!

Kafamızın nasıl çalıştığına göre yazacağımız formül nüans içerebilir.

Manuel Fiyat Grubu =
VAR _BinSayisi = 4
VAR _MinFiyat = MIN( 'Satışlar'[Fiyat] )
VAR _MaxFiyat = MAX( 'Satışlar'[Fiyat] )
VAR _Fark = _MaxFiyat - _MinFiyat
VAR _BinBuyuklugu = _Fark / _BinSayisi
VAR _BinNumarasi = INT(('Satışlar'[Fiyat] - _MinFiyat) / _BinBuyuklugu)
RETURN
_MinFiyat + (MIN(_BinNumarasi ; _BinSayisi -1 ) * _BinBuyuklugu )

Bin’lere ayırma özelliği sadece nümerik sütunlar için değil Tarih tipindeki sütunlar için de kullanabileceğimiz bir özellik.

Tarih -gün- bazında satışların sütun grafiği aşağıdaki gibi:

Aynı işlemleri Tarih tablosundaki Tarih sütunu için tekrarlıyorum:

15’er günlük periyotlar halinde tarihleri gruplayabiliriz örneğin!

Gruplama ve kovalara ayırma (binning) raporlarımızın okunurluğunu yükselten bir şey. Müşterilerimizi yaş gruplarına göre de ayırabilirdik. Ya da çalışanlarımızı eğitim durumlarına göre. Ya da kestiğimiz faturaları ödeme tarihlerine göre yaşlandıradabilirdik. 0-30 gün , 30-60 gün arası alacaklar gibi.

Doğrudan kullanabileceğimiz gruplama ve binning özelliğini manuel hesaplanmış sütun örnekleriyle de göstermeye çalıştım, çünkü eşit aralıklarda olmayan bir gruplama (binning) yapmak gerektiğinde kendi gruplama mantığımıza göre formülleri yazmak gerekiyor. Hesaplanmış sütun olarak DAX tarafında ekleyebileceğimiz gibi, Power Query tarafında da yapabiliriz. Bunların örneklerini sonraya bırakıyorum.

Tüm bunlara ek olarak metrikler üzerinden dinamik gruplama yapmamız gereken durumlar var. Örneğin stokları veya satılan ürünleri satış/stok değerlerine göre tasnif etme ihtiyacı hemen hemen her satış/stok kapsamında karşımıza çıkıyor.

Mantıkları aynı, kullanılan yöntemlerde nüans var.

Sadece üyeler görebilir. Hızlı üyelik için sosyal medya hesabınızla giriş yapabilirsiniz!

Yazıdaki modeli indirebilirsiniz.

Bloga sosyal medya hesabınızla hızlı üye olmak için ilgili ikonu tıklayabilirsiniz.

PowerBI İstanbul

Microsoft Power BI, Microsoft Fabric, veriyle ilgili Azure servisleri, veri analitiği, iş zekası, veri modelleme ve veri görselleştirme üzerine Türkçe bilgi içeriğine katkı sağlamayı amaçlar.

Intellect BI blog sitesidir. Intellect BI & PowerBI İstanbul, Microsoft Data Analytics ve Power BI Partneri 'dir.

Blog Yazılarına Üye Olun

Blog yazıları, eğitim ve meetup duyuruları posta kutunuza gelsin!

9,4K Üye