power bi microsot data science report net core

Power BI ile .Net Core Çözümlemeleri

Merhaba iyi günler.

Bugün birçok şirketin altyapısı üzerinde bulunan ve vazgeçilmezi olarak görülen C# diline yönelik Power BI kullanımını Gunnar Peipman ve Patrick LeBlanc paylaşımlarından faydalanarak farklı bir çözümleme getirmeye çalıştığım bir şirket projesinde izlediğim köşe taşları ile sizlere aktarmaya çalışacağım.

Aktarmaya çalışacağım çalışmanın çıkış noktası; dağıtık olarak operasyonel süreçleri birkaç program üzerinden takip etmeye çalışan firmanın, merkezi bir uygulama projesi içerisinde tüm faaliyetleri toplamak ve uygulama içerisinde Power BI aracının raporlama çözümlerinden yararlanmak istemesi.

Şematik olarak basit bir yapıda ele alınan çalışma;

mictosoft-power-bi-data-science-net-core-new-operations-system

şeklindedir.

Uygulamanın altyapısı .Net Core 3.0 olarak belirlenmiş ve uyuglama ana iskeleti tamamen oturtulmuş.

Raporlama sistemi Microsoft Power BI olarak belirlenmiş fakat uygulama içerisinde gömülü olarak mı takip gerçekleştirilsin ya da doğrudan Microsoft kullanıcıları oluşturularak takip tamamen ayrık mı sağlansın ? sorusuna yanıt aranmaktaydı.

Mantıken baktığımızda raporları uygulama içerisine gömmek ve kullanıcı erişimine açmak için 3 tip yöntem üzerinde durabiliriz.

  1. Power BI Web Portalı üzerinden Admin erişimi ile Report Web URL oluşturup IFrame yapısında uygulama içerisine raporları gömmek ve kullanıcı kullanımına açmak.
  2. Power BI Web Portalı üzerinden Report Embed özelliği kullanarak raporlara uygulama içerisinden erişim sağlarken kullanıcı girişi gerçekleştirip, raporları ilgili kullanıcının nezdinde kullanıma açmak.
  3. Power BI Web Portal ve Microsoft Azure üzerinden ilgili bilgileri edinip raporları IFrame yapısında giriş yapmadan (Kısmi olarak-Azure bilgileri uygulamaya gömülü) uygulama içerisine gömerek kullanımı sağlamak.
Bu yöntemleri sırası ile test etmek için bir demo oluşturalım.
Visual Studio üzerinden yeni bir ASP .Net Core Web Application oluşturup, proje adı ve proje konumu belirleyerek; 
mictosoft-power-bi-data-science-net-core-create-app

ASP .Net Core versiyonu ve uygulama tipi tercihinden sonra projemi oluşturuyorum.

mictosoft-power-bi-data-science-net-core-create-app-next

Oluşturduğum uygulamanın kaynak yapısı ön izlemesi;

mictosoft-power-bi-data-science-net-core-create-app-finish

şeklindedir.

Uygulamayı bir web tarayıcı üzerinde (Brave) çalıştırdığımda;

mictosoft-power-bi-data-science-net-core-default

ön izlemesi ile karşılaşmaktayım.

Altyapımı oluşturduktan sonra çıkarımlarda bulunduğumuz alternatif çözümlemelerden ilki ile (Public Report Web URL) bir test oluşturalım.

Pages (Sayfalar) altında yeni bir Razor Page oluşturalım;

mictosoft-power-bi-data-science-net-core-url-view

oluşturduğumuz sayfa için mevcut Layout (Ana Plan-Düzen-Ana Tema) yapımızı tanımlayıp, isimlendirme (WebUrl) işlemini gerçekleştirdikten sonra sayfa oluşturma adımlarımızı tamamlayalım.  

mictosoft-power-bi-data-science-net-core-url-view-layout

Oluşturduğumuz sayfamız için (WebUrl) kullanacağımız rapor linkimizi Power BI Web Platformu üzerinden Web’de Yayımla (Publish to Web) çözümlemesinden elde edelim. 

mictosoft-power-bi-data-science-web-url

Elde ettiğimiz rapor linkimizi oluşturduğumuz sayfamızın (WebUrl) içerisinde IFrame yapısı şeklinde kullanalım.

  • Width (Genişlik): IFrame yapısının genişliği.
  • Height (Yükseklik): IFrame yapısının yüksekliği.
  • Source-Src (Kaynak): IFrame yapısının ön izleme kaynağı.
  • Frameborder (Çerçeve Kenarlığı): IFrame yapısının etrafını kaplayan çerçeve kenarlığı.
  • Allowfullscren (Tam Ekrana İzin Ver): IFrame yapısının tam ekran modu.
mictosoft-power-bi-data-science-web-url-net-core-web-url-new

Son olarak sayfamızı Layout içerisine dahil edelim. 

mictosoft-power-bi-data-science-web-url-link

Oluşturduğumuz yapımızı test ettiğimizde ise;

mictosoft-power-bi-data-science-web-url-net-core

ön izlemesi ile karşılaşırız.

Çıkarımlarda bulunduğumuz alternatif bir diğer çözümlememiz ile (Report Embed) devam edelim.

Pages (Sayfalar) altında yeni bir Razor Page oluşturalım;

mictosoft-power-bi-data-science-net-core-url-view

oluşturduğumuz sayfa için mevcut Layout (Ana Plan-Düzen-Ana Tema) yapımızı tanımlayıp, isimlendirme (ReportEmbed) işlemini gerçekleştirdikten sonra sayfa oluşturma adımlarımızı tamamlayalım.  

mictosoft-power-bi-data-science-net-core-url-view-layout

Oluşturduğumuz sayfamız için (ReportEmbed) kullanacağımız rapor linkimizi Power BI Web Platformu üzerinden Ekle çözümlemesinden elde edelim. 

mictosoft-power-bi-data-science-report-embed

Elde ettiğimiz rapor linkimizi oluşturduğumuz sayfamızın (ReportEmbed) içerisinde IFrame yapısı şeklinde kullanalım.

mictosoft-power-bi-data-science-web-url-net-core-report-embed

Son olarak sayfamızı Layout içerisine dahil edelim. 

microsoft-power-bi-data-science-web-report-embed

Oluşturduğumuz yapımızı test ettiğimizde ise;

microsoft-power-bi-data-science-web-url-report-embed

ön izlemesi ile karşılaşırız.

Burada ilgili rapor kullanıcısının bilgileri ile giriş yapması gerekmektedir.

Giriş yapıp tekrardan sayfaya döndüğünde;

microsoft-power-bi-data-science-report-embed-net-core

görünümü ile karşılaşır.Burada rapor kullanıcısı, rapor nezdinde kendisine atanmış rol ile rapor kullanımını gerçekleştirir.

Ek olarak rapor kullanıcısı ile rapor paylaşımı gerçekleştirilmemiş ise ön izleme hatası alınacaktır.

Çıkarımlarda bulunduğumuz son çözümlememiz ile (Microsoft Azure) test işlemlerimizi gerçekleştirelim.

Bu yöntemimizde belirli seviyede kodlama ile bir yapı kurmaya çalışacağız.

Pages (Sayfalar) altında yeni bir Razor Page oluşturalım; 

mictosoft-power-bi-data-science-net-core-url-view

oluşturduğumuz sayfa için mevcut Layout (Ana Plan-Düzen-Ana Tema) yapımızı tanımlayıp, isimlendirme (Azure) işlemini gerçekleştirdikten sonra sayfa oluşturma adımlarımızı tamamlayalım.  

mictosoft-power-bi-data-science-net-core-url-view-layout

Sayfa oluşturma işlemimizin ardından uygulamamızın içerisinde Power BI raporlarımızı kullanabilmek için Azure üzerinden bazı uygulama bilgilerini almamız gerekmektedir.

Bilgilere erişmek için doğrudan; https://dev.powerbi.com/apps linkini kullanabilirsiniz. 

Link üzerinden erişim sağladığınızda aşağıdaki gibi bir giriş ekranı ile karşılaşacaksınız;

mictosoft-power-bi-data-science-net-core-azure-login

İlgili kullanıcı bilgileri ile giriş sağlandıktan sonra;

  • Application Name (Uygulama Adı): Azure üzerindeki uygulamamızın (Paylaşımımızın) adı.
  • Aplication Type (Uygulama Tipi): Kurgulanacak-Geliştirdiğimiz uygulama tipi.
  • Home Page URL (Anasayfa Linki): Uygulmamızın kullanılacağı anasayfa linki.
  • Redirect URL (Yönlendirme Linki): Uygulamanızın bir yetkilendirme kodu alabilmesi için kullanıcıların oturum açtıklarında yönlendirilecekleri link.
mictosoft-power-bi-data-science-net-core-azure-app

Gerekli bilgilerin girişini gerçekleştirdikten sonra bize Application ID ve Application Secret bilgisi sağlanacaktır.

Close (Kapat) dedikten sonra son adım olarak sistem, aşağıdaki gibi işlemlerin başarılı şekilde tamamlandığına dair bir bildirimde bulunulacak.

microsoft-power-bi-data-science-net-core-azure-app-succes

Ardından uygulamamızın doğrudan servis bağlantısı gerçekleştirebilmesi için appsettings.json üzerindeki yapıyı;

mictosoft-power-bi-data-science-net-core-app-settings-json

aşağıdaki gibi düzenlememiz gerekmektedir.

mictosoft-power-bi-data-science-net-core-app-settings-json-edit
  •     ApplicationId: Üst kısımda Azure üzeriden elde ettiğimiz Application ID.
  •     ApplicationSecret: Üst kısımda Azure üzerinde elde ettiğimiz Application Secret ID.
  •     ReportId: Alt kısımda belirttiğim gibi ilgili raporun id’si.
  •     WorkspaceId: Alt kısımda belirttiğim gibi ilgili çalışma alanının id’si. 
  •     AuthorityUrl: Alt kısımda belittiğim URL kısmına Azure kiracı kimliği gelecektir.  https://login.microsoftonline.com/URL/oauth2/token 
  •     ResourceUrl: Sabit windows api kaynağı.
  •     ApiUrl: Sabit Power BI Api kaynağı.
  •     EmbedUrlBase: Sabit Power BI url kaynağı.
  •     UserName: Power BI kullanıcı adı.
  •     Password: Power BI kullanıcı parolası.
mictosoft-power-bi-data-science-workspace-id
mictosoft-power-bi-data-science-report-id
mictosoft-power-bi-data-science-workspace-azure

Ardından Controllers üzerinde altyapımızı oluşturacak modellerimizi (PowerBISettings),

microsoft-power-bi-data-science-report-embed-new-model

(PowerBIEmbedConfiguration) oluşturalım.

microsoft-power-bi-data-science-net-core-report-model-embed-configuration

Sonrasında ise Controller altındaki kod yapımızı kurgulayalım.

microsoft-power-bi-data-science-controller-code

Ek olarak Power BI ayarlarımızı yapılandıralım.

microsoft-power-bi-data-science-controller-code-startup

Son olarak View sayfamızı düzenledikten sonra;

sayfamızı test ettiğimizde (Layout alanına sayfamızı ekleyip);

microsoft-power-bi-data-science-web-url-net-core-azure-finish

görünümü ile karşılaşırız.

Oluşturduğumuz 3 opsiyonel çözümde kullanım uygulamalarımız içerisinde rapor kullanımı için tercih edilebilir.

Fakat;

  • Web URL çözümünde rapor linkimize erişebilen bir kurum içi-kurum dışı kullanıcı anlık olarak verilerimizi görüntüleyebilir.(Risk durumu oldukça yüksek.)
  • Report Embed çözümümüz de ayrık raporlar oluşturup ilgili kullanıcı grupları ile paylaşıp sonrasında uygulama içerisinde giriş yapmalarını sağlayarak kullanımlarına açabiliriz.(Tercih edilen ve en uygun görülen çözüm gibi gözükmektedir.)
  • Azure ve Power BI Portal giriş bilgileri ile rapor kullanımını sağlamak en riskli yöntem olarak gözükmektedir.Herhangi bir şekilde uygulama içerisine erişilip, bilgilerimiz elde edildiği takdirde (Azure ve Power BI Portal) büyük problemlerin oluşması kaçınılmaz gibi gözükmektedir.

Hangi çözümlemenin daha uygun olacağını kurumsal süreç ve esneklikleriniz doğrudan belirleyecektir.

Uygulama kaynak kodlarına yazımın başında belirttiğim gibi kendisini yakından takip ettiğim ve sürekli paylaşımlarından çıkarımlarda bulunmaya çalıştığım Gunnar Peipman web sitesi üzerinden erişebilirsiniz.(Takip etmenizi öneririm.)

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

İyi çalışmalar…

, , , ,

İlgili Yazılar