3 Ocak 2018 Çarşamba

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -3 (Workspaces, Datasets)

Power BI üzerinde gerçek zamanlı raporlama konusuna üçüncü yazımızla devam ediyoruz.

Bir önceki yazımızda Power BI üzerinde gerçek zamanlı raporlama yapmak için kullanacağımız Power BI REST API'den, Azure AD üzerinde uygulama kaydetmekten ve token almaktan bahsettik.

Power BI REST API yardımıyla Power BI portal üzerindeki nesneleri programatik olarak yönetebiliyoruz. İzlemek istediğimiz veriyi yine bu API yardımıyla portale gönderiyoruz. Power BI REST API'yi belli yetkiler çerçevesinde kullanabilmekteyiz. Bu güvenlik doğrulamasının yapılabilmesi için uygulamamızı Azure AD'ye kaydetmemiz ve bir Application ID elde etmemiz gerekti. Biz de önceki yazımızda bu gereği yerine getirdik. Hem uygulama kaydetmeyi hem de kayıt bilgileri ile token elde etmeyi el aldık. Bu yazıdakileri uygulayabilmek için bir önceki yazıda geçen işlemleri uygulamanız gerekmektedir.

Önceki yazıya şu linkten ulaşabilirsiniz:


Uygulamamızı geliştirmeye devam ediyoruz. Sıra Power BI nesneleri oluşturmada ve bunları görüntülemede.

Bu çalışmada genel olarak şu adımları atacağımızı ifade etmiştik:
  1. Öncelikle Azure Active Directory servisi üzerinde OAuth 2.0 protokolüne göre güvenliğin/yetkilerin denetlenebilmesi için uygulamamızı kaydedeceğiz (register). Power BI hesapları arkaplanda Azure Active Directory Servisi ile yönetilmektedir.
  2. Kayıt sırasında uygulamamızın Power BI API'yi hangi yetkilerle kullanabileceğini belirteceğiz.
  3. Tamamen kodun işleyişine odaklanabilmek için Visual Studio'da bir Console projesi açacağız. Bu proje içerisinden gönderdiğimiz isteklerle gerekli nesneleri portalde oluşturacak, hemen ardından bir döngü ile ürettiğimiz verileri portale göndereceğiz.
  4. İhtiyacımız olan sınıfları kullanabilmek için öncelikle Azure Active Directory ve Power BI API dll'lerini projemizin referanslarına ekleyeceğiz.
  5. Kaydettiğimiz uygulama bilgilerini veya kullanıcı kimlik bilgilerini kullanarak Azure AD'den token alacağız. Bu token, API istekleri sırasında kullanılmaktadır. API'ye erişim yetkileri bu token sayesinde doğrulanmaktadır.
  6. Projemiz içerisinden sırasıyla gerekli Power BI nesnelerini oluşturacağız ve veri göndermeye başlayacağız.
  7. Gönderdiğimiz verileri Power BI portalde oluşturacağımız Dashboard (pano) üzerinde yayınlayacağız. Önceden tanımlı görselleri kullanarak akışı farklı bakış açıları ile izleyebileceğiz.

Çalışma Alanı (Workspaces -Group) Oluşturmak


Power BI'daki Dataset, Table, Report, Dashboard nesneleri Çalışma Alanları (Workspaces) içerisinde tutulur. Yetkilendirme ve çalışmaları ayırma açısından Çalışma Alanları bir hayli önemlidir. Çalışma alanına diğer kişileri davet ederek ortak çalışmalar yürütebilirsiniz. Ayrıca çalışmalarınızı Power BI App haline getirerek App menüsü altında derli toplu şekilde tutabilir, farklı kişilerle de paylaşabilirsiniz. 

Sol menüden Çalışma Alanı oluşturup, görüntüleyebilir, mevcutları düzenleyebilirsiniz. Varsayılan Çalışma Alanı 'My Workspace' dir.



Hemen bir önceki yazımızda Visual Studio üzerinde geliştirmeye başladığımız Console uygulamamızı açıp Power BI REST API'yi kullanarak bir Workspace oluşturalım.

Öncelikle gerekli kütüphaneleri yükleyelim. Power BI REST API kütüphanelerini yüklemek için Package Manager Console'a şu ibareyi yazıyoruz:
Install-Package Microsoft.PowerBI.Api


Kütüphaneler yüklendikten sonra aşağıdaki namespaceleri kullanalım ve bir PowerBIClient nesnesi örnekleyelim:
using Microsoft.PowerBI.Api.V2;
using Microsoft.PowerBI.Api.V2.Models;

PowerBIClient nesnesi önceki yazımızda elde ettiğimiz token bilgisini ve Api Base Uri istemekte. Api Uri kısmına "https://api.powerbi.com/" adresini veriyoruz. Hemen ardından PowerBIClient nesnesinin üzerinden CreateGroup metotuna ulaşıyoruz ve grubu oluşturuyoruz. Oluşturduğumuz gruba bir Id atanıyor. Bu Id'yi daha sonra kullanacağımız için bir değişken üzerinde tutalım. 

Bu arada kodlar daha açık görünsün diye Id'yi Console ekranından kopyalıyorum ve değişkene statik olarak atıyorum.


Kodu çalıştırdıktan sonra YeniGroup isimli Workspace'in oluştuğunu Power BI portal üzerinden doğrulayabiliriz.


Simdi sıra Çalışma Alanı içerisindeki Dataset ve Table nesnelerini oluşturmakta.

Veri Kümesi (Dataset) ve Tablo (Table) Oluşturmak


Power BI Portal üzerinde içerisinde tablolar barındıran farklı türden Datasetler oluşturabiliyoruz. Dataset türlerini defaultMode özellinde belirtiyoruz. Bu türler Push, Streaming, PushStreaming, AzureAS, AsOnPrem olarak belirtilebilir. Varsayılan tür Push olarak belirlenmiştir. Biz bu örneğimizde defaultMode'u Streaming olarak belirteceğiz. Bu şekilde saniyede 5 istek gönderebiliriz ve gerçek zamanlı Dashboard (pano) görsellerimizden daha yumuşak geçişli olanları kullanabiliriz. Ancak bu türü seçersek, veri akışı durduğunda sadece 1 saat daha görseller üzerindeki verileri görebiliyoruz. Yani bu türden Dataset'ler uzun süre veri tutamıyor ve portal üzerinden de rapor tasarlanmıyor. Sadece Dashboard tasarımı yapmak mümkün oluyor. Push seçildiğinde bunları yapabiliyoruz fakat bu durumda saniye 1 istek ve saatte 1 milyon satır limiti ortaya çıkıyor.

PowerBIClient nesne örneğimiz ile Dataset ve içerisinde Table oluşturalım. defaultMode özelliğini Streaming olarak belirtiyoruz ve API ile satır ekleyebilmek için addRowsAPIEnable özelliğini true olarak işaretliyoruz.

Örneğimizde bir tür rüzgar tribünü simülasyonu yapacağız. Aşağıdaki gibi bir kodla ihtiyacımız olan Dataset, Table ve Column nesnelerini oluşturabiliriz. 


Örneğimizdeki tabloyu oluştururken desteklenen veri tiplerine de değinmiş olduk. Şuradan da desteklenen tipleri inceleyebilirsiniz:

Power BI portal üzerindeki Dataset'lere erişmek isterseniz; My Workspace içerisindekiler için GetDataset, diğer Workspace içerisindekiler için GetDatasetInGroup metotlarını kullanabilirsiniz. 

Belirtilen Workspace'teki tüm Datasetler'i bir döngüyle getirebilirsiniz. Az önce oluşturduğumuz Workspace'in groupId'sini kullanarak oluşturduğumuz Dataset bilgisini görüntüleyelim. 


YeniDataSet isimli Dataset'e atanan Id'yi de bir değişken üzerinde tutalım. Daha sonra bu Id ile Dataset'e veri göndereceğiz. 

Buradaki kodlarda sadelik olsun diye Id'leri Console ekranından kopyalayıp statik olarak değişkene atadım. Sizler amaca uygun olarak bu kodları düzenlersiniz.

Bu yazımızda gerekli nesneleri oluşturmuş olduk. Bir sonraki yazımızda veri gönderme aşamasına geçebiliriz.

Hiç yorum yok:

Yorum Gönderme