Power BI’da DAX’e Giriş- Genel Bakış

Herkese merhaba,

Bugün Power BI’da DAX formüllerine giriş yapacağım. DAX, Data Analytic EXpression yani Power BI’ın ver analiz dilidir. Aslında sadece Power BI’da değil Microsoft’un Business Intelegence çatısı altındaki  aşağıda yazdığım diğer ürünlerinde de DAX’in kullanıldığını görüyoruz.

  • Power BI; Microsoft’un bulut ya da web bazlı raporlama servisi.
  • Power Pivot; Excel 2010 ile hayatımıza girmiş bir “add-on”. Power Pivot DAX’in modelleme kapasitesiyle Excel’i birleştiren bir özellik.
  • SSAS, SQL Server Analysis Services Tabular Mode; SSQ Service 2012’de Microsoft Analiz servislerinin yapabileceklerini DAX’in yeni modu Tabular Mode ile geliştirdi.
  • Azure Analysis Services; Aslında SSAS Tabular Mode ile aynı ancak Azure Analysis Service ile bir sunucu kurmanıza gerek kalmadan Azure sizin için herşeyi yönetiyor.

Özetle yukarıdaki platformlardan herhangi birini kullanıyorsanız mutlaka günün birinde işiniz DAX’e düşecek.

DAX iki fonksiyonda fazlasıyla güçlüdür; aggregation (kümeleme) ve filtering (filtreleme).. Milyonlarca değeri anında filtreleyip veya istediğiniz sonuca göre derleyip toplamayı becerebilir. Tabi bunun yanında DAX’in güçlü olmadığı noktalar da var. Mesela tablolarınızdaki kolon sayısı arttıkça performansınızdaki düşüş kaçınılmaz oluyor. Ayrıca tablolar arasındaki ilişkiler çoğaldıkça ve karmaşıklaştıkça DAX’in cevap süresi de uzamakta.

DAX öğrenirken öncelikle DAX’in satır ve hücrelerle değil kolon ve tablolarla çalıştığına dikkat çekmek lazım. Exceldeki gibi hücrelere referans vermek yerine tablo ve kolonlara referans verilir. Ayrıca şu iki kavram sıklıkla karıştırılmakta; hesaplanmış kolon (calculated column) ve ölçü (measure).. İkisi arasındaki farkı anlattığım posta göz atmak isterseniz tıklayabilirsiniz.

Öncelikle DAX neden satırlarla değil de tablo ve kolonlarla çalışır. Bunu anlamak için normal iş databaseleriyle analitik databaselerin kullanım şekillerine bakalım.

Online Transactional Processing (OLTP): Bunlar ERP veya e-ticaret gibi günlük kullanım için dizayn edilmiş herhangi bir zamanda çok sayıda transaction’nı destekleyebilen uygulamalar. Bu da demek oluyor ki bu database’deki tablolar sıklıkla update gerektirebilir.

Online Analytical Processing (OLAP); Geleneksel Data warehouse (veri ambarı)’lardır. Yani günlük raporlama yapıyorsunuz. Dolayısıyla çoğunlukla verileri okuyorsunuz veri işleme işi yapmıyorsunuz. Dolayısıyla update’ler sizi pek ilgilendirmiyor. Bu tip analitik databaselerde OLAP kullanımı yaygındır. Bunu yıldız şeması (star schema) şeklinde de görebilirsiniz.

OLAP’ın optimizasyonu ile veri analitiğini daha etkili hale getirebilirsiniz.

Relational databaseler (ilişkisel veritabanları) verileri satırlarda saklar bunlara Row-store DataBase denir. Dolayısıyla herhangi bir bilgi almak istediğinizde bütün satırları almanız gerekir. Oysa analitik analizde bizim işimize yarayacak ve hızımızı arttıracak olan sadece ilgili kolonlara bakıp onları kümeleyip filtrelemektir.

Column-Store DB: Sadece ilgili kolonlardaki bilgiler okunur. DAX’in VertiPaq Motoru da bu şekilde çalışır. VertiPaq Engine (yada xVelocity), Microsoft’un verileri kolonlarda saklaması için kullandığı veritabanı motorudur. Böylece milyonlarca satırlı veritabanlarında etkili bir analitik analiz yapılması sağlanıyor. VertiPaq’in çalışma prensibiyle ilgili şu postuma bakabilirsiniz.

DAX ile çalışıyorsanız zamanınızın yaklaşık 90%’ı VertiPaq ile harcanırken geri kalan 10%’su DirectQuery‘ye harcanır. DirectQuery, DAX formüllerini SQL sorgularına çeviren motordur.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s