17 Ekim 2018 Çarşamba

Power BI Demo Serisi ( Macera İşleri - 3 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz.  

Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız.

Serimiz bir kaç bölümden oluşuyor. Bu bölümde CALCULATE fonksiyonu ile kullanıcının belirtiği filtrelerden bağımsız hesaplamalar yaptık. RANKX ile çalışanları bir hesaba göre sıraladık. SortbyColumn özelliğini kullanarak da bir alanı (ayları) diğer bir alanın (kaçıncı ay olduğu) değerlerine göre sıraladık."

Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:




Önceki demo serisine erişmek için:

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video

Power BI Demo Serisi ( Macera İşleri - 2 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

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

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


13 Ekim 2018 Cumartesi

Power BI Demo Serisi ( Macera İşleri - 2 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz.  

Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız.

Serimiz bir kaç bölümden oluşuyor. Bu bölümde RELATED ve RELATEDTABLE fonksiyonlarını kullanarak ilişkili kayıtları çağırdık, COUNTROWS ile satırları saydık. PATH, PATHITEM ve LOOKUPVALUE fonksiyonlarını kullanarak tablodaki parent-child hiyerarşiyi çözümledik ve hiyerarşiler oluşturduk."

Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:




Önceki demo serisine erişmek için:

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video


Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

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

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

7 Ekim 2018 Pazar

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz. Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız. Serimiz bir kaç bölümden oluşuyor. Bu bölümde Query katmanında satır ve kolonları filtreliyoruz, yeni alanlar oluşturuyoruz. Relationships katmanında ise tablolar arası ilişki türlerine odaklanıyoruz. Single ve Both çapraz filtreleme davranışını inceliyoruz." Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:
https://1drv.ms/f/s!Ap5-WHzOJRrTgto0PDQ7lgmfec4Uvg



Önceki demo serisine erişmek için:
Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

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

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

5 Ağustos 2018 Pazar

MVP Ödülüne Yeni Dönemde de Layık Görüldük (2018-2019)

Dünya çapında  topluluk lideri olarak tanımlanan bir kaç bin kişiye, Microsoft tarafından verilen MVP (Most Valuable Professional - En Değerli Profesyonel) ödülünü, yeni dönemde de almaya hak kazandık.

Etkinlikler, makaleler, videolar, seminerler, öğrenciler-girişimciler-profesyoneller için mentörlük çalışmaları ve e-kitap gibi çeşitli kanallar üzerinden yaptığım gönüllü paylaşımların profesyonel hayata değer katmış olması sevindirici.

Türkiye'de Data Platform alanındaki 2 MVP'den biri olmak ise gurur verici.

Önümüzdeki dönem Büyük Veri (Data Mining) ile veri yönetimi, Makine Öğrenmesi (Machine Learning), Gelişmiş Analizler (Advanced Analytics) ve İstatistik temelli paylaşımlara ağırlık vermeyi planlıyorum. Faydalı olması dileğiyle...

İlginiz ve takdiriniz için teşekkürler ...

http://www.abdullahkise.com/

19 Mart 2018 Pazartesi

Power BI Demo Serisi ( Meşrubat Satışları - 4 ) - Video

Abdullah Kise : "Bu seride bir aylık meşrubat satışları senaryosunu ele alıyoruz. Power BI Desktop ile satışların bulunduğu Excel dosyasına bağlanıp verileri istediğimiz formata getireceğiz. Hemen ardından modelleyip sonrasında da karlılık durumunu ve çeşitli korelasyonları görebileceğimiz raporlar tasarlayacağız. 

Serimiz bir kaç bölümden oluşuyor. Bu bölümde DAX diline temel bir giriş yaparak Calculated Column ve Measure oluşturuyoruz. Hemen sonrasında Matrix, Area Chart ve Card yardımıyla raporumuzu tasarlıyoruz."

Aşağıdaki linkten satışların bulunduğu Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:

https://1drv.ms/f/s!Ap5-WHzOJRrTuEbJRl3dAagR9NeA



Önceki bölüme erişmek için:
Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

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

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

17 Mart 2018 Cumartesi

Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

Bu seride bir aylık meşrubat satışları senaryosunu ele alıyoruz. Power BI Desktop ile satışların bulunduğu Excel dosyasına bağlanıp verileri istediğimiz formata getireceğiz. Hemen ardından modelleyip sonrasında da karlılık durumunu ve çeşitli korelasyonları görebileceğimiz raporlar tasarlayacağız. Serimiz bir kaç bölümden oluşuyor. Bu bölümde Line, Scatter, Scroller görsellerini kullanıyoruz. Scatter grafiklere trend çizgileri ekliyoruz. Ayrıca bir alandaki değerleri modelleme katmanında gruplayarak yeni alanda gösteriyoruz. Aşağıdaki linkten satışların bulunduğu Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:
https://1drv.ms/f/s!Ap5-WHzOJRrTuEbJRl3dAagR9NeA




Önceki bölüme erişmek için:
Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video

23 Şubat 2018 Cuma

Microsoft'tan Teknoloji Severlere İlham Veren Zirve - Microsoft Teknoloji Zirvesi 2018

Bu sene 21 Şubat 2018 tarihinde Haliç Kongre Merkezinde düzenlenen Microsoft Teknoloji Zirvesi oldukça etkileyiciydi. Etkinlikte birbirinden değerli konuşmacılar son bir kaç yılın ve geleceğin trend konuları üzerinde durdular. 

Yapay Zeka (Artificial Intelligence - AI), Arttırılmış Gerçeklik (Augmented Reality - AR), Büyük Veri (Big Data), Nesnelerin İnterneti (Internet of Things - IoT) ve Dijital Dönüşüm rüzgarı etrafımızı sarmış durumda. Sahadaki örnekler ilgi çekici ve ilham verici. Gelecekten beklenti büyük.

Yalnız işin mutfağındaki biri olarak söylemeden geçemeyeceğim; Gelecek daha fazla gelmeden, işlerimizi teknolojiye tamamen devretmeye karar vermeden önce, kullandığımız şu algoritmaların kalitesi bilim adamları tarafından arttırılsa iyi olur. Yoksa bu önü alınamaz inkişafın nimetlerinden hayal ettiğimiz şekilde faydalanamayabiliriz. 

Bu tür etkinliklerde akademisyenlerin sayısında artış olmasını temenni ederiz.


Biraz heyecan, biraz korku içinde teknolojinin gelecekte bize neler sunacağını merakla bekliyoruz. 

Tüm teknoloji severleri bu zirvede buluşturan Microsoft ve diğer sponsor firmalara emekleri için teşekkür ediyoruz.

10 Şubat 2018 Cumartesi

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting - Bonus (HTTP İstekleri ve Cevapları Kullanarak)

Power BI üzerinde gerçek zamanlı raporlama yapma konusuna önceki yazılarımızda değinmiştik. Yazılarımıza bir göz atarak siz de kolayca gerçek zamanlı raporlar hazırlayabilirsiniz. Takip etmek istediğiniz olaylardan anında haberdar olabilir, Power BI'ın bu hizmeti sayesinde projelerinizde fark oluşturabilirsiniz.

Bu konudaki yazılarımıza şu linklerden ulaşabilirsiniz:

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

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 - Real Time Reporting -3 (Workspaces, Datasets)

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -4 (Satır Gönderme ve Dashboard Tasarımı)

Yukarıdaki yazılarımızda gerçek zamanlı raporlamanın nasıl yapıldığını anlatırken Power BI REST API dll'ni kullanmıştık. Geliştirmeyi de .net platformunda C# ile yapmıştık. Elbette farklı platformlarda kullanabileceğiniz dll'ler de mevcut. Peki bu dll'leri kullanmadan platformdan bağımsız çalışmak mümkün mü? Hemen cevap verelim; mümkün.

Bu yazımızda Power BI REST API dll'ni kullanmadan doğrudan HTTP istek/cevapları ile gerçek zamanlı raporlamanın nasıl yapılabileceğine odaklanacağız. Bu yöntemle HTTP istek gönderip /alabilen herhangi bir platform tarafından üretilen olayları doğrudan Power BI'a iletebilirsiniz.

Buradaki geliştirmeyi .net platformunda C# ile yapacağız. Ancak benzer yöntemle aynı nesneleri farklı platformlarda da kullanabilirsiniz.

Hemen bir ön bilgi gerelim; hata kontrolleri, tasarım desenleri vs. gibi geliştirme teknikleri ilk bakışta kodun anlaşılmasını engelleyebileceği için odağımızın dışında bırakıyorum. Kodları sade biçimde yazıyorum ki dikkatimiz dağılmasın. Gerçek bir projede kodları nasıl zenginleştireceğiniz ve hangi kontrolleri yapacağınız size kalmış. 

Buradaki maksadım adım adım programı yazdırmak değil. Anahtar noktaları aktarmaktır.


Http Request (İstek) Gönderme


Bir Console projesi açıyorum ve projeye WebRegRes ismini verdiğim bir sınıf ekliyorum. Bu sınıf içerisinde HTTP istek/cevaplarını gönderip/almak için kullanacağım metotları bulunduracağım.

Öncelikle ihtiyacım olan tiplere kolayca ulaşmak için ilgili şu namespace'leri ekliyorum:

using System.Net; //HttpWebRequest
using System.IO; //Stream için

İstekleri oluşturmak için kullanacağımız metodun parametrelerinde Power BI nesnesinin Resource Uri'sini, istek yöntemini (GET, POST....) ve token bilgisini bekliyoruz.


Token güvenlikle ilişkili bir bilgidir. Bu bilgiyi isteğin header'ında göndermemiz gerekiyor. Token bilgisinin nasıl elde edildiğini görmek için şu yazımızı inceleyebilirsiniz:

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

Resource Uri ise Power BI nesnelerine ulaşmak için kullanılan bir yoldur. Mesela satıra kadar ulaşmak için şu Uri'yi kullanırız:
https://api.powerbi.com/v1.0/myorg/groups/{SecilenGroupId}/datasets/{SecilenDataSetId}/tables/{TableAdı}/rows

Bu Uri ile sırasıyla Workspace (group olarak ifade ediliyor), DataSet, Table seçilerek satırlara kadar ulaşılır. Uri üzerinden JSON ifadeleri gönderilerek yeni nesneler oluşturabilir, var olan nesneleri silip, güncelleyebilirsiniz.

Bu yöntemin önceki yazılarımızda bahsettiğimiz yöntemden farkı, HTTP isteklerini ve JSON formatındaki mesajları açık şekilde göndermektir.

HTTP Response (Cevap) Yakalayıp Okumak


Şimdi sıra geldi isteklere gelen cevapları yakalamak için kullanacağımız metodu yazmaya. Gönderdiğimiz isteğe gelen cevabı aşağıdaki gibi kolayca alalım ve StreamReader nesnesi ile okuyalım.


HTTP Request ile JSON Post Etmek


Aslında yukarıda istek gönderecek metot yazmıştık. Yine aynı metodu kullanacağız fakat burada ek olarak JSON formatında veri gönderecek şekilde kapsülleyeceğiz. Metodumuz HttpWebRequest ve JSON istiyor. Böylece oluşturmak istediğimiz nesnelerin tanımlarını JSON formatında gönderebileceğiz.

Bu yeni metodumuzda mesjaı serileştirip gönderiyoruz hemen ardından ikinci sırada yazdığımız cevap alma metodunu kullanarak gelen cevabı döndürüyoruz.


Harika! Projemize eklediğimiz WebRegRes isimli sınıfı oluşturduk. Şimdi Power BI nesnelerine ulaşmak ve tablomuza satır göndermek için Main metoduna geçip kodlamaya devam edelim.

Power BI Üzerindeki Tabloya Satır Göndermek


Satırları tabloya iletmek için çeşitli bilgilere ihtiyacımız olacak. Bunlar;
  • Token bilgisi. Nasıl elde ediliğini 2. yazımızda anlatmıştık.
  • Workspace Id'si ve DataSet Id'si: Nesnelerin Resources Uri'sini kullanarak bu bilgilere ulaşabiliyoruz.
  • Table adı. DataSet tanımlarken belirttiğimiz DataSet içindeki bir nesnedir. Yine Uri ile ulaşılabilir.
  • JSON formatında satır. İster string birleştirme ile istersen NewJson kütüphanesi gibi bir kütüphane ile JSON formatında mesajlar oluşturabilirsiniz.
Kodlarımızda simülasyon amacıyla bir While döngüsü açıyorum ve içerisinde Random sınıfını da kullanarak anonim tip tanımlıyorum. Döngü her çalıştığında yeni bir satır oluşacak. 

Hemen arından bu satırı JSON formatına dönüştürüyorum ve WebRegRes sınıfındaki en son metodu kullanarak isteği Power BI'ya gönderiyorum.


İstekleri gönderirken Power BI Resources Uri'yi mutlaka belirtmeniz gerekir. Bu örneğimizdeki GroupDataSetResourceUri isimli değişkende satırların Resource Uri'sini önceden oluşturup tutmuştum. 

GroupDataSetResourceUri isimli değişkende tuttuğumuz bu Uri'yi şu şekilde oluşturabilirsiniz:


Peki, secilenGroupid ve secilenDataSetid nasıl elde edilecek? 

Workspace Id (Group Id) ve DataSet Id Elde Etmek


Bunun için nesnelerin Resources Uri'lerini kullanarak istekte bulunuruz. Gelen JSON formatındaki cevaplardan da bu nesnelerin Id'lerini elde edebiliriz.


Gelen JSON formatındaki cevapları okumak ve mesajın bir kısmındaki bilgiyi elde etmek için NewtonJson kütüphanesinden faydalanabilirsiniz.

Workspace ve DataSet Nesneleri  Oluşturmak

Nesneler hakkında bilgi alabileceğiniz gibi nesnelerin JSON formatındaki tanımlarını göndererek bu nesneleri uygulama tarafında da oluşturabilirsiniz. Workspace, DataSet oluşturmak satır oluşturmak gibidir. Satırı göndermek için ürettiğimiz JSON yerine aynı metoda ilgili nesnenin tanımını yazabilirsiniz. Satır oluşturmaktan farkı, karışıklık olmasın diye nesneyi tekil oluşturmaya özen göstermek, nesneye özel JSON tanımını doğru göndermek ve nesnenin Resources Uri'sini doğru belirtmektir. 

Bu konudaki çalışmalarınızı sağlıklı ve kolayca yürütebilmek için girişte belirttiğim yazılara göz atmanızı ve aşağıdaki kaynakları referans almanızı tavsiye ederim.

Power BI REST API reference (Resource Uri ve nesnelere erişim metotları hakkında bilgi sunar)

Power BI API - Apiary (Geliştirme için ortam ve örnek kodlar sunar)




4 Ocak 2018 Perşembe

Power BI Üzerinde Gerçek Zamanlı Raporlama - Real Time Reporting -4 (Satır Gönderme ve Dashboard Tasarımı)

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

Bir önceki yazımızda Power BI üzerinde gerçek zamanlı raporlama yapmak için Power BI REST API ile Workspace ve Dataset oluşturmuştuk.

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

Bu yazımızda Dataset içerisinde tasarladığımız tablonun formatına uygun satırları üretip portale göndereceğiz. Hemen ardından gönderdiğimiz verileri gerçek zamanlı izlemek için bir Dashboard (Pano) tasarımı yapacağız.

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.

Bir Dataset İçerisindeki Tabloya Veri Göndermek


Önceki yazılarda başlattığımız Console uygulamasını açıp geilştirmeye devam edelim.
Göndereceğimiz satırları rahatça hazırlayabilmek için bir Class açıp YeniKayıt isimli bir tip tanımlıyoruz.


Hemen ardından PowerBIClient nesne örneğimiz üzerinden PostRowsInGroup metotu ile satırları göndermeye başlayabiliriz. Bu metotun istediği groupId ve datasetKey parametrelerini daha önceki yazılarımızda değişkenlerde tutmuştuk. tableName parametresine bir önceki yazıda oluşturduğumuz tablo adını veriyoruz. En son parametreye de satırların olduğu nesnemizi veriyoruz. 

Simülasyon örneğimizde bir while döngüsü içerisinde Random sınıfı ile rastgele değerler üretip gönderiyoruz.


Kodları, aynı nesneleri tekrar oluşturmayacak şekilde düzenleyip projeyi başlatalım. 



Akışın sağlıklı olduğunu gördüğümüzde akan veriyi izlemek için Power BI portale geçip bir Dashboard tasarlayalım.


Gerçek Zamanlı Raporlama için Dashboard Tasarlamak


www.powerbi.com adresinden portale giriş yapıyoruz. Sol menüden oluşturduğumuz YeniGroup isimli Workspace'i seçelim. Sağ üst köşedeki 'Create' butonu ile bir Dashboard (Pano) oluşturalım. 

Oluşturduğumuz Dashboard ekranında üstteki 'Add tile' butonu ile görselleri eklemeye başlayalım. Çeşitli görseller mevcut. Biz REAL - TIME DATA grubundaki CUSTOM STREAMING DATA butonu ile veri izlemeye odaklanalım.


Veri akşını yumuşak bir animasyonla bize sunan görselleri bu menüden seçiyoruz. Açılan pencerelerden adım adım oluşturduğumuz Dataseti ve görseli seçelim. Her bir görselin kendine ait alanları var. Uygun alanları tablonun kolonları ile eşleştirelim. Son ekranda görsele başlık ve link verebilirsiniz. 

Görselleri 'Add tile' butonu ile teker teker ekliyoruz. Böylece aşağıdakine benzer bir görüntüyü kolayca elde edebilirsiniz.


Sonuç


Eğer akış esnasında çeşitli filtrelemeler veya hesaplamalar yapmak ve bunları farklı hedeflere iletmek sizin için önemliyse gelişmiş bir çok ürünü / Azure Servislerini tercih edebilirsiniz. Bu hedeflerden birini de Power BI olarak belirleyebilirsiniz. Azure Stream Analytics servisi akan veriyi Power BI'a kolayca yönlendirebilmektedir.

Eğer Power BI haricinde bir maliyete girmek istemiyorsanız ve akışı farklı hedeflere yönlendirmek öncelikleriniz arasında değilse Power BI REST API'den faydalanabilirsiniz. Yazı serimizdeki yönlendirmeleri kendi projelerinize uygulayarak kolayca gerçek zamanlı raporlar tasarlayabilirsiniz.

Aslında bu konu oldukça geniş bir konu. Bu seride hızlıca ve kolayca neler yapabileceğimize odaklandık. 

Detaylar için:

Limitler için:

Kodlama ve testler destek için:

Dilerseniz tüm işlemleri doğrudan Http istekeri ile Json alışverişleri halinde de yapabilirsiniz. Böylece her platform üzerinden veri akışını Power BI'a iletebilirsiniz. Hatta bazı adımları kod ile değil de Power BI Portal üzerinden yapabilirsiniz. 

Bunların nasıl yapıldığına da farklı bir yazıda değiniriz.

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.