Parametre Kullanımı

Özellikle model geliştirme aşamasındayken ya da mevcut model üzerinde değişiklik yaparken canlı sistem yerine test sistemi üzerinde ve daha az veriyle çalışmayı tercih ediyorum. Bunu yaparken de Power Query 'deki parametre yapısını kullanıyorum.

Yakın zamanda Powerbi.com servisine modelinizdeki parametreleri görmenizi ve değiştirmenizi sağlayacak bir "Parameters" bölümü de eklendi. Bir çok farklı amaçla kullanılabilir, örneğin test veritabanından canlı veritabanına sadece buluttaki değerler değiştirilerek geçilebilir.

Önce nihai sonucu görelim sonra nasıl yapılacağının detaylarına girelim: Sunucu ve veritabanı isimlerinin parametre olarak tanımlandığı bir modelin buluta basılmasından sonra, ilgili dataset'in "Schedule Refresh" ayarlarındaki "Parameters" bölümünden değerleri değiştirebiliriz

Parametrelerin tanımlandığı bölüm  Power Query tarafında . "Home" tabındaki "Manage Parameters" menüsünü kullanarak parametrelerimizi tanımlayalım:


"Name" parametreye vereceğimiz isim, tanım kısmı zaten aşikar, girilmesi zorunlu bir parametre ise "Required" işaretli. "Type" bölümünden parametrenin alabileceği değer tipini (text, tarih, nümerik, True/False vs.) seçebiliriz.

"Suggested Values" listesinde yapacağımız seçime göre istenen diğer şeyler değişebilir. Örneğin "Any Value" seçildiğinde, herhangi bir değeri elle girebiliriz.

"List of Values" seçeneğiyle kendimiz bir değer listesi oluşturabiliriz. Veritabanı parametresini bu şekilde tanımlayalım:

Parametreleri bu şekilde tanımladıktan sonra, veri çekeceğimiz sunucu ve veritabanı isimlerini elle girmek yerine parametrelerden geleceğini söylememiz lazım, resimdeki gibi sunucu ve veritabanı listesinden "Parameter" opsiyonunu seçip ilgili parametreleri girelim.


Bu şekilde bağlantı yaptığımız sorguların tamamının "Source" aşamasındaki formülünde parametrelerimizin isimlerini görebiliriz.

Bu modeli buluta bastığımızda ilgili parametreleri dataset'in güncelleme ayarlarından değiştirebiliriz artık.

Verdiğim örnek sunucu/veritabanı değişikliğine ilişkin olduğundan bu konuyla ilgili işimize yarayabilecek bir de ipucu verelim: raporun bağlandığı sunucunun ismini rapor sayfalarında görmek istiyoruz diyelim, bunun için bize sunucunun ismini döndüren bir sütun lazım. Yeni bir sorgu oluşturup, "Advanced options" bölümündeki SQL Statement'a bize sunucu adını döndürecek T-SQL kodunu yazabiliriz.


Ek not, SQL Statement bölümüne T-SQL kodları yazabiliriz. Yani SELECT cümlelerimizi buraya yazabilir veya bir stored procedure çağırabiliriz. Yalnız  önemli bir hatırlatma  yapayım, eğer SELECT cümlelerini bu bölüme yazarsak "query folding" yeteneğinden faydalanamayız. Bu yüzden yukarıdaki gibi spesifik amaçlar haricinde buraya T-SQL kodu yazmanızı tavsiye etmiyorum.

Modelin üzerinde çalıştığı veri kaynağında son 3-5 yılın verisi varsa, bu seti daraltmak için benzer şekilde bir tarih parametresi tanımlanabilir.

Bu parametreyi de ilgili tabloyu filtrelerken kullanabiliriz.

Şu ana kadarki örneklerde parametre değerlerini hep biz verdik ve tanımladık. Parametre değerlerinin  modelimizin içindeki verilerden  gelmesini nasıl sağlayabiliriz? Örneğin Tarih tablomuzdaki Yıl değerleri neyse onlar gelsin gibi bir durumu  nasıl tanımlayacağız?

Bunun için bize ilgili sütunun  tekil değerlerini  içeren bir başka sorgu lazım: Parametre değerlerini içermesini istediğimiz sütunu sağ tıklayıp açılan menüden "Add as New Query" opsiyonunu seçtiğimizde, bu sütunu tüm değerleriyle içeren yeni bir sorgu oluşur.

 


Listedeki duplike değerleri tekilleştirmek için de "Remove Duplicates" diyebiliriz.


Parametreyi oluştururken de "Suggested Values" 'tan "Query" 'i seçip, kaynak olarak bu yeni sorguyu gösterebiliriz.

Parametre değerlerini Power BI Desktop'tan da, Home tabındaki "Edit Queries" menüsünün hemen altındaki oku kullanarak açılan listeden  "Edit Paramaters" opsiyonunu seçerek değiştirebilirsiniz.