31 Aralık 2017 Pazar

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -2 (Azure AD Üzerinde Uygulama Kaydetme ve Token Üretme)

Power BI üzerinde gerçek zamanlı raporlama konusuna devam ediyoruz.

Bir önceki yazımızda Power BI ile yeni tanışanlar için bir giriş yapmıştık ve seride atacağımız adımları özetlemiştik. Bu yazımızda geliştirme safhasına geçebiliriz. 

Önceki yazıya şu linkten ulaşabilirsiniz:
http://www.abdullahkise.com/2017/12/power-bi-uzerinde-gercek-zamanl.html


Bu çalışmada ş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.

Azure Active Directory Üzerinde Uygulama Kayıt Etme


Geliştireceğimiz uygulamanın Power BI REST API'ye hangi yetkilerle erişebileceğini Azure Active Directory üzerinde belirliyoruz. Azure AD kayıt sırasında uygulamamız için bir Application Id üretiyor. Bu Application Id ile birlikte kullanıcı kimlik bilgilerini veya kayıt sırasında girdiğimiz diğer bilgileri kullanarak Azure AD'den bir token (jeton) alıyoruz. Token görüntüde değişik karakterlerden oluşan uzun bir metindir. Bu token sayesinde uygulamamız tanınıyor ve isteklerimiz kayıt sırasında belirttiğimiz yetkiler çerçevesinde cevaplanıyor. Uygulamamızın kimliği bu token sayesinde OAuth2.0 protokolüne göre doğrulanıyor.

Uygulamayı kayıt etmek için doğrudan Azure Portal üzerinden Azure AD servisine geçebilirsiniz veya dilerseniz Power BI portalden şu adımları atarak da aynı pencereye ulaşabilirsiniz:

Power BI Portale giriş yaptıktan sonra sağ üst köşedeki Settings (Ayarlar) ikonundan Admin Portal (Yönetim Portali) menüsünü tıklayalım. Açılan pencerede Users (Kullanıcılar) menüsünü tıklayıp Go to O365 Admin Center (O365 Yönetim Merkezine Git) butonu ile Office 365 yönetim merkezine geçelim. Yeni sekmede açılması gerek Office 365 yönetim merkezini görüntüleyebilmek için yönetici yetkilerine sahip olmanız gerekiyor. Eğer yönetici değilseniz sistem yöneticinizden bu konuda yardım isteyebilirsiniz.

Office 365 yönetim merkezinde sol menüde en altta bulunan Azure AD linkini tıklayarak yeni pencerede Azure AD servisine geçiş yapabilirsiniz. Burada App Registration (Uygulama Kaydı) menüsüne tıklıyoruz ve + butonu ile uygulama kayıt işlemini başlatıyoruz.


Uygulama kayıt penceresinde uygulamanın tipini seçip bir uygulama adı ve gerçekten var olması zorunlu olmayan fakat geçerli bir URL giriyoruz.

Uygulamayı kaydettikten sonra bir Application Id atanıyor. Şimdi kaydı tıklayıp Power BI API kullanımı için gerekli Read/Write yetkilerini Required Permissions (Gerekli İzinler) menüsünden giderek verebiliriz. Eğer Power BI API Servisi listede yoksa + ile ekleyebilirsiniz.


Artık kayıt ettiğimiz uygulama bilgileri ile Power BI REST API'ye erişecek olan projemizi geliştirmeye başlayabiliriz. Visual Studio üzerinde bir Console projesi başlatıyoruz ve projemize token üretmek için gerekli olan kütüphaneleri ekliyoruz. 

Kütüphaneleri Package Manager Console pencersi yardımıyla ekleyebiliriz. Bu pencereyi Tools / NuGet Package Manager / Package Manager Console menüsü ile açabiliriz. Açılan pencerede aşağıdaki komutu kullanarak gerekli ve ilişkili kütüphaneleri kolayca yükleyebiliriz.

Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory


Token üretmek için gerekli kütüphaneler kısa zamanda yüklenecektir. Hemen kodlamaya geçebiliriz. AuthenticationContext sınıfını örnekleyip AcquireTokenAsync metoduna kayıt sırasında kullandığımız bilgileri giriyoruz ve bu örneğimizde Result.AccesToken properties ile token elde ediyoruz. Öncelikle şu namespacei eklemenizi işinizi kolaylaştıracaktır: using Microsoft.IdentityModel.Clients.ActiveDirectory;


Dilerseniz AcquireTokenAsync metoduna aşağıda gibi kullanıcı kimlik bilgilerini doğrudan belirterek giriş penceresini kullanmadan da token elde edebilirsiniz.


Bu yazımızda ilk adımı attık ve Azure AD üzerinde uygulamamızı kaydedip API kullanımı için gerekli yetkileri verdik. Hemen ardından kayıt bilgilerini ve kimlik bilgilerini kullanarak açtığımız Console projesi içerisinden token bilgisini aldık. Bu token bilgisini yetki doğrulaması yapılabilsin diye Power BI REST API taleplerinde kullanacağız.

Bir sonraki yazımızda Power BI REST API ile gerekli nesneleri Power BI'da oluşturacağız ve oluşturduğumuz bu nesnelere nasıl erişebileceğimizi ele alacağız.

29 Aralık 2017 Cuma

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -1 (Giriş)

İnsan veya cihaz kaynaklı aktiviteleri gerçek zamanlı olarak izlemek, analiz etmek, özetlemek, raporlamak ve belli değerlerle karşılaşıldığında anında haberdar olmayı istemek, son yılların önemi giderek artan talepleri arasında. Artık hem müşteriler hem de teknoloji sağlayıcıları bu başlıklarda bir takım çalışmalar yapmakta veya bir an önce yapmak istemekte. 

Önceki yıllarda bu ihtiyaca cevap vermek zor ve pahalıydı. Gerçek zamanlı çalışmak bir lükstü. Ancak teknolojideki gelişmeler ve rekabet sayesinde artık çok daha kolay, ucuz ve kaliteli yöntemlerle bu ihtiyaçlara cevap üretmek mümkün.

Gerçek zamanlı akan veri işleme teknikleri durağan veri işleme tekniklerinden çok farklı bakış açıları ve teknolojiler gerektirir. Özellikle hız saniyede milyon/milyar transactiona ulaşıyorsa, akış esnasında verinin analiz edilmesi, özetlenmesi ve farklı hedeflere yönlendirilmesi gerekiyor üstüne bir de gerçek zamanlı tahminlemeler yapılması isteniyorsa, işin içine çok farklı teknik ve teknolojiler girecek demektir. 

Eğer ihtiyaç, veriyi akış esnasında analiz etmek değil doğrudan göstermek ise Microsoft Power BI ile bu ihtiyaca çok ucuz, kolay ve kaliteli bir biçimde cevap verebilirsiniz. Daha fazlası gerektiğinde ise Event Hub, IoT Hub, Stream Analytics, Azure ML gibi Microsoft Azure Servisleri hemen imdadınıza yetişir. Açık kaynak ürünlere nazaran inanılmaz pratik olan bulut servisleri sayesinde akan veri ile ilgili neredeyse tüm ihtiyaçlara cevap üretebilirsiniz. Buna ek olarak Microsoft SQL Server 2016/2017 ile birlikte duyurulan Operational Analytics, PolyBase, R in Database, Python in Database gibi yenilikler sayesinde de alışılmış yerel bir ortamda çalışmak mümkün.

Biz bu yazı serimizde akan verinin doğrudan Power BI'a nasıl yönlendirildiğine ve gerçek zamanlı raporlamanın nasıl yapıldığına odaklanacağız. Öncelikle Power BI ürünüyle yeni tanışanlar için bir giriş yapalım istiyorum.

Power BI, Gartner'in Magic Quadrant'ında lider konumunda olan bir Self-Serivce BI ürünü. Yani departman seviyesinde uçtan uca iş zekası ihtiyacına cevap üretebileceğiniz, üstelik teknik olmayan kişilerce de kullanılması amaçlanan kullanıcı dostu bir ürün. Excel'in Power BI eklentileri ve Power BI Desktop ile ücret ödemeden yerel kaynaklarınızı kullanarak çalışabilirsiniz. Eğer çalışma dosyalarınızı yayınlamak isterseniz Microsoft'un bir bulut hizmeti olan Power BI Portali (www.powerbi.com) bir noktaya kadar ücret ödemeden kullanabilirsiniz. Dilerseniz SQL Server 2017 ile birlikte duyurulan Power BI Report Server'ı edinerek yerel kaynaklarınız üzerinden de rapor paylaşım merkezi oluşturabilirsiniz. Bu raporlara tüm cihazlardan native uygulama olan Power BI App üzerinden veya tarayıcı üzerinden erişebilirsiniz.

Raporlama ihtiyacınızı Microsoft ürünleri ile nasıl seviyelendirebileceğinize bir göz atmak için:
Rapor ihtiyacını Seviyelendirme (Üst Yönetim, Yönetim, Veri Analistleri)

Power BI dünyasına demolarla giriş yapmak için:
Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubatc.html

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubat-satslar-2.html

Hemen yazı serimizin odağı olan, Power BI üzerinde gerçek zamanlı raporlamanın (Real Time Reporting) nasıl yapılacağı konusuna geçelim.

Öncelikle www.powerbi.com adresinden bir Power BI hesabı açalım. Eğer şirketinizin Office 365 aboneliği mevcutsa zaten Power BI kullanıcısı olabilirsiniz. Bu durumda portal sizi tanıyacaktır. Şirket mailinizi ve şifresini kullanarak giriş yapabilirsiniz.

Giriş yaptıktan sonra soldaki menüyü kullanarak bir çalışma alanı (Workspace) açabilir, Get Data ile bir kaynağa bağlanabilir, içinde tablolar (Tables) barınan veri setleri (Data Sets) oluşturabilirsiniz. Tarayıcı üzerinde veya yerel Power BI dosyaları vasıtası ile veri setinden raporlar (Reports) tasarlayabilir, tasarladığınız farklı raporlardaki görselleri bir araya getirebileceğiniz panolar  (Dashboards) açabilirsiniz.


Power BI üzerinde gerçek zamanlı raporlama yapmak için doğrudan Power BI REST API ile çalışacağız. Bu API ile iki şekilde çalışabiliriz; doğrudan http istekleri göndererek veya bu istekleri kapsülleyen Microsoft.PowerBI.Api dll'lini kullanarak. Power BI REST API sayesinde yukarıda bahsi geçen nesnelere yazdığımız bir uygulama içinden erişebilir, yeni nesneler oluşturabilir, var olanları kaldırabiliriz.

Power BI Rest Api Referans dokümanına şu linkten erişebilirsiniz:

Biz de örneğimizde bir Console uygulaması içerisinden Power BI portalde bir Workspace (çalışma alanı) oluşturacağız. Oluşturduğumuz bu Workspace'e bir Streaming DataSet (Veri Seti) göndereceğiz. DataSet içerisinde tanımladığımız Table'ın (tablo) formatına uygun veriyi rüzgar tribünü simülasyonu şeklinde, bir döngü ile sürekli olarak göndereceğiz. Sonrasında çeşitli görseller kullanarak Dashboard (pano) üzerinde bu gönderileri gerçek zamanlı izleyeceğiz.



Bu çalışmada hangi adımları atacağımızı özetleyelim;
  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.

Bu yazımızda Power BI ile yeni tanışanlar için konuya bir giriş yapalım istedim. En sonda özetlediğimiz geliştirme aşamasına sonraki yazımızda odaklanıyoruz.

Eğer kendiniz hızlıca bir şeyler denemek isterseniz şu linkler size yol gösterecektir:

Overview of Power BI REST API

Power BI REST API reference

Power BI API - Apiary