Power BI ile .Net Core Çözümlemeleri

Mirac Öztürk
7 min readAug 1, 2020

power bi microsoft net core reporting ai ml

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;

power bi microsoft net core reporting ai ml report architecture

ş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;

power bi microsoft net core reporting ai ml report architecture visual studio

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

power bi microsoft net core reporting ai ml report architecture visual studio new project

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

power bi microsoft net core reporting ai ml report architecture visual studio project folders

şeklindedir.

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

power bi microsoft net core reporting ai ml report architecture visual studio web app

ö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;

power bi microsoft net core reporting ai ml report architecture visual studio web app add razor page

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.

power bi microsoft net core reporting ai ml report architecture visual studio web app add razor page rebuild

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.

power bi microsoft net core reporting ai ml report architecture visual studio web app publish to web

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.
power bi microsoft net core reporting ai ml report architecture visual studio web app view model page

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

power bi microsoft net core reporting ai ml report architecture visual studio web appview model html page

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

power bi microsoft net core reporting ai ml report architecture visual studio web app url

ö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;

power bi microsoft .net core visual studio solutions app rapzor page

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.

power bi microsoft .net core visual studio solutions app view

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

power bi microsoft .net core visual studio solutions app url

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

power bi microsoft .net core visual studio solutions app view structre

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

power bi microsoft .net core visual studio solutions app view design html

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

power bi microsoft net core reporting ai ml report architecture visual studio web app report embed login

ö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;

power bi microsoft net core reporting ai ml report architecture visual studio web app after login

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;

power bi microsoft .net core visual studio solutions app razor page embed create 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.

power bi microsoft .net core visual studio solutions app add razor page embed

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;

power bi microsoft net core reporting ai ml report architecture visual studio web dev register app

İ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.
power bi microsoft net core reporting ai ml report architecture visual studio web app create detail

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

power bi microsoft net core reporting ai ml report architecture visual studio web create app success

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.

power bi microsoft net core reporting ai ml report architecture visual studio web create app success registred

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

power bi microsoft net core reporting ai ml report architecture visual studio web create app json

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

power bi microsoft net core reporting ai ml report architecture visual studio web app json setting
  • 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ı.
power bi microsoft net core reporting ai ml report architecture visual studio web app workspace edit
power bi microsoft net core reporting ai ml report architecture visual studio web report url
power bi microsoft net core reporting ai ml report architecture visual studio web app azure setting

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

power bi microsoft net core reporting ai ml report architecture visual studio web app solutions file build

(PowerBIEmbedConfiguration) oluşturalım.

power bi microsoft net core reporting ai ml report architecture visual studio web app solution file restore

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

power bi microsoft net core reporting ai ml report architecture visual studio web solutions app embed configuration

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

power bi microsoft net core reporting ai ml report architecture visual studio web solutions app embed configuration restore

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

power bi microsoft net core reporting ai ml report architecture visual studio web solutions app endless file

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

power bi microsoft net core reporting ai ml report architecture visual studio web solutions app azure oppening

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…

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Mirac Öztürk
Mirac Öztürk

Written by Mirac Öztürk

Data Scientist + Mathematician / Coder — Gamer miracozturk.com

No responses yet