Power BI Topoloji -1, Datasets Nedir ? Golden Dataset ve Thin Reports!

Arka arkaya çok fazla ara vermeden Power BI topolojisi üzerine yazılar yazacağım, zira ekosistem genişledikçe neyin ne olduğunu anlamak, doğru şekilde konumlandırmak gittikçe zorlaşmaya başlıyor. Üstüne, bazı temel pratiklerde yapılan -hatalar- sebebiyle diyelim, yönetilmesi ve kontrol edilmesi zor durumlar ortaya çıkıyor. 2000'in üzerinde çalışma alanının (workspace) ve bunun birkaç misli raporun olduğu tenant'lar gördüm, benzer konularda ama aynı rakamları göstermeyen, dolayısıyla güvenilirliği yönetim kademesinde sorgulanmaya başlanmış raporlar. Başımıza gelebilecek en kötü şey de bu sanıyorum, doğruluğuna güvenilmeyen raporlara kim bakar ki! Power BI datasets nedir sorusuyla seriye başlayalım!

Her ne kadar doğrudan teknik anlamda topoloji ile alakalı olmasa da ikinci büyük bir sorun da şu: herhangi bir konuyla ilgili, diyelim satış-maliyet-karlılık, eğer iyi kötü bir veri modeliniz varsa, bunun üzerine 50 sayfa rapor ekleyebilirsiniz. 50 sayfa! Hangisi ne anlatıyor, neye hizmet ediyor, hangi aksiyona yönlendiriyor meçhul! Hele bir de analitik olması beklenen raporlarda çarşaf liste alışkanlığımız var ki, akla ziyan!

Bu bahsettiğim sorunların bir kısmı sadece Power BI 'a özgü değil, hangi iş zekası uygulamasını kullanırsanız kullanın karşımıza çıkabilecek bir durum. Diğer taraftan, teknik olarak yapılabilirliği olan, ama yapmamamız gereken hareketler var Power BI 'da, ya da belli bir prosedüre bağlamamız gereken hareketler. Topolojiyi anlamak bu yüzden önemli.

Microsoft'un, konseptlere/teknolojilere isim koyma mantığının kusursuz olduğunu söyleyemem: Kendi içinde bir mantığı olsa bile, bazı kavramlara verdiği isimler ve hatta sonradan bazen isim değişikliğine gitmesi karmaşa yaratabiliyor: Misal, dataflow! Bir nevi veri ambarı, datamart diyebiliriz. Tamam. Ama 3 tane farklı dataflow var! PowerApps'te de var, Power BI'da da var, Azure Data Factory'de de var! PowerApps ve PowerBI dataflow'ların ortak/çakıştığı noktalar var, güzel, ama ADF dataflow -mantığı benzese de- teknik olarak tamamen başka birşey!

Bu grafiğe ve farklı versiyonlarına sıklıkla atıfta bulunacağım bu yazılarda. Yeri geldiğinde ana konudan çok da sapmadan önemli detayları da aktarmaya çalışacağım.

dataset

Power BI Desktop, en temel ana uygulamamız. 3 farklı katman var aslında Power BI Desktop'ta:

  • ETL aracı PowerQuery ile, veriye bağlan, şeklini şemalini veri modeline uygun hale getir, veri temizliği yap vs. Kendi veri ambarımızı yaptığımız kısım. Arayüzün biraz eski olduğu dönemde yazmış olsam da bu yazıya göz atmak isteyebilirsiniz.
  • Veri modeli katmanı: Modele aldığımız tabloları, anahtar sütunlar üzerinden birleştirdiğimiz kısım. Tüm modellerin kalbi! Veri modeli konsepti bütün iş zekası uygulamalarında aynı! Star şema, snowflake şema vs. Jargon da aynı. "Slowly changing dimensions" diğer uygulamalar için ne demekse Power BI için de o. Power BI'a özgü veri modeli anlamında tek bir spesifik durum var, o da çift yönlü ilişkiler. Bununla ilgili şu yazılara göz atmak isteyebilirsiniz: Veri Modeline Giriş, Çift Yönlü İlişkiler.
  • Veri modelini kurduktan sonra raporlarda görmek istediğimiz hesaplamaları, metrikleri, KPI'ları DAX diliyle yazarız ve bunları kullanarak rapor sayfalarımızı oluştururuz. DAX, Power BI'ın hesaplama yapma dili. Hem kolay, hem de zor! Bu yazıya göz atmak isteyebilirsiniz. DAX 'a Giriş.

** Arayüz'ün bir miktar eski olduğu ama yukarıda bahsettiğim konuların temel olarak değişmediği videoları da ekliyorum: Dax'a Giriş, Power BI'a Giriş.

Aynı veri modelinde farklı veri kaynaklarından gelen datayı kullanıyor olabiliriz. Veri kaynakları on-prem'de (lokalde) veya bulutta (ODATA, OneDrive gibi) olabilir. Eğer bağlandığımız veri kaynağı SQL gibi nizami bir veritabanı ise, veriye bağlantı yapmanın iki farklı tipi var: Import ve Direct Query. Import, adı üstünde veriyi PowerBI dosyasının (pbix dosyası) içine alırken, Direct Query verinin sadece metadata bilgisini okur. Aynı veri modelinde, bazı tablolar import, bazıları direct query, bazıları da her ikisinin kombinasyonu olan dual modda çalışabilir. ( Bu türdeki modellere "composite model" deniyor ama gene jargon/isimlendirme karmaşası var, bir başka composite model türü daha var bununla ilgisi olmayan! Detaya ana konudan sapmamak için girmiyorum şimdilik. Benzer şekilde direct query vs import karşılaştırması da bir başka topoloji yazı konusu.)

powerbi topoloji 2

Power BI Desktop ile modelimizi kurduk, metriklerimizi (ölçülerimizi) yazdık, raporlarımızı hazırladık ve dosyayı kaydettik. Oluşan dosyanın uzantısı pbix. Uzantısı pbix ama aslında bir zip/rar dosyası! Uzantısını pbix'ten rar'a veya zip'e çevirirseniz içeriğini görebilirsiniz!

powerbi topoloji 3

Bu pbix dosyasını, içinde raporları da olan bir veri modeli diye adlandırmak mümkün. Bu dosyayı Power BI Desktop'tan "publish" ettiğimizde (yayınladığımızda) PowerBI.com bulut servisine çıkar herşey. "Publish" ettiğimiz yer, ya kendi çalışma alanımızdır (My Workspace) ya da diğer kişilerle paylaşılan ortak bir çalışma alanıdır.

Dosyayı buluta bastığımızda, bulut servisinde ilgili workspace altında bu tek dosya iki şey yaratır: Raporlar (Reports) ve Datasets !

powerbi topoloji 4

Ara notlar : Free veya Pro lisansınız varsa bulutta yayınlayabileceğiniz pbix dosyasının büyüklüğü 1 GB'ı geçemez. Bu büyüklüğü tetikleyen en önemli şeyler özellikle fact tablolarındaki sütun sayısı ve bu sütunlardaki tekil (unique) değer sayısıdır. Gereksiz sütunları -lazım olabilir düşüncesiyle bile olsa- modelinize almayın. DateTime tipindeki sütunları Date ve Time olarak iki veya gerekiyorsa üç sütuna ayırın. Bu sayede tekil değer sayısını düşürmüş olursunuz. Time kısmına ihtiyacınız yoksa, sütun tipini DateTime'dan Date'e çevirin. Modelinizde her zaman ama her zaman için bir tarih tablosu kullanın ve ayarlardan Auto/Date Time'ı kapatın! Bu pratiklere uyarsanız 1 GB içine dünyalar sığar! 200-300 milyon satırlı, bu limitin yanına bile yaklaşmayan modellerim var!

powerbi topoloji 5

Dataset, bizim veri modelimizi, raporlar olmaksızın barındıran yapının adıdır. Eski terminolojiye göre "küp" diyebiliriz, ama Power BI'daki jargon bu: Dataset. Bir dataset üzerinde dilediğimiz sayıda rapor oluşturabiliriz. Raporlar, dataset üzerinde çalışan ayrı bir katman bulut servisinde.

Bir workspace altında yayınlanmış, bir dataset'imiz ve raporlarımız var şu an! Bu noktadan sonra yapmamız gereken iki temel şey var: Bu dataset'i ve raporları diğer kullanıcılarla nasıl paylaşacağımıza karar vermek ve ikincisi raporların güncellenmesi için bir gateway kurmak.

Gateway kurulumu oldukça basit, bu linkten nasıl kurulacağını öğrenebilirsiniz. Eğer modeldeki tüm veri kaynaklarınız bulutta ise, ODATA, Azure SQL, SharePoint, OneDrive gibi, gateway kurmanıza da gerek yok. Ama bir on-prem veri kaynağı varsa gateway gerekiyor. Gateway'i kuracağınız PC'nin veri kaynaklarına bağlantısı olan, Internet' e çıkışı olan makul bir donanıma sahip bir makina olması yeterli.

Gateway'i de kurduktan sonra artık modeli kurduğumuz pbix dosyasıyla, bu dosyanın bulunduğu bilgisayarla vs işimiz yok. Bulut servisinden hangi saatlerde güncelleme istediğimizi ayarlayacağız, işlem tamam! Gateway üzerinden güncellenen dataset otomatikman bu dataset üzerinden oluşturulmuş raporları da güncelleyecek. Ve durum şu hale gelmiş olacak!

powerbi topoloji 8

Raporları ve dataset'i diğer kullanıcılarla nasıl paylaşacağız? İki yöntem var:

Bu iki yöntemin detaylarına başka bir topoloji yazısında değineceğim ama datasetlerin/raporların yönetimi açısından önemli olan bir noktayı şimdi açmam gerekiyor.

Kullanıcılara ne yetki vereceğiz!

Paylaşım yöntemi olarak çalışma alanını seçtiysek, kullanıcıları eklediğimiz bölümde bir yetkilendirme var.

powerbi topoloji 9

Benzer şekilde, app yöntemini seçtiysek bunda da bir yetkilendirme var.

powerbi topoloji 10

Bütün projelerde istisnasız şöyle bir durum karşımıza çıkacak: Konuyla ilgili diyelim 10 sayfalık bir rapor seti herkesin kullanımına açık, herkes aynı şeyleri aynı şekilde görüyor. Güzel.

Ama bazı kullanıcılar ilgili dataset üzerinden sırf kendine ait veya başka kullanıcılarla paylaşmak istediği raporlar oluşturmak isteyecektir. Şöyle gibi düşünün, bir satış rapor setiniz var, biraz satış yöneticilerine yönelik tasarlanmış ama satış temsilcilerinin ihtiyaç duyduğu detay seviyesine rapor sayfalarında yer verilmemiş ya da yetersiz. Ama detayların hepsi aslında dataset'in içinde mevcut.

Aynı pbix dosyasını satış temsilcilerine yönelik rapor detaylarını da içerecek şekilde yeniden bulutta bir çalışma alanı altında ya da Power BI App yaratarak yayınlamak yapılabilecek en büyük hatalardan biri olur! Eğer bunu yaparsanız aynı verileri gereksiz yere iki kez buluta göndermiş oluruz, her refresh esnasında bu tekrarlama devam eder. Yönetmemiz gereken iki tane dataset olmuş olur vs vs!

Yapılması gereken şey şu: Aynı dataset ya da Power BI App üzerinden farklı raporlar yaratacak kişilere Build yetkisi vermek. Build yetkisi app yaratırken aynen bu isimle çıkıyor resimde de görüldüğü gibi, çalışma alanı yöntemini seçtiyseniz Build yetkisi minimum "Contributor" seviyesini gerektiriyor. Çalışma alanındaki rollerle ilgili detaylar için bu linke göz atabilirsiniz.

Bu kişilere Build / minimum Contributor yetkisi verdiyseniz yapmamız gereken bir şey daha var: Aynı dataset'in birden fazla çalışma alanında kullanılabilmesine tenant seviyesinde müsade etmelisiniz. Bu opsiyon default açık geliyor zaten ama gene de kontrol etmekte ya da sadece belli security gruplarına vermekte fayda olabilir.

Bu ayarı Power BI Admin yapabilir sadece.

powerbi topoloji 11

Yapmamız gereken tüm ayarları yaptık, tek soru kaldı cevaplamamız gereken, aynı dataset üzerinden farklı raporları nasıl yaratacağız? Sadece çalışma alanı üzerinden örneklendireceğim, App versiyonu da benzer bir şekilde çünkü.

Farklı rapor seti oluşturmanın iki yöntemi var:

  • Raporları bulut üzerinden oluşturmak
  • Power BI Desktop ile oluşturmak

Ben kişisel olarak daha kontrollü olduğunu düşündüğüm için farklı raporları Power BI Desktop ile yapmayı daha uygun görüyorum ama pekala buluttan da yapılabilir. Size kalmış.

Golden Dataset ne demek?

Bu teknik bir terim değil aslında ama tek bir dataset'in birden fazla çalışma alanında dolaylı olarak kullanılabilmesini tarifleyen güzel bir tanım. Tek bir dataset'i güncelliyorsunuz, bu güncellemeden bir sürü farklı çalışma alanındaki farklı raporlar da nasipleniyor.

Buluttan yapacaksanız, yapmanız gereken tek şey, dataset'in olduğu çalışma alanından dataset'i seçip "Create a Report" demek.

powerbi topoloji 12

Yeni oluşturduğunuz rapor setini dilediğiniz çalışma alanında paylaşabilirsiniz!

powerbi topoloji 13

Eğer Power BI Desktop ile yapmayı tercih ettiyseniz, yapmanız gereken tek şey, Get Data dediğinizde kaynak olarak Power BI datasets'i seçmek.

powerbi topoloji 14

powerbi topoloji 15

Dataset'i seçtiğinizde karşımıza çıkan desktop ekranı bir miktar farklı!

powerbi topoloji 16

"Connected live to …" deyip bağlandığımız dataset'in adını yazıyor ve soldaki sekmelerde de tablolardaki verileri gördüğümüz dataview kısmı yok. Çünkü buluttaki datasete bağlandık, aslında herşey buluttan geliyor, lokalimizde hiçbir şey yok!

Dolayısıyla bu şekilde Power BI Desktop ile raporları oluşturduğumuzda oluşan pbix dosyasının boyutu çok ama çok küçük! "Thin Reports" tanımı da buradan geliyor. Raporun içindeki herşey buluttaki dataset'ten geliyor, dosyanın içinde rapor sayfaları ve tasarımları hariç hiçbir şey yok!

powerbi topoloji 17

Ara notlar:

  • Dataset'in içindeki tüm metriklere ek olarak, eğer bir başka metrik eklemek istersek bu yöntem buna müsade ediyor. Kendi metriğimizi modele ekleyebiliriz. Ama eklediğimiz metrik sadece bu dosya için geçerli olacaktır! Bağlantı yaptığımız orijinal dataset'e eklenmeyecektir.
  • Farklı rapor görünümleri oluşturmanın bir nüansı daha var, "personalized visuals". Ama bu anlattığım yöntemler kadar esnek değil.
  • Eğer dataset'iniz her şeyi içeriyorsa bunu ilk kez publish ederken/yayınlarken rapor sayfası eklemeyin. Raporları dataset'e bağlanarak yaratın.
  • Free lisans ile sadece kişisel kullanım yapabilrsiniz. Teknik olarak -rapor paylaşımları hariç- ufak nüanslar haricinde neredeyse hiçbir kısıtlama yok free lisansta. Tüm kısıtlamalar bulut servisindeki paylaşım kabiliyetlerine yönelik.

Topoloji yazılarına dataflow ile devam edeceğim. Peşine Mayıs ayı güncellemesiyle gelen datamart!

Bloga sosyal medya hesabınızla hızlı üyelik-giriş için ilgili ikonu tıklayabilirsiniz.