Power BI’ın En Temel DAX Fonksiyonları

[vc_row][vc_column][vc_column_text]Merhaba, sevgili okur! Bu yazımızda Power BI ‘ın en temel DAX fonksiyonlarından bahsedeceğiz. Bu fonksiyonları gerçek hayatlarımızda da bol bol kullanıyoruz. Bu da bizlere gösterir ki, biz bunları rapor yaparken çok fazla kullanacağız.

Sakin olun ve en basitleri düşünün 😃 Evet, bahsedeceğim fonksiyonlar şöyle:

  • Sayma (COUNT)
  • Toplama (SUM)
  • Ortalama alma (AVERAGE)
  • Maksimum Değeri Bulma (MAX)
  • Minimum Değeri Bulma (MIN)

Bu fonksiyonların hepsi oldukça basit bir yapıya sahiptir. Burada aklımızdan çıkarmamamız gereken nokta fonksiyonları İngilizce olarak kullanma zorunluluğumuzdur. Unutmayın ki, arayüzü Türkçe de yapsak da fonksiyonları İngilizce kullanmak durumundayız. Genel olarak üstteki fonksiyonları ölçülerde(Measure) kullanırız. Ölçülerin sonuçları bize skaler tek bir değer verir. Biz de bu yazıda aşağıdaki soruların tek skaler bir değer olarak cevaplarını arıyoruz.

Bu fonksiyonların uygulanışı için örnek veri setini kaggle.com’dan aldım. Siz de buradan örnek veri setine ulaşabilirsiniz. Bu veri seti video oyunlarla ilgili isim, sıralama, platform, yıl, tür, yayıncı, dünya çapında satış gibi bilgileri içeriyor. Biz de üstte belirttiğimiz fonksiyonlarla veri setine sorduğumuz bazı soruların cevaplarını alacağız.

Başlangıç olarak Power BI ‘a bu veri setini aktaralım. Bunun için Home sekmesinde Get Data seçeneklerinden Text/CSV seçerek bu veri setinin yolunu gösterelim. Bu .csv formatlı dosyayı almak için OK ‘a tıkladığınızda kendisi metinler arasındaki ayracı tanıyacak otomatik sütunlara bölünmüş halini Navigasyon penceresinde gösterecek ve bize sadece Load demek kalacak.

Şimdiki aşamada bu veri setinden aşağıdaki soruların cevaplarını almak için çalışacağız.

1-Kaç adet oyun var?

İlk olarak bu konudaki merakımızı giderelim. Sayma işlemi için temel DAX fonksiyonlarından COUNT fonksiyonunu kullanarak veri setinde kaç adet oyun olduğunu saydıracağız. Herhangi bir sütunu bu işlem için kullanabiliriz. Genelde sayma işlemi yaparken asla boş olmayacağını bildiğimiz sütunları seçeriz.  COUNT fonksiyonu içine ilgili tablo ve sütun adını yazarak işlemimizi gerçekleştiriyoruz. Aşağıda ilgili söz dizimini bulabilirsiniz:

Oyun Sayisi = COUNT(vgsales[Name])

Bu fonksiyonu yazarak 16.598 adet oyundan bahsettiğimizi keşfetmiş oluyoruz.

2-Global_Sales sütunundaki değerlerin toplamı nedir?

Bir sütundaki değerlerin toplanmasından bahsediyorsak devreye bir başka temel DAX fonksiyonu olan SUM fonksiyonu girer. SUM fonksiyonunu kullanarak GlobalSales sütunundaki değerlerin toplamına erişmiş olacağız. Fonksiyonu kullanabilmemiz için mutlaka sayısal değerler içeren bir sütunu seçmemiz gerekmektedir. Bizim toplamını istediğimiz sütun, Decimal Number veri tipinde sayısal değerler içeriyor. SUM fonksiyonunun içine ilgili tablo ve sütun adını yazarak işlemimizi yapıyoruz. Aşağıda ilgili söz dizimini bulabilirsiniz:

GlobalSales Toplam = SUM(vgsales[Global_Sales])

Fonksiyonun sonucunda GlobalSales sütunundaki değerlerin toplamını 8920.44 olarak elde ediyoruz.

3-Global_Sales sütunundaki değerlerin ortalaması nedir?

Aynı sütun için bir de ortalama değerin ne olduğunu bulalım. Bir sütundaki değerlerin ortalamasından bahsediyorsak kullanacağımız fonksiyon AVERAGE fonksiyonudur. AVERAGE fonksiyonu kullanmak için de aynı SUM fonksiyonunda olduğu gibi mutlaka sayısal veri tipi içeren bir sütun tercih edilmelidir. AVERAGE fonksiyonunda üstteki diğer iki fonksiyon gibi tablo ve sütun ismini yazarak istediğimiz sonucu elde edebiliriz. Aşağıda ilgili söz dizimini bulabilirsiniz:

GlobalSales Ortalama = AVERAGE(vgsales[Global_Sales])

AVERAGE fonksiyonu bize cevap olarak 0.54 değerini verir. Bu veri setindeki oyunların ortalama satış fiyatı 0.54’müş.

4-NA_Sales sütunundaki değerlerin maksimumu nedir?

Bu sefer başka bir sütunda başka bir merakımız var. Acaba NA_Sales sütunundaki en büyük satış değeri nedir? Bu sorunun cevabını bize yalnızca MAX fonksiyonu verebilir. Tabii ki bu fonksiyonu kullanırken de ilgili sütunların sayısal değerler içermesi gerekiyor. Yalnız bu fonksiyon, söz diziminde bize iki seçenek sunar: bir sütun içinde maksimum değeri de bulabilir, iki skaler değerden hangisi büyükse onu da söyleyebilir. Biz burada seçimimizi tüm sütundaki maksimum değeri getirmesini isteyeceğiz. MAX fonksiyonunun genel kullanımı da bu şekildedir. Aşağıda ilgili söz dizimini bulabilirsiniz:

Maksimum NA_Sales = MAX(vgsales[NA_Sales])

Bu fonksiyondan edindiğimiz bilgilere göre NA_Sales sütunundaki maksimum değer 41.49 muş.

5-NA_Sales sütunundaki değerlerin minimumu nedir?

Bu da soracağımız son soru: NA_Sales sütunundaki en küçük satış değeri nedir? Bu sorunun cevabını almak için MIN fonksiyonunu kullanacağız. Kullanımı en büyük yerine en küçük değeri getirmek için kurgulanmışken, söz dizimi tamamen MAX fonksiyonu ile aynıdır. Genel kullanımı bir sütunun tamamında minimum değeri bulmak üzerinedir. Aşağıda ilgili söz dizimini bulabilirsiniz:

Minimum NA_Sales = MIN(vgsales[NA_Sales])

Bu fonksiyondan edindiğimiz bilgilere göre NA_Sales sütunundaki minimum değer 0 mış.

Son sorumuzla birlikte en temel DAX fonksiyonlarını kullanarak yukarıdaki sorulara cevap vermiş olduk.

DAX fonksiyon sonuçları

Dilerseniz bu işlemlerin yapılmış hali olan .pbix formatlı dosyayı da buradan indirebilirsiniz. Bir sonraki yazımıza kadar hoşça kalınız.

Good game well played.

[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][mk_image src=”https://peakup.org/wp-content/uploads/2023/12/powerbi_imza_son.gif” image_size=”full”][/vc_column][/vc_row]

Union Fonksiyonu – Power BI DAX

Bu yazıda gelin birlikte Union fonksiyonunu inceleyelim. Farklı satış bölgelerinden gelen ve tek bir raporda gösterilmesi gereken tablolarınızı birleştirmek  ya da  farklı tabloları aynı anda filtreleyebilmeniz için tablolardaki filtre ifadelerini içeren yeni bir tablo oluşturmak amacıyla Union fonksiyonu kullanılabilir.

Union fonksiyonu basit bir tablo birleştirme fonksiyonudur ancak her fonksiyonda olduğu gibi onda da  kullanırken bilmemiz gereken bazı özel durumlar var.

Union ile aşağıdaki TR ve USA isimli iki tabloyu birleştirelim.

 

Bu iki tabloyu birleştirmek için; modeling Sekmesi > New Table butonuna basarız ve formül çubuğuna tablo isimlerimizle aşağıdaki formatta formülü yazarız.

Yeni Tablo Adı = UNION (birleştirlecek tablonun adı ; birleştirilecek diğer tablonun adı;diğer tablo;diğer tablo….)

iki tablonun bilgileri yeni tablomuzda başlıkla beraber altalta gelmiş oldu.

 

Tabloların Sütun Adetleri Farklı Olursa ?

TR Tablosu tamamen ayı durumda ancak USA tablosunu PowerQuery üzerinden çoğaltıp USA_2 adında yeni bir tablo oluşturdum. Yeni tabloya Urun Kodu diye yeni bir sütun ekledim.

 

şimdi iki tabloyu birleştirmeyi deneyelim.

Bu sefer , USA tablosuna ekstra eklediğim “Urun Kodu” sütunu nedeniyle fonksiyon hata verdi. Çünkü UNION birleştirdiği her tablonun aynı sayıda sütuna sahip olmasını bekler. Bu nedenle UNION tercih edecekseniz sütun sayılarının aynı olmasına dikkat!

 

Union Fonksiyonu Kullanırken Sütun Başlıkları Aynı mı Olmalı?

Yine TR tablosunu sabit bırakıp USA tablosundan bir tane daha çoğalttım ve Toplam Tutar Kolon adını Tutar olarak değiştirdim. Dolayısıyla iki tabloda  son sütunların başlıkları birbirinden farklı hale gelmiş oldu.

 

Şimdi iki tabloyu birleştirelim. Sonuç aşağıdaki biçimde oldu. Yani başlıklar UNION ifadesinin içindeki ilk tablodan geldi. Union yeni oluşan tabloya,  her zaman formüldeki ilk tablonun sütun başıklarının adını verir.
UNION fonksiyonu Birleştirme esnasında bir başlık eşleştirme yapmaz. Dolayısıyla başlıkların isimlerinin aynı olmasına gerek yoktur. Ancak bu durumda başka önemli bir durum var, o zaman eşleştirme nasıl olacak? Union aslında eşleştirme de yapmaz, düz mantıkla altalta birleştirir. Dolayısıyla verilerin doğru sütunlarda birikmesi için tablolardaki sütun sıralamasının birleştirilecek olan diğer tablolarla aynı olması şart.

şimdi yukarıdaki TR ve USA tablolarına tekrar bakalım. Sütun sıralamasında iki tabloda şehir ve adetler aynı pozisyonda değil; Tr tablosu Ulke, Adet, Şehir ve Toplam Tutar sırasıylayken, USA tablosunda Adet ve Şehrin yeri ters ve işte bu nedenle işlem sonucunda da Adet kolonunda USA’ in şehir isimleri  gözüküyor. Bu şekilde veri türleri farklı olduğunda, ortaya çıkan veri tipi, veri tipi zorlama kurallarına göre belirlenir. Örneğin Adet kolonunun veri tipi artık Text ! Dolayısıyla adet toplamı almak istediğinizde, alan text olduğu için sonuç alamazsınız!

Eğer sütunların sırası aynı olursa, iki tablo aşağıdaki gibi sorunsuz biçimde birleşir.

O halde, Union fonksiyonu için şunları söyleyebiliriz;

Tablolarda sütun sayısı aynı değilse çalışmaz.

Birleşmiş Tablodaki sütun başlıkları her zaman Union fonksiyonunda yazdığınız ilk tablodan gelir.

Sütun başlıklarının birebir aynı olması şart değildir çünkü birleşimde esas olan sütunların yerleridir.

UNION Fonksiyonu her iki tabloyu filtreleyen ara tablo oluştururken ya da farklı bölgelerden gelen satışlar için rapor oluştururken de kullanılabilir demiştik. Farklı kullanım örnekleri için yeni yazılarda görüşmek üzere! Ha buarada UNION’ın yeterli olmadığı durumlar için Power Query altındaki Append Query’i de inceleyebilirsiniz!