DAX Toplayıcı (Aggregate) Fonksiyonları

Power BI ’da en çok kullanılan fonksiyonlardan biri olan DAX Toplayıcı (Aggregate) Fonksiyonları’ Power BI ‘da örnek raporlarda kullanımlarını inceleyerek aktarmaya çalışacağım.

Genel olarak Power BI raporları hazırlanırken, hazırlanan raporların içeriğine, detayına ve veri türlerine göre Power BI ’da DAX Fonksiyonları ‘nın çok karmaşık kullanımları söz konusu olabilir.

Power BI ‘da DAX Fonksiyonları yazı dizisini oluştururken genel olarak basit örneklerden yola çıkarak daha karmaşık DAX Fonksiyonları yazmaya çalışacağız.

Bu bölümde sizin katkınız da çok önemli. Çünkü oluşturulan her Power BI raporunun kendine özgü bir ahengi var ve bu çeşitlilikten herkesin yararlanması için sizden gelecek olan DAX Fonksiyon örneklerini de yazı dizisinin ilgili bölümlerine gönderen kişiyi de kaynak olarak gösterip eklemeyi hedefliyorum.

Farklı bir çözüme hitap eden ve paylaşmak istediğiniz Power BI DAX Fonksiyon örneklerinizi [email protected] ya da [email protected] e-posta adreslerine gönderebilirsiniz. Katkılarınız için şimdiden teşekkür ederim.

 

DAX Toplayıcı (Aggregate) Fonksiyonları

DAX Toplayıcı (Aggregate) Fonksiyonları (SUM, AVERAGE, MIN, MAX…) bir parametre ile çalışan sütun bazlı fonksiyonlardır. Üzerinde işlem yaptıkları sütunu parametre olarak alırlar. Tek bir sütun üzerinde çalışırlar ve satırı görmezler.

Fakat X ile biten özel toplama işlevleri (SUMX gibi) ile birden çok sütunda çalışılabilir. Bu işlevler tablonun tamamında yinelenir (iterator) ve ifadeyi her bir satır için değerlendirir.

Ayrıca DAX Toplayıcı (Aggregate) Fonksiyonları sadece Date ve Boolean harici diğer Sayısal Veri Tiplerinde (Numeric Types) çalışırlar.

 

SUM ( ) Fonksiyonu

 

DAX Toplayıcı (Aggregate) Fonksiyonları

SUM ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

 

[code]Total Amount = SUM (ColumnName) [/code]

 

Bu bölümde “Total Amount” olarak isimlendirdiğimiz hesaplanmış bir kolon-sütun (column) ya da ölçü (measure) olabilir.

Column (Hesaplanmış Kolon/Sütun) ve Measure (Ölçü) ile ilgili ayrıntılı bilgiyi Power BI ’da DAX ile Measure ve Column Kullanımı başlıklı yazımdan inceleyebilirsiniz.

 


[code]Toplam_Satis = SUM (‘SIPARISLER'[Birim_Fiyat] * ‘SIPARISLER'[Miktar] )
//Hata-Error [/code]

 

şeklinde kullanımda hata verecektir. Hatanın sebebi ise daha önce de belirttiğim gibi SUM fonksiyonu satırları parametre olarak almazlar, sadece tek bir sütunu parametre olarak alabilirler.

Aşağıdaki örnekte bazı ürünlerin satış rakamlarının yer aldığı veri kümesinden bir görsel paylaştım. Genel olarak bu veri kümesinde bulunan “Ciro” alanı bizim satış rakamlarımızı Ürün Grubu bazında kırarak göstermektedir.

Fakat SUM ( ) fonksiyonunun nasıl kullanıldığını ve aldığı parametreyi veri kümesinde bulunan satırlarda nasıl göstereceği konusunda örnek olması açısından SUM fonksiyonu ile bir Hesaplanmış Kolonun-Sütunun (Column) oluşturacağız.

 

 

DAX Toplayıcı (Aggregate) Fonksiyonları- Sum () Function Example

SUM ( ) Fonksiyonu Örnek – DAX Toplayıcı (Aggregate) Fonksiyonları

 

DAX Toplayıcı (Aggregate) Fonksiyonları

SUM ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

Aşağıdaki ekran görüntüsünde SUM fonksiyonu ile oluşturulan Hesaplanmış Kolonun-Sütunun (Column) her bir satırda, aynı değeri yani tüm satışların toplamını tekrar ederek getirdiğini görebilirsiniz.

SUM fonksiyonunun neden bu şekilde aynı sütunda tekrarladığını daha iyi kavramak için SUM ( ) Fonksiyonunun hemen ardından, SUMX ( ) Fonksiyonunun kullanımını incelemenin daha yararlı olacağını düşünüyorum.

 

DAX Toplayıcı (Aggregate) Fonksiyonları

SUM ( ) Fonksiyonu Tek Bir Sütunu Parametre Olarak Alır – DAX Toplayıcı (Aggregate) Fonksiyonlarıarı

 

 

SUMX ( ) Fonksiyonu

SUMX ( ) Fonksiyonu yinelenen yani iterator bir fonksiyondur.

SUMX ( ) Fonksiyonu iki parametre alır.

 

[code] SUMX_Fonksiyonu = SUMX(TABLE ; EXPRESSION)[/code]

 

Yinelenecek table (tablo), doğrudan bir tablonun adı olabilir veya geriye tablo döndüren bir tablo fonksiyonu da olabilir. Burada önemli olan satır satır SUMX fonksiyonuna yazdığımız komutu çalıştıracak bir tablonun olması.

Yineleyen fonksiyonlar parametre olarak verilen tabloda gördüğü tüm satırlara ilk satırdan başlayarak, fonksiyonun ikinci parametresinde belirtilen ifadeyi (Expression) tek tek uygular. Bulduğu sonucu yineleyen fonksiyonu oluşturduğumuz hesaplanmış bir kolona-sütuna (column) ya da ölçüye (measure) yazar.

 

SUMX ( ) Fonksiyonu - DAX Toplayıcı (Aggregate) Fonksiyonları

SUMX ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

SUMX ( ) Fonksiyonunun nasıl kullanıldığını basitçe anlatabilmek amacıyla aşağıdaki örnek veri kümesini Power BI Desktop ‘ın Enter Data özelliği kullanarak manuel olarak oluşturdum.  Veri kümesini incelediğimizde Ürünlerin (Product) ve bu ürünlerin satış miktarlarının (Quantity) ve ürünlerin birim fiyatlarının (UnitPrice) olduğunu görüyoruz.

SUMX ( ) Fonksiyonunu kullanarak her üründen ne kadar satış yapıldığını Hesaplanmış Kolon/Sütun (New Column) ile göstereceğiz.

 

SUMX ( ) Fonksiyonu Örnek - DAX Toplayıcı (Aggregate) Fonksiyonları

SUMX ( ) Fonksiyonu Örnek – DAX Toplayıcı (Aggregate) Fonksiyonları

 

DAX Toplayıcı (Aggregate) Fonksiyonları

Hesaplanmış Kolon/Sütun (New Column) Oluşturma – DAX Toplayıcı (Aggregate) Fonksiyonları

 

SUMX ( ) Fonksiyonu - DAX Toplayıcı (Aggregate) Fonksiyonları

SUMX ( ) Fonksiyonu-CALCULATE ( ) İle Kullanımı – DAX Toplayıcı (Aggregate) Fonksiyonları

 

[code]TotalSales = CALCULATE(SUMX(SALES;SALES[Quantity]*SALES[UnitPrice]))[/code]

 

Yazdığımız kodda CALCULATE ( ) fonksiyonunu kullandığımızı fark etmişsinizdir. Bunun sebebi SUMX ( ) Fonksiyonu içerisindeki ifadede matematiksel bir işlem/hesaplama yaptığımız için CALCULATE ( ) fonksiyonunu kullanmamızın gerekliliğindendir. Hemen gözünüz korkmasın DAX konularında ilerledikçe böyle iç içe bir çok fonksiyonu kullanacağımızdan dolayı buna alışmanız bakımından iyi bir örnek olduğunu düşünüyorum :)

 

DAX Toplayıcı (Aggregate) Fonksiyonları

SUMX ( ) Fonksiyonu -DAX Toplayıcı (Aggregate) Fonksiyonları

 

CALCULATE ( ) fonksiyonunu ilerleyen bölümlerden ayrıntılı anlatacağız ama, genel olarak bir DAX fonksiyonu içerisinde filtreleme ( FILTER() ) fonksiyonunu veya bir matematiksel hesap yapıyorsak CALCULATE( ) fonksiyonunu kullanıyoruz. Eğer CALCULATE fonksiyonu kullanıyorsak veri kümesinde gizli bir filtre işlemi de uygulanıyor demektir.

Şöyle ki ; Her satırda SUMX ( ) fonksiyonuna yazılan işlem uygulandı ve daha sonra CALCULATE ( ) fonksiyonu Product alanına göre filtreledi ve tüm değerleri ürün bazında kırarak getirmiş oldu. CALCULATE () ile ilgili olarak şimdilik bu kadarını bilmemiz bizim için yeterli.

Bunun dışında yukarıdaki örnekte SUMX ( ) Fonksiyonunu CALCULATE ( ) fonksiyonu olmadan kullansaydık nasıl bir sonuç dönerdi ?

Yukarıda anlatılanlar ışığında SUM ( ) Fonksiyonuna benzer bir şekilde ürün bazında kırılım (Product) gerçekleşmeden her satırda tüm işlemlerin toplamı olan 5035,00 rakamını getirdi !

 

[code]TotalSales = SUMX(SALES;SALES[Quantity]*SALES[UnitPrice])[/code]

 

SUMX ( ) Fonksiyonu-CALCULATE ( ) İle Kullanımı - DAX Toplayıcı (Aggregate) Fonksiyonları

SUMX ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

 

AVERAGE ( ) Fonksiyonu

Daha önce Excel gibi programları kullananlar genel olarak bilirler ki AVERAGE ( ) fonksiyonu belirtilen sütunu bir parametre olarak alır ve o sütundaki değerlerin ortalamasını bulur.

Eğer sütun veri tipi olarak metin içeriyorsa, hiç bir işlem yapılmaz ve boş döner. Sütun mantıksal (logical) değerler veya boş hücreler içeriyorsa, bu değerler göz ardı edilerek ortalama hesaplanır. Doğal olarak sıfır değerine sahip alanlar hesaplamaya dahil edilir.

Bir sayı kümesine değerlendiren bir ifadenin ortalamasını bulmak istiyorsak, bunun yerine AVERAGEX ( ) fonksiyonunu kullanmamız gerekir.

 

AVERAGE ( ) Fonksiyonu - DAX Toplayıcı (Aggregate) Fonksiyonları

AVERAGE ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

[code]QuantityAverage = AVERAGE(SALES[Quantity])[/code]

 

MIN ( ) Fonksiyonu

 

DAX Toplayıcı (Aggregate) Fonksiyonları

MIN ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

[code]MIN_FUNCTION = CALCULATE(MIN(ColumnNameOrScalar1;[Scalar2])[/code]

 

MIN ( ) Fonksiyonu, bir kolondaki (sütundaki) veya iki skaler ifade arasında bulunan en küçük sayısal değeri sonuç olarak döndürür.

Mantıksal (Lojik) değerleri ve metni yok sayar. MIN ( ) Fonksiyonu, Sayısal Veri Tiplerinde (Numeric Types) ve boşluklarda (blanks) çalışabilirler. Sayısal bir değer yok ise MIN ( ) Fonksiyonu boşlukları döndürür.

MIN ( ) Fonksiyonu ile ilgili olarak bir ölçü (measure) oluşturacağım ve daha önceki örnekte kullandığım veri kümesinde bulunan Birim Fiyat (UnitPrice) alanının en küçük değerini bir kart (card) görselinde göstereceğim.

 

Column Oluştururken Alınan ” A Circular Dependency Was Detected ” Hatası

Peki neden hesaplanmış kolon (column) kullanmadık da bir ölçü (measure) kullandık ?

SUMX ( ) Fonksiyonunu kullandığım veri kümesi üzerinden örneklememize devam ettiğimiz ve o örnekte CALCULATE ( ) Fonksiyonu içeren bir hesaplanmış kolon kullandığımız için tekrar CALCULATE ( ) Fonksiyonu içeren bir hesaplanmış kolon daha oluşturursak A circular dependency was detected… hatası alırız.

Bunun sebebi ise bir veri kümesinde sadece CALCULATE ( ) Fonksiyonu bir adet hesaplanmış kolon (column) kullanabilmemizden kaynaklanmaktadır.

Başka hangi durumlarda A circular dependency was detected:… hatasını alırız ? Bunu öğrenmek için Column Oluştururken Alınan ”A Circular Dependency Was Detected ” Hatası başlığını inceleyebilirsiniz.

 

A Circular Dependency Was Detected

A Circular Dependency Was Detected

 

MIN ( ) Fonksiyonunun Ölçü(Measure) İle Kullanılması

[code]MIN_FUNCTION_Measure = CALCULATE(MIN(SALES[UnitPrice]))[/code]

 

DAX Toplayıcı (Aggregate) Fonksiyonları

MIN ( ) Fonksiyonunun Kart Görselinde Gösterimi – DAX Toplayıcı (Aggregate) Fonksiyonları

 

MIN ( ) Fonksiyonunun Kart Görselinde Gösterimi - DAX Toplayıcı (Aggregate) Fonksiyonları

MIN ( ) Fonksiyonunun Kart Görselinde Gösterimi – DAX Toplayıcı (Aggregate) Fonksiyonları

 

 

MAX ( ) Fonksiyonu

 

DAX Toplayıcı (Aggregate) Fonksiyonları

MAX ( ) Fonksiyonu – DAX Toplayıcı (Aggregate) Fonksiyonları

 

[code]MIN_FUNCTION = CALCULATE(MIN(ColumnNameOrScalar1;[Scalar2])[/code]

 

Sayısal değerler içeren tek bir sütun değerlendirilirken, sütunda sayı yok ise, MAX ( ) Fonksiyonu bir boşluk (Blank) döndürür.

Sayı olmayan değerler için MAXA ( ) Fonksiyonu kullanılır.

MAX ( ) Fonksiyonu ile iki ifadeyi karşılaştırırken boşluk değerler (blank) sıfır olarak değerlendirilir. Örnek olarak MAX (3, Blank() ) 3 değerini döndürürken, MAX (-2, Blank() ) sıfır değerini döndürür. Eğer MAX ( ) Fonksiyonuna yazılan değerlerin her ikisi de boşluk (blank) ise fonksiyon boşluk (blank) değeri döndürür.

 

[code]MIN_FUNCTION_Measure = CALCULATE(MIN(SALES[Quantity]))[/code]

 

MAX ( ) Fonksiyonunun Kart Görselinde Gösterimi - DAX Toplayıcı (Aggregate) Fonksiyonları

MAX ( ) Fonksiyonunun Kart Görselinde Gösterimi – DAX Toplayıcı (Aggregate) Fonksiyonları

 

MAX ( ) Fonksiyonunun Kart Görselinde Gösterimi - DAX Toplayıcı (Aggregate) Fonksiyonları

MAX ( ) Fonksiyonunun Kart Görselinde Gösterimi – DAX Toplayıcı (Aggregate) Fonksiyonları

 

 

DAX Fonksiyonlarına giriş yaptığım Power BI ‘da DAX Fonksiyonları başlıklı yazımı başlığa tıklayarak inceleyebilir, Power BI DAX Fonksiyonları yazı dizisinin başlıklarını ve içeriğini  öğrenebilirsiniz.

Umarım sizi için faydalı bir yazı olmuştur. Konu ile ilgili sorunuz, öneriniz ve spesifik Power BI ‘da kullandığınız DAX fonksiyonları örneği var ise diğer arkadaşlarımızın da yararlanması ve bilgi birikimi oluşması açısından yorum bölümüne iletmenizi çok isterim.

İlerleyen yazılarımızda yukarıda örnekleri sunduğumuz DAX Fonksiyonlarının birbiriyle ilişkili ve daha karmaşık örneklerini ele alacağız. Bu anlatımın ve sizlerden gelecek örneklerle yer alaması ile birlikte başlangıç seviyesi için uygun olacağı kanaatindeyim.

Bir hatamız olduysa affola…

Görüşlerinizi, önerilerinizi ve sorularınızı yorum bölümüne yazabilirsiniz. Vakit buldukça cevaplamaya çalışacağım.

Takipte kalmanız dileğiyle…

4 Comments

  1. Hellberry
  2. uğur

Reply

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.