Power BI ‘da DAX ile Measure ve Column Kullanımı
Bu yazımda DAX fonksiyonlarını kullanarak Power BI‘ daki measure ve column özelliklerini göstermek istiyorum.
Bunu sizlere daha anlaşılır bir şekilde ifade edebilmek için bir senaryo üzerinden aktaracağım.
Power BI ‘ da farklı döviz kurlarından oluşan bir satış raporunun tek bir kura çevrilerek oluşturulması üzerinde duracağız.
Web sitesinden çekeceğimiz döviz kurlarına çeşitli matematiksel ve dönüşüm işlemleri uygulayarak DAX fonksiyonları ile Measure ve Column ‘lara aktaracağız.
DAX Fonksiyonları İle Measure ve Column Kullanımı
Web sitesinden veri çekme işleminin nasıl yapıldığını Power BI ‘ da XML ile Veri Alma İşlemi (Get Data From Web) başlıklı yazımdan inceleyebilirsiniz.
Aşağıdaki raporu incelediğinizde satışların farklı para birimlerinde gerçekleştiğini ve toplamın karışık döviz cinslerinden (USD, EUR, TRY) oluştuğunu görebilirsiniz.
Bu sebepten Total olarak belirtilen satış rakamlarının toplam değeri (360.935,86) aslında gerçek, kullanılabilir bir veriyi yansıtmamaktadır. Bu toplamı güncel tek bir döviz cinsinden göstermemiz gerekir. Bu örneğimizde döviz kurlarını güncel USD kuruna çevirip raporlama işlemini gerçekleştireceğiz.
1) Satış verilerini almış olduğumuz veri kümesine VERİ KÜPÜ ismini verdim. Bu veri kümesinde bir hesaplama yapacağımız için üzerinde iken sağ tıklayıp New Measure’ ı seçiyoruz. Aynı işlemi üst menüde bulunan Modelling sekmesinde de yapabilirsiniz.
2) Bu örneği hazırlarken kullandığım güncel kurların 06.12.2017 tarihine ait olduğunu belirterek işlem adımlarına devam ediyorum. Merkez Bankasında yayımlanan günlük döviz kurlarına buradan ulaşabilirsiniz.
Tüm para birimlerinin kendi içinde dolar karşılığını bulmak için filtreliyoruz. Daha sonra bu filtrelerden oluşan sonuçları toplayarak işlemi tamamlayacağız.
Measure Oluşturma
3) İlk olarak EURO döviz cinsinde yapılan satışları, Merkez Bankası verilerinden elde ettiğimiz EURO/DOLAR çapraz kurunu DAX kodlarını kullanarak çarpıp Dolar Tutar-EUR isminde bir Measure oluşturuyoruz.
4) Daha sonra Türk Lirası (TRY) cinsinden yapılan satışları, Merkez Bankası verilerinden elde ettiğimiz DOLAR/TL kur değerine DAX kodlarını kullanarak bölüp DOLAR/TL isminde bir Measure oluşturuyoruz.
5) Son olarak USD para birimi cinsinde yapılan satışları Dolar Tutar-USD adı altında doğal olarak bir kur çevrimi yapmadan sadece Measure ‘ a aşağıdaki DAX kodunu yazarak oluşturuyoruz.
6) Daha sonra yaptığımız işlemlerin hem doğruluğunu kontrol etmek amacıyla, hem de görsel olarak daha anlaşılır olması açısından biraz önce Measure olarak oluşturduğumuz alanları (Dolar Tutar-EUR, Dolar Tutar-TRY, Dolar Tutar-USD) daha önce oluşturduğumuz Table görselinin (Ürünlerin Farklı Döviz Kurlarından Oluşan Satışları) Values bölümüne atıyorum.
7) İşlem adımlarında bir hata olmaması durumunda aşağıdaki şekilde bir tablo(table) görseli oluşur.
Tabloyu incelediğimizde Para Biriminin kendi Dolar Tutar karşılığının dolu olduğu diğer alanların boş olduğu görülmektedir. Tasarladığımız rapora ulaşmamız için artık tek bir işlemimiz kalmış oldu.
Oluşturduğumuz 3 adet Measure alanını bir araya toplayarak görsele o şekilde yansıtmamız gerekiyor. Bunu Measure ya da Column kullanarak 2 farklı şekilde de yapabiliriz.
8) Öncelikle Measure ile nasıl yapabileceğimize bakalım. Açık söylemek gerekirse bu işlemi Measure ‘ da yapmak duruma göre daha çok DAX kodu yazmak anlamına gelebilir.
Ama bazen Power BI ‘ da Measure yazmak zorunda kalacağımız zamanlar için (Bunun nedenini yazımın devamında Column ile oluşturma bölümünde anlatacağım) her iki yolu da göstermek istedim. Bir Measure ‘ a aşağıdaki DAX kodunu yazdığımızda ki bu yukarıda yazdığımız DAX kodlarının birleşimi niteliğindedir.
9) Dolar Tutar Toplam alanını Table görselinin Values bölümüne attım ve artık Dolar Tutar Toplam sütunu altında oluşan Total verisi toplamı Satışların USD karşılığı olarak değerlendirilebilecek güncel bir veri haline gelmiş oldu.
Column (Hesaplanmış Kolon) Oluşturma
10) Şimdi de aynı işlemi bir hesaplanmış kolon (Column) ile yapalım.
VERİ KÜPÜ ismini verdiğimiz veri kümesinde bir kolon oluşturacağımız için veri üzerinde iken sağ tıklayıp New Column’ ı seçiyoruz. Aynı işlemi New Measure’ da olduğu gibi üst menüde bulunan Modelling sekmesinde de yapabiliriz.
11) Açılan kod bölümüne aşağıdaki DAX kodunu yazdığımızda 3 measure’ ın toplamından oluşan yeni bir kolon oluşturmuş oluyoruz. Column oluşturma işleminde dikkat ettiyseniz Measure ‘ ları hiçbir fonksiyon yazmadan matematiksel işaretlerle basit bir şekilde topladık.
Column Oluştururken Alınan ” A Circular Dependency Was Detected ” Hatası
12) Fakat Column oluştururken “A circular dependency was detected:…” hatası alırsanız, içinde Measure (Ölçü) içeren bir Hesaplanmış Kolon/Sütun (Column) daha önce oluşturmuşsunuz demektir.
!! Power BI, içinde Measure bulunan sadece 1 Hesaplanmış Kolon oluşturmaya izin verir.
13) Oluşturduğumuz kolonu Matris görseline eklediğimizde aşağıdaki gibi sade ve USD cinsiden Ürünlerin satış verilerini oluşturmuş oluruz.
14) Yaptığımız işlemde tüm satış tutarları Dolar cinsinden olduğu için satış rakamlarına dolar simgesini getirmek için veri formatında değişiklik yapıyoruz.
Currency alanından $ English (United States) seçerek işlemimizi tamamlıyoruz.
Umarım sizin için faydalı bir yazı olmuştur. Konu ile ilgili bir öneriniz varsa iletmenizi çok isterim. 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.
Yorumlarınız ile katkıda bulunabilirseniz çok sevinirim.
Takipte kalmanız dileğiyle…
Okan hocam güzel bir çalışma olmuş, projelerde kullandığın bir çok dax örneğini paylaşman dileği ile paylaşımlarını dört gözle bekliyoruz.
Güzel yorumunuz için teşekkür ederim Selim Hocam.
DAX ile ilgili olarak ayrı bir bölüm oluşturmayı düşünüyorum, orada paylaşacağım.
Görüşmek üzere.
Saygılar,
Üstadım çalışmalarınız çok güzel,sade ve anlaşılır. Power Bİ öğrenmeye yeni başladım. Daha çeşitli örneklerinizle bu işi ilerletiriz :)
Takipteyim :)
Saygılar
Selamlar.
Uğur Bey,
Motive edici yorumunuz için teşekkür ederim. Faydalı olabiliyorsam ne mutlu bana. DAX ile ilgili örneklerin bulunduğu yazıları en yakın zamanda ekleyerek içeriği arttırmak istiyorum.
Takipte kalmanız dileğiyle :)
Saygılar,
Selamlar.