Azure Analysis Service ve Azure AD B2B

Şunu itiraf etmeliyim, tüm konsantrasyonum Power BI ve ilgili Azure servisleri olmasına rağmen hızına yetişmekte hakikaten zorlandığım bir geliştirme hızı var. Yakın zamanda gelen bir kaç önemli özelliği bile kaçırmışım, bunu da son yaptığımız webinar'da Mustafa Aşıroğlu sayesinde farkettim.

Gene itiraf etmeliyim, e-posta-mesaj yoluyla sorulan sorulara olabildiğince hızlı dönüş yapmaya çalışıyorum ama bunlara da son dönemde yetişmekte zorlanıyorum, dönüş yapamadığım arkadaşlar kusura bakmasın lütfen. Soruların ortak noktası çok, blog yazılarıyla yanıtlamaya bazen de spesifik yanıtlar vermeye çalışacağım olabildiğince.

Power BI son bir kaç yılda -zaten toplamda 3 yılı sadece biraz geçtik- inanılmaz özellikler kazandı. Fakat arkasındaki teknolojiler sadece Power BI'da değil birden fazla Microsoft uygulamasında var: Örneğin tabular modda kurulan SQL Analysis Service'te , örneğin Excel'deki data model, Get Data deyince karşımıza çıkan Power Query ekranları ve PowerPivot'ta. Power BI'ın ilk çıkışı da PowerPivot ile oldu zaten.

Microsoft'un on-prem SQL Server Analysis Service (SSAS) uygulaması çok çok uzun süredir var ve önceki kullandığı teknoloji MDX idi. Hala da kullanıyor, fakat SQL 2017 versiyonu itibariyle "default" analysis service modunu multidimensional'dan tabular'a çevirdi. Kurmaya kalktığınızda tabular modda bir analysis service kurmak istiyor. MDX çok olgun (mature) ama bir o kadar da kolay olmayan bir teknoloji, yerini tamamen tabular alacak gibi görünüyor. MDX'i öldürmeyecektir ama uzun süredir geliştirme anlamında yatırım yapmadığı da aşikar.

Microsoft'un Azure'la birlikte son sürat yaptığı bir şey daha var: Neredeyse tüm on-prem yani lokalde çalışan uygulamaların bulut versiyonlarını birer servis veya altyapı olarak çıkartıyor. Microsoft Axapta'nın (Microsoft'un ERP'si)  Dynamics 365 adı altında bulut versiyonu var. Benzer şekilde Navision uygulamasını da (bir diğer ERP'si) buluta -sanıyorum gene Dynamics adı altında- taşıyor.

Veri ambarınız için SQL Integration Service mi (SSIS) kullanıyorsunuz? Data Factory'ye bakmanızı öneririm. SSIS'in bulut versiyonu olacak gibi görünüyor. Ölçeklemekte zorlandığınız veya yoğun kullanımda kullanıcılara yeterince hızlı yanıt veremeyen bir SQL sunucunuz mu var, Azure SQL ve Azure SQL DW servislerini incelemenizi öneririm.

Yakın zamanda gelen Dataflow ve Azure Data Lake Storage entegrasyonu ise muhteşem! Webinar kaydına bir göz atmanızda fayda var.

Konuyu fazla dağıtmadan bu servislerden ikisiyle ilgili giriş yazısına başlayayım: Azure Analysis Service ve Azure B2B.

Azure Analysis Service, bir Azure aboneliği altında kullanabileceğiniz, gerektiğinde kapasitesi iş yüküne göre  otomatik olarak  yükseltilebilen veya düşürülebilen, hatta durdurulabilen (pause edilebilir) bir servis. Kullandığın kadar öde mantığıyla fiyatlandırılmış. Azure Analysis Service, kısaca tariflemek gerekirse on-prem SQL Analysis Service'in bulut versiyonu. Lisanslaması -ve ücretlendirmesi- daha esnek, SQL sunucuyu standart veya enterprise olarak alıyorsunuz ve işlemci başına bir lisanslama var bildiğim kadarıyla.

On-prem veya Azure'daki Analysis Service'e ne zaman ihtiyaç duyabiliriz?

İlk sebep veri büyüklüğünüz olabilir!

Power BI Pro lisansı ile buluta basılan bir veri setinin (dataset) büyüklüğü maksimum 1 GB olabiliyor. Gerçi 1 GB'a veri yapınıza göre dünyalar sığar! Ama transaction tablolarınız 50-60 milyon satırlara doğru gidiyor ve her birinde çok sayıda sütun varsa, sütunlardaki tekil (distinct) değer sayısı da çok yüksekse bu limite yaklaşmaya başlıyorsunuz. Bu büyüklüğü  en çok tetikleyen şeyin  satır sayısından ziyade fazla sayıda sütun ve bu sütunlardaki tekil değer sayısının yüksekliği olduğunu söylemek lazım.

** Açık eğitimlerde özellikle belirttiğim bir iki öneriyi tekrarlamama müsade edin:  Modelinize sadece size kesinlikle lazım olan sütunları alın , ileride lazım olur belki diye fazladan sütun almak maliyeti yüksek olabilecek bir seçim. İkincisi de gün:saat:dakika:saniye formatında veya buna benzer şekilde fazla sayıda tekil değer içeren sütunlar varsa bunları parçalayın, böylelikle  tek bir sütundaki tekil değer sayısını azaltmış olursunuz , saniyeyi de mümkünse almayın, o kadar "kesin" olmaya muhtemelen ihtiyacımız yok.

Sırası ve yeri gelmişken Power BI dosyanızın büyüklüğünü en çok tetikleyen tablo ve sütunları bulmak için bu süper kullanışlı aracı denemenizi öneririm.

Power BI'da bu büyüklüklere yaklaştıysanız ya da yaklaşma ihtimaliniz varsa modeli daha en başında Analysis Service'te kurmak daha doğru bir çözüm olabilir.

** Ara not, Power BI Premium lisansınız varsa daha yüksek boyutta bir dataset'i buluta basabilirsiniz.

İkinci sebep;  verim lokalde kalsın  buluta sadece özet (aggregate) sonuçlar gitsin diyorsanız araya on-prem SSAS koyabilirsiniz. Böylelikle veri lokalde kalır, buluta çıkmaz, buluta çıkan sadece kullanıcının yaptığı filtrelere/seçimlere göre özet sonuçlar olur.

Üçüncü sebep henüz Power BI lisanslarında olmayan bazı özellikleri kullanmak isteyebilirsiniz. Perspektifler, partitions (bölümleme) , translations (çoklu dil) ya da obje seviyesinde güvenlik Power BI'da henüz yok. (Power BI'da obje seviyesinde bir filtreleme yok, RLS var.)

DAX'a geleceği duyurulan Calculations Group'lar da ilk SSAS'ye gelecek gibi görünüyor. Sqlbi.com 'daki yazıya göz atmak isteyebilirsiniz.

Sonuç olarak SSAS, Azure veya on-prem, Microsoft'un "enterprise" diye konumlandırdığı bir servis.

Azure'daki AS servisini kullanmak için bir Azure aboneliğinizin olması lazım: bir kaynak grubu oluşturup bu grup altında servis yaratabilirsiniz.


Bu servisi yaratırken seçtiğiniz "pricing tier" 'a göre bir kapasite satın almış oluyoruz. Grup olarak , B (basic), D (developer) ve S (standart) olmak üzere 3 fiyat grubu var. En mantıklısı da eğer geliştirici değilseniz S tipindeki kapasiteler.


QPUS ve hafıza üzerinden bir kapasite tanımı var her birinin. Bu kapasitelerin hangi büyüklükte modelleri rahatlıkla çevirebileceğinin göstergesi olarak şu örneği verebilirim: S1 kapasitesi yaklaşık 700 milyon satırlık 15-20 sütundan oluşan bir transaction tablosu ile 15-20 boyut/master tablolu bir tabular modeli son derece performanslı çalıştırabiliyor. Bu kapasiteyi 7×24 bir ay boyunca hiç durdurmadan çalıştırsak bile maksimum fiyatı aylık 1500$'ın altında. Bunu bir de geceleri durdurabileceğimizi ve otomatik bir alt kapasiteye düşürebileceğimizi düşünürsek fiyatı daha da azaltmak mümkün.

Bir Power BI modeli ile Analysis Service modelini geliştirmek için bize lazım olan temel teknik bilgi aynı, DAX aynı DAX, Power Query (2017 ve üstü için) aynı, modelleme tekniği vs her şey aynı,  fakat ortam farklı . Visual Studio'da SQL Server Data Tools ile bir proje olarak geliştiriyoruz.  Ya da üçüncü parti Tabular Editor gibi uygulamalar var.

Azure AS'yi ayağa kaldırmak için gerekli teknik detaya bu yazıda çok girmeyeceğim ama bu servisin cazibesini arttırabilecek bir başka Azure servisi var: Azure B2B. B2B, tenant'ınıza ait Azure Active Directory üzerinden çalışıyor ve kendi tenant'ınıza, yani domain'inize bir başka domain'den kullanıcı davet edebiliyorsunuz!

Yapmamız gereken tek şey ilgili kullanıcı adres(ler)ini kendi domain'inize portal Azure'dan "Guest User" olarak davet etmek.

Davetiyeyi gönderdiğiniz kullanıcı, gelen e-postadaki linki takip ederek  sizin domain'inize katılabilir artık.


Daveti kabul eden kullanıcı bu noktadan sonra sizin tenant'ınıza ait bir kullanıcı gibi olur, isterseniz kurduğunuz Azure AS modeline erişim yetkisi verebilirsiniz!


Bunun bir yerde anlamı şu, ki bu soru çok sık geliyor,  kendi tenant'ınız haricinde başka domain'lerden kullanıcıları davet ederek kendi raporlama sisteminizi dışarıya açabilirsiniz!

Önceki Embedding yazısında da benzer bir işlevi anlatmıştım. Bu da ikinci bir yöntem olabilir!

Bu özellik, yani B2B'nin nimetlerinden faydalanmak bir süredir Power BI tarafında da vardı, bu ay daha da geliştirildi. Bunu da sonraki bir  yazıya bırakayım.