PBI Takım Çantası – SwissKnife

Power BI ile modelleme yaparken kullanmanızın size fayda sağlayacağı bazı araçlar var.

Araçlardan ilki aslında bir web sitesi: www.daxformatter.com. DAX formüllerini yazarken belli "el alışkanlıkları" edinmelisiniz; örneğin ana komuttan sonra bir alt satıra inmek gibi (formülü yazarken  shift-enter  a basın), "Filter" komutunu kullandığınızda birden fazla "condition" varsa, her birini ayrı bir satıra yazmak gibi. Bu yazım tarzı size, yazdığınız formülü kontrol ederken görsel kolaylık sağlar. Formülü daha kolay "debug" edersiniz.

PBI, yazdığınız formül tek satırda mı yazılmış, çok satırlı mı yazılmış, formülünüzde yazım hatası olmadığı sürece umursamaz.

Örneğin aşağıdaki formül -aynen bu yazımla tek satır halinde – sorunsuz çalışıyor.

:= DIVIDE([Girilen Süre];CALCULATE([Girilen Süre];ALL('Proje Girişleri');VALUES(Kaynaklar[Kaynak Grubu]);VALUES(Tarih[Tarih] )))*[Maaşlar]*(IF([Utilize %]>=1;1;[Utilize %]))

Çalışıyor, fakat anlaşılmıyor! Formülün nasıl çalıştığını anlamak, debug etmek hiç kolay değil.

Üstteki formülü daxformatter'da formatladığınızda aşağıdaki gibi  bir görünüm alıyorsunuz. Daha anlaşılır ve okuması kolay.

 :=
DIVIDE (
    [Girilen Süre];
    CALCULATE (
        [Girilen Süre];
        ALL ( 'Proje Girişleri' );
        VALUES ( Kaynaklar[Kaynak Grubu] );
        VALUES ( Tarih[Tarih] )
    )
)
    * [Maaşlar]
    * ( IF ( [Utilize %] >= 1; 1; [Utilize %] ) )
/* Formüllerinize açıklamalar ekleyebilirsiniz */

Bu yazım tarzını formüllerinizde kullandıkça alışırsınız, bir süre sonra daxformatter'a ihtiyaç bile duymayabilirsiniz. Hazır örneği oluşmuşken küçük bir not daha; formüllerinize  /*….*/  ile yorumlar ekleyebilirsiniz.

Bir diğer çok işinize yarayacak araç : Dax Studio. Power BI ortamında model geliştirirken, yazdığınız formüllerin doğruluğunu kontrol etme ihtiyacı hissediyorsunuz, fakat PBI'ın kendi ortamı bu amaç için çok konforlu değil. Visual Studio ile Tabular model geliştirenler hatırlayacaktır, "Analyze in Excel" opsiyonu var; modelin tüm tablo ve metriklerini bir Excel dosyasında açıp kontrol edebilmenizi sağlıyor. Bunun benzerini yapabilmek için Dax Studio'yu kullanabiliriz.

Üzerinde çalıştığınız PBI modeli  açıkken  Dax Studio'uyu çalıştırdığınızda size açık olan PBI dosyalarının bir listesini gösterir.

"Connect" ile bağlandığınızda karşınıza çıkan ekranın en alt bandında  localhost: XXXXX  yazar. Bu, açık olan PBI dosyasının kullandığı port numarasıdır.

Açık olan her PBI dosyası, aslında bir SSAS (SQL Server Analysis Service) modelidir. Bu modele Excel'den bağlanabilirsiniz.

Excel'i açıp sırasıyla  Data –> Get Data –> From Database –> From Analysis Services  seçtiğinizde karşınıza çıkan ekrana bu bilgiyi yazın;

"Next" diye devam edip modeli seçip "Finish" dediğinizde, çalıştığınız PBI modeli Excel'e pivot tablo halinde, yazdığınız tüm metriklerle birlikte gelir.

Modelde yaptığınız değişiklikleri Excel'e yansıtmak için "Data–> Refresh All" demelisiniz.

PBI dosyasını kapatıp açtığınızda port numarası  değişir .

Modeli debug etmek için kullandığınız Excel dosyasını daha sonra tekrar kullanmak isterseniz "connection string" teki port numarasını yeni port numarası ile değiştirmeniz yeterlidir.

DAX Studio aynı zamanda bir Tabular model sorgulama aracı. Yukarıdaki resimde "Evaluate.." ile başlayan komut satırı belki dikkatinizi çekmiştir. DAX Studio, yazdığımız DAX metriklerinin nasıl çalıştığını anlamamıza yardımcı olacak bir nevi "Sql Profiler" işlevi de görüyor. Başlangıç için fazla "ileri" bir konu olduğundan şimdilik girmiyorum.

PBI projelerinin bir çoğunda, ilk etapta Power Query ile çalışılıyor. Ana veri kaynağına -genellikle ERP oluyor- bağlanacaksınız, belki CRM verileriniz var, okunması gereken Excel dosyaları, .csv dosyaları olabilir. Yani aynı anda birden fazla veri kaynağına bağlanıp bunlar üzerinde verilerle oynuyorsunuz. Power Query, herhangi bir veri manipülasyonu, temizliği, düzeltmesi yapmak için veri kaynağını "karşısında" görmeyi bekliyor, yani erişebilmesi gerekiyor. Veri kaynağını karşısında göremediğinde "çalışmayı reddediyor".

Sıklıkla uzaktan bağlanarak çalışma yapılan projelerde bu durum çalışma hızınızı etkileyebilir.

Bu durumu çözmenin  birden fazla yolu var , en sık kullandığım yöntemi aktarayım:

Boş bir PBI dosyası oluşturup, projede size gerekli olabilecek tüm veri kaynaklarına bağlanın, lazım olabilecek tüm tablo, sütun, excel, .csv dosyalarına bağlanıp hepsini çekin. Veriler üzerinde herhangi bir manipülasyon yapmayacağız. Sadece verileri çekeceğiz. Oluşturduğumuz bu dosyayı, projede hızlı çalışabilmek için bir "veri kaynağı" olarak, lokal SQL sunucumuza kopyalayacağız! Böylelikle bize lazım olan tüm verilerle lokalden çalışabileceğiz.

Windows Power Shell'i Adminisrator modunda açın: Aşağıdaki komutlarla iki modül kuracağız.

PS C:\Windows\system32> Install-Module PowerBIETL
PS C:\Windows\system32> Import-Module PowerBIETL

* SetExecution uyarısı alırsanız PowerShell'de önce  Set-ExecutionPolicy RemoteSigned  (veya AllSigned) yazmanız gerekebilir.

Verileri çektiğimiz PBI dosyasının  açık olması gerekiyor . Dosyamızın adı, diyelim "PbiData" olsun. Lokal SQL sunucunuzda, verileri kopyalamak istediğimiz boş, yeni bir veri tabanı yaratın; diyelim adı "PbiSqlData" olsun. SQL sunucusunun adının da (instance adı) "XPS 15" olduğunu varsayalım.

Aşağıdaki komutu, PowerShell'de çalıştırın:

Export-PBIDesktopToSQL -pbiDesktopWindowName "*PbiData*" -sqlConnStr "Data Source=XPS15; Initial Catalog=PbiSqlData; Integrated Security=SSPI" -sqlSchema "dbo" -verbose

"PbiData" dosyasındaki tüm veriler, "XPS15" isimli SQL sunucusundaki "PbiSqlData" veri tabanına kopyalanır.

Modelle ilgili çalışmalarınızı bitirip, canlı test yapmak istediğinizde, veri kaynağı adreslerini Power Query tarafında değiştirdiğinizde model sorunsuz çalışacaktır.

* Bu yöntemin kaynağı 

Son olarak, bir araç değil ama, bir ipucu: Bununla ilgili ileriki zamanlarda işimize çok  yarayacak atıflarda bulunacağım. PBI  dosyaları, yani .pbix dosyaları, aynı zamanda bir "zip" dosyasıdır. Winrar, winzip gibi programlarla pbix dosyasını açtığınızda içerisinde modelin yapısını tarifleyen bir çok yapı görürsünüz.

Bu yazıdaki bazı bilgiler yeni başlayanlar için biraz karışık gelebilir. Çok önemsemeyin, sadece PBI ile çalışırken ihtiyaç duyulabilecek "konforlu" yöntemlerden bazılarını tariflemeye çalıştım. PBI ile ilgili tecrübeniz hiç yoksa bile, öğrendikçe bu araçları kullanmanız gereken zamanlar olacaktır, şimdiden  aklınızın bir köşesinde yer etmesi bile yeterlidir.