power bi with powershell

Merhabalar, iyi günler.

Bugün Microsoft’un birbirinden bağımsız veri kaynaklarınızı tutarlı, görsel olarak sürükleyici ve etkileşimli öngörülere dönüştürmenizi sağlamak için birlikte çalışan yazılım hizmetlerinden, uygulamalardan ve bağlayıcılardan oluşan bir koleksiyonu olan Power BI’ın PowerShell üzerinde nasıl kullanılabileceğine yönelik aktarımlarda bulunmaya çalışacağım.

Şimdiden iyi okumalar.

***

Kurum ve kuruluşlar kendi bünyelerinde karmaşık ve bir o kadar yoğun bir süreç yapısına sahip olabilirler.
Bu da birden çok ya da bir o kadar takip ve kontrol noktası oluşmasına neden olmaktadır.
Elbette ki günümüz ilerleyen teknolojisinin bu noktaları kolaylaştıracak hatta sistematik bir yapı oluşmasını sağlayıp insan hatasından uzaklaştıracak çözümleri mevcut ve günden güne gelişim halindedir.

Burada ortaya çıkan ve sistematik bir yapı oluşmasını gerektiren gereksinimin günümüzde ve bulunduğumuz toplum içerisindeki karşılığı ile Raporlama (Reporting) olarak ifade edilmektedir. (Ya da ek nedenler için tercih.)

Haliyle bu çözüm çeşitli durumlar için (Rolleme,Kurumsal Çalışma Alanları vb.) onlarca (Bazen YÜZLERCE) rapora karşılık gelmektedir.
Dosyalar üzerindeki değişimin ve geliştirmelerin takip edilemediği çalışmalar için ise hatasız bir şekilde bu süreçlerin takibi ve geliştirilmesi neredeyse imkansız gibidir.

Bugün PowerShell üzerinden bu faaliyetinin Power BI üzerinde nasıl gerçekleştirileceğine yönelik ön hazırlıklarımızı gerçekleştirip, sistemlerine göz atıyor olacağız.

*İşlemlerimizi tamamen PowerShell kullanarak basit seviyedeki betikler ile gerçekleştirmeye çalışacağız.

Öncelikle;

PowerShell, PowerShell ISE Nedir?

PowerShell; Microsoft tarafından Windows komut satırı cmd.exe* ve Windows Script Host’a alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır.
*cmd=Command-Komut ifadesinin kısaltmasıdır.

Kimi kaynaklarda ise bu kabuk programlama olarakta ifade edilmektedir.

PowerShell ISE (Windows PowerShell Integrated Scripting Environment – ISE (Tümleşik Betik Ortamı)); Windows PowerShell için bir konak uygulamasıdır. ISE’de tek bir Windows tabanlı grafik kullanıcı arabiriminde komut çalıştırabilir, betikler yazabilir, bunları test edebilir ve hata ayıklama işlemlerinde bulunabilirsiniz.

Genel itibari ile Powershell – Powershell ISE komut satırı uygulamaları üzerinde kullanıcılar/geliştiriciler Windows’da yer alan uygulamaların;

  • Yönetimini,
  • Çeşitli işlemler için uyarlanmasını/düzenlenmesini,
  • Olay günlükleri gibi detaylar da göz önünde bulundurularak süreç/işlem denetlemelerini 

gerçekleştirebilmektedir.

Yerel cihazımız üzerinde Powershell’e ya da Powershell ISE’ye erişmek için, arama alanı üzerinden ‘Power’ yazarak ilgili geliştirme ortamlarına ulaşabilirsiniz;

where is powershell and powershell ise cmd command

İlgili uygulamalardan, PowerShell uygulaması çalıştırıldığında;

what is powershell cmd command

PowerShell ISE uygulaması çalıştırıldığında ise;

what is powershell ise cmd command
what is powershell ise ide cmd command

ekranları bizi karşılamaktadır.

PowerShell ve PowerShell ISE ekranları önizleme dahilinde karşılaştırıldığında bariz bir sekilde PowerShell ISE ekranının kullanıcı kullanım kolaylığı içerdiği, daha hızlı ve efektif işlem imkanı sağladığı (Kısayollar ile) hissini oluşturmaktadır.Üst kısımda yer alan tanımlamalar da karşılaştırıldığında bu düşünceyi destekleyici nitelikte olduğu görülmektedir.

PowerShell uygulamalarına göz attıktan sonra ise;

PowerShell ISE Üzerinde Power BI Kullanımı

İlgili arabirimlerimizi kullanabilir durumda olduğumuza göre şimdi PowerShell üzerinde Power BI işlemlerine başlayabiliriz.Bu işlemleri gerçekleştirebilmek için gereksinim olan MicrosoftPowerBIMgmt kütüphanesinin yerel cihazımızda bulunması gerekmektedir.

Bunu hızlıca PowerShell üzerinden kontrol edebiliriz.
Alt kısımda bulunan kod parçacığını PowerShell üzerinde çalıştırıp, bulunma durumunu kontrol edebilirsiniz;

Get-Module MicrosoftPowerBIMgmt* -ListAvailable
microsoft power bi check microsoftpowerbimgmt library powershell

İlgili kodu çalıştırdığımızda kütphanenin sistemimizde yüklü olduğu görüntülenmektedir.

NOT: PowerShel üzerinde herhangi bir satırı yorum olarak kullanmak için # sembolünden faydalanabilirsiniz.
Bir yorumu birden çok satır için kullanacaksanız (Çoklu yorum satırı) <# #> sembol grubundan yararlanabilirsiniz.
(Üst görsel kod yorumuna istinaden eklenmiştir.)
PowerShell Comment Line = #
PowerShell Multi Comment Line = <# #>

Ek olarak dilerseniz dosya konumu bazlı da dizin üzerinden kontrol edebilirsiniz;

C:\Program Files\WindowsPowerShell\Modules
microsoft power bi power shell package folder detail

Yüklü olmadığı durumda ise öncelikli olarak; 

  • PowerShell Gallery platformuna erişip, ( https://www.powershellgallery.com/ )
  • MicrosoftPowerBIMgmt kütüphanemizi arama kısmında aratıp, ilgili sayfaya erişmemiz gerekmektedir.
Kütüphane bilgi sayfasına eriştiğimizde ise Install Module altında yer alan yükleme kod parçacığını kopyalayıp;
microsoft power bi power shell package

PowerShell üzerinde çalıştırabilirsiniz.

Install-Module -Name MicrosoftPowerBIMgmt

Çalıştırma sonrasında yerel cihaz kullanıcıları adına (Yönetici dışı kullanıcılarExecution Policy (Yürütme Politikası – Kod Derleme İzni vb.) bir hata alabilirsiniz.

Bunun için izniniz mevcutsa Run Administrator – Yönetici Olarak Çalıştır diyerek PowerShell’i kapatıp tekrar açmanız gerekir, ya da;

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

kod bloğunu ilgili kullanıcı ile derleyerek mevcut işlemlere devam etmek için kullanım iznini elde edebilirsiniz.
Belirtilen yürütme izni için onay verdiğimizde; (Yes-Yes to All

microsoft power bi power shell local machine policy undefied accept

paket yönetimi ve yerel uygulama yönetme işlemlerine yönelik yetkileri edinmiş olacağız. (Politika inaktif olacak.)
Gerekli izni edindikten sonra tekrar 
MicrosoftPowerBIMgmt kütüphanemizi yüklemeye çalıştığımızda;

microsoft power bi power shell power package install

ilgili görseldeki gibi paket yükleme izni talep eden bir ekranla karşılaşacağız.
Belirtilen kaynak üzerinden (PSGallery) yüklenecek paketler için onay verdiğimizde; (Yes-Yes to All

microsoft power bi power shell power package install process

paket yükleme süreci başlayacaktır.

Tamamlandığında ise konsol kod kullanım satırı tekrar aktifleşecektir.

microsoft power bi power shell power package install done

şeklindedir. (Üst dosya dizini üzerinden kontrol gerçekleştirebilirsiniz.)

Power BI aracına yönelik PowerShell üzerinde işlemlerde bulunabilmek için mevcut paketlere hızlıca göz atmamız gerekmektedir.
Paket içerik ve kullanımı için;
https://learn.microsoft.com/en-us/powershell/power-bi/overview?view=powerbi-ps 
bağlantısına kontrol edebilirsiniz.

Ön kontrolleri sağladıktan sonra PowerShell üzerine dönecek olursak ilk işimiz Power BI servislerimize erişebilmek olmalı.

Bunun için;

Connect-PowerBIServiceAccount

kodunu kullanabiliriz.

microsoft power bi power shell power service connect

Çalıştırdığımızda ise;

microsoft power bi power shell power service connect open login page

Power BI hizmetlerine erişirken ön kontrol sağlayan kullanıcı adı ve parola ekranı açılmaktadır.

NOT:Burada bağlanacağınız kullanıcıya yönelik işlemler yapabilmektesiniz.
Yani; kurumsal olarak sistemde yer alan bir kullanıcı iseniz kendi çalışma alanınız üzerindeki bilgiler ile işlemde bulunabilir, kurumsal yönetici kullanıcısı iseniz tüm servis hizmetleri üzerinde işlemde bulunabilirsiniz.

İlgili kullanıcı bilgileri ile giriş gerçekleştikten sonra servise bağlandığınızı gösteren

  • Environment (Servis ortam tipi)
  • TenantID (Kiracı ID / Kullanıcı ID)
  • UserName (Kullanıcı adı / İlgili kullanıcı mail)
bilgileri geri dönüş değeri olarak konsol üzerinde verilmektedir;
microsoft power bi power shell power use service

Power BI hizmetine erişim gerçekleştirdikten sonra bu erişimi inaktif etmek için;

Disconnect-PowerBIServiceAccount

kodunu kullanabiliriz.

microsoft power bi power shell disconnect service

Doğrusal bir şekilde düşündüğümüzde kurumsal bir firma içerisinde yer alıyorsak;

  • Bu yerel cihaz üzerinde birden çok kişi işlemde bulunabilir, (Sunucu olabilir)
  • Mevcut cihazımızda kurumsal olarak bilgilerimizin kayıtlı kalması bilgi kaybına yol açabilir (Bilgilere erişilebilir)

sonuçları düşünülerek erişim bilgileri ve erişim noktaları kesinlikle güvenlik altına alınmalı ya da adımlar güvenli şekilde atılmalıdır.

Power BI hizmeti üzerinde oturum kapatmadığımızda aşağıda görüldüğü gibi ilgili kullanıcı oturumu bilgiler kayıt edilmiş ve kullanılabilir şekilde önbellekte yer almaktadır.

microsoft power bi power shell sign and use service

Power BI servisine tekrar bağlanarak servis üzerindeki işlemlerimize devam edelim.

Mevcut çalışma alanlarını bir liste olarak görüntülemek istediğimizde;

Get-PowerBIWorkspace

kodunu kullanabiliriz.

Kod çalıştırıldığında ise;

  • ID (Çalışma alanı ID’si)
  • Name (Çalışma alanı adı)
  • IsReadOnly (Çalışma alanı salt okunur mu)
  • IsOrphaned* (Artık çalışma alanı mı)
    *
    An orphaned workspace is one that does not have an admin assigned.
  • IsOnDedicatedCapacity (Atanmış/Adanmış kapasiteye sahip mi)
  • CapacityId (Kapasite ID’si)
bilgileri geri dönüş değeri olarak konsol üzerinde verilmektedir;
microsoft power bi power shell workspace detail

Tüm çalışma alanlarını görüntülemek için ise;

Get-PowerBIWorkspace -All

kodunu kullanabiliriz. (-All komutu eklenerek.)
*İlgili kullanıcı mevcut tüm alanlarda yönetici olduğu için aynı çalışma alanları çıktıları yer almaktadır.

Üst seviyede yer alan kullanıcı olarak değilde kiracı düzeyinde düşünerek, tüm kiracıların yer aldığı çalışma alanlarına göz atacak olursak; 

Get-PowerBIWorkspace -Scope Organization -All

kodunu kullanabiliriz. (-Scope Organization komutu eklenerek.)
*Kod parçacıkları ana öbek üzerinden eklenerek gitmektedir.

Burada ilgili kurumsal kullanımda ki (Organizasyonda yer alan) tüm personellerin çalışma alanları da yer almaktadır. (*Personal Workspace)

microsoft power bi power shell personal workspace

Mevcut çalışma alanlanları (Admin kullanıcısı) üzerindeki raporları bir liste olarak görüntülemek istediğimizde;

Get-PowerBIReport

kodunu kullanabiliriz.

Kod çalıştırıldığında ise;

  • ID (Rapor ID’si)
  • Name (Rapor adı)
  • WebUrl (Rapor web bağlantı linki)
  • EmbedUrl (Rapor web bağlantı ekleme/gömme linki)
  • DatasetId (Veri kaynağı ID’si)
bilgileri geri dönüş değeri olarak konsol üzerinde verilmektedir;
microsoft power bi power shell organization report

Üst seviyede yer alan kullanıcı olarak değilde kiracı düzeyinde düşünerek, tüm kiracıların raporlarına göz atacak olursak; 

Get-PowerBIReport -Scope Organization

kodunu kullanabiliriz. (-Scope Organization komutu eklenerek.)
Burada ilgili kurumsal kullanımda ki (Organizasyonda yer alan) tüm personellerin raporları yer almaktadır. (*Personal Report)

Peki mevcut çalışma alanlanları (Admin kullanıcısı) üzerindeki panoları bir liste olarak görüntülemek istediğimizde ise;

Get-PowerBIDashboard

kodunu kullanabiliriz.

Kod çalıştırıldığında ise;

  • ID (Pano ID’si)
  • Name (Pano adı)
  • IsReadOnly (Pano salt okunur mu)
  • EmbedUrl (Pano web bağlantı ekleme/gömme linki)
bilgileri geri dönüş değeri olarak konsol üzerinde verilmektedir;
microsoft power bi power shell organization dashboard

Üst seviyede yer alan kullanıcı olarak değilde kiracı düzeyinde düşünerek, tüm kiracıların panolarına göz atacak olursak; 

Get-PowerBIDashboard -Scope Organization

kodunu kullanabiliriz. (-Scope Organization komutu eklenerek.)
Burada ilgili kurumsal kullanımda ki (Organizasyonda yer alan) tüm personellerin panoları yer almaktadır. (*Personal Dashboard)

microsoft power bi power shell organization all dashboard

Peki tüm çalışma alanlarında yer alan öğelerin verilerinin barındırıldığı veri kaynaklarını (DataSet) bir liste olarak görüntülemek istediğimizde ise;

Get-PowerBIDataset

kodunu kullanabiliriz.

Kod çalıştırıldığında ise;

  • ID (Veri kaynağı ID’si)
  • Name (Veri kaynağı adı – Raporla aynı adda olur./Değiştirilmemişse!)
  • ConfiguredBy (Veri kaynağını yapılandıran kullanıcı)
  • DefaultRetentionPolicy (Veri kaynağı varsayılan saklama politikası)
  • AddRowsApiEnabled (Veri kümesinin yeni satırlar eklemeye izin verip vermediği)
  • Tables (Veri kaynağına bağlı olan tablolar)
  • WebUrl (Veri kaynağı web bağlantı linki)
  • Relationships (Veri kaynağı bağlantı ilişkileri)
  • DataSources (Bağlı olan kaynaklar)
  • DefaultMode (Varsayılan kullanım modu aktif mi)
  • IsRefreshable (Veri kaynağı için yenileme modu aktif mi)
  • IsEffectiveIdentityRequired (Veri kümesinin API çağrısında gereken kimlik doğrulama talep durumu)
  • IsEffectiveIdentityRolesRequired (.pbix dosyasında satır düzeyinde güvenliğin tanımlanıp tanımlanmadığı)
  • IsOnPremGatewayRequired (Veri kümesinin şirket içi veri ağ geçidi gerektirip gerektirmediği)
  • TargetStorageMode (Veri kümesi veri depolama modu)
bilgileri geri dönüş değeri olarak konsol üzerinde verilmektedir;
microsoft power bi power shell organization dataset

Buraya kadar olan kısımda Power BI öğelerine yönelik ön bilgiler edinmek adına işlemlerde bulunduk.

Peki özet bilgilere ulaşabilir miyiz?
Kaç adet; çalışma alanı, rapor, pano ve veri kaynağı mevcut gibi…

Çözüm için şöyle düşünebiliriz; detaylı bir geri dönüş bilgisi alıyoruz, bunu saydırabilirsek değerlere ulaşabiliriz.
Ama öncesinde her bir dönüşü birer parametreye atamamız gerekmektedir. (Sonucu saydırabilmek için.

Bunu yapmak istediğimizde; (Tüm admin çalışma alanları için.)

$tumAdminCalismaAlanlari = Get-PowerBIWorkspace -All

adlandırmak istediğimiz/kullanmak istediğimiz parametre ifadesinin başına ” $ ” operatörünü ekleyerek işlemde bulunmamız gerekmektedir.

Kodumuzu çalıştırdığımızda;

microsoft power bi power shell using parameter

ilgili atama işlemi gerçekleşmektedir.

Parametremizi çağırdığımızda; (Aslında nesne özelliği mevcut)

microsoft power bi power shell parameter result

ilgili çalışma alanlarının bilgileri geri dönüş olarak konsol üzerinde yer almaktadır.

Parametremizi üzerinde işlem yapmak istediğimizde (“.” ekleyip CTRL+SPACE) bize bir işlem öneri ekranı açılacaktır;

microsoft power bi power shell organization workspace process

Açılan ekran üzerinden COUNT (Saymak) seçeneğini kullanıp parametre dönütünü saydıracak olursak;
*Birden çok işlem seçeneği mevcut, anlık kullanım durumu olduğu için ilgili fonksiyon seçilerek işlemde bulunuldu.

microsoft power bi power shell organization workspace count

çalışma alanı sayımıza ulaşıyor olacağız.

Acaba diyerek; tüm sonuçları saydırdık bir hata var mıdır? şeklinde düşünürsek, Id değerlerini saydırıp bir nebze rahatlatıcı sonuçta elde edebiliriz.

Yani;

$tumAdminCalismaAlanlari.Id.Count

kodunu çalıştırarakta aynı sonuca ulaşabiliriz.

microsoft power bi power shell organization workspace different count

Evet buraya kadar tekil işlemlerde bulunduk.
Şimdi son değer üretme işlemini tüm nesneler için genelleyecek olursak;

#CALISMA ALANLARI DEGERLERI;
$tumAdminCalismaAlanlari = Get-PowerBIWorkspace -All
$tumAdminCalismaAlanlari.Count
$tumAdminCalismaAlanlari.Id.Count

$tumOrganizasyonCalismaAlanlari = Get-PowerBIWorkspace -All
$tumOrganizasyonCalismaAlanlari.Count
$tumOrganizasyonCalismaAlanlari.Id.Count


#RAPOR DEGERLERI;
$tumAdminRaporlari = Get-PowerBIReport
$tumAdminRaporlari.Count
$tumAdminRaporlari.Id.Count

$tumOrganizasyonRaporlari = Get-PowerBIReport -Scope Organization
$tumOrganizasyonRaporlari.Count
$tumOrganizasyonRaporlari.Id.Count


#PANO DEGERLERI;
$tumAdminPanolari = Get-PowerBIDashboard
$tumAdminPanolari.Count
$tumAdminPanolari.Id.Count

$tumOrganizasyonPanolari = Get-PowerBIDashboard -Scope Organization
$tumOrganizasyonPanolari.Count
$tumOrganizasyonPanolari.Id.Count


#VERI KAYNAGI DEGERLERI;
$tumAdminVeriKaynaklari = Get-PowerBIDataset
$tumAdminVeriKaynaklari.Count
$tumAdminVeriKaynaklari.Id.Count

$tumOrganizasyonVeriKaynaklari = Get-PowerBIDataset -Scope Organization
$tumOrganizasyonVeriKaynaklari.Count
$tumOrganizasyonVeriKaynaklari.Id.Count
microsoft power bi power shell organization all object

ve bunları özet birer değere dönüştürecek olduğumuzda;

$tumAdminCalismaAlanlari.Id.Count
$tumOrganizasyonCalismaAlanlari.Id.Count
$tumAdminRaporlari.Id.Count
$tumOrganizasyonRaporlari.Id.Count
$tumAdminPanolari.Id.Count
$tumOrganizasyonPanolari.Id.Count
$tumAdminVeriKaynaklari.Id.Count
$tumOrganizasyonVeriKaynaklari.Id.Count

ilgili çıktıyı elde etmekteyiz;

microsoft power bi power shell organization all object data

“+” değer birleştirme operatörünü kullanarak bir nebze çıktıları ifadesel olarak anlamlı hale dönüştürecek olursak;

"Admin Calisma Alani Sayisi: " + $tumAdminCalismaAlanlari.Id.Count
"Organizasyon Calisma Alani Sayisi: " + $tumOrganizasyonCalismaAlanlari.Id.Count
"Admin Rapor Sayisi: " + $tumAdminRaporlari.Id.Count
"Organizasyon Rapor Sayisi: " + $tumOrganizasyonRaporlari.Id.Count
"Admin Pano Sayisi: " + $tumAdminPanolari.Id.Count
"Organizasyon Pano Sayisi: " + $tumOrganizasyonPanolari.Id.Count
"Admin Veri Kaynagi Sayisi: " + $tumAdminVeriKaynaklari.Id.Count
"Organizasyon Veri Kaynagi Sayisi: " + $tumOrganizasyonVeriKaynaklari.Id.Count

ilgili çıktıyı elde ederiz.

microsoft power bi power shell organization edit summary

Bugünlük son işlem adına ise servisimizi kapatıp, ilk PowerShell üzerinde PowerBI işlem yazımızı noktalayalım; 

Disconnect-PowerBIServiceAccount

Bir sonraki PowerShell yazımızda/yazılarımızda;

  • Kullanıcı Dökümleri/Özetleri,
  • Kullanıcı Eylemleri/İşlemleri,
  • Hata Çıktıları,
  • Veri Kaynağı İşlem Geçmişleri,
  • Öğelerin Dışarı Aktarılması,
  • İçerik Bilgilerinin Dışarı Aktarılması/Kaynağa Yazılması,
  • Veri Kaynağı Yenilemesi

gibi başlıkları ele alıp, ek işlemlerde bulunuyor olacağız.

Tüm işlemlere yönelik kod dökümünü;
https://github.com/miracozturk17/PowerShellQueryChallenge
bağlantısı üzerinden elde edebilirsiniz.

Gelecek yazılarda görüşmek üzere.

İyi çalışmalar…

, , ,

İlgili Yazılar