DAX mı SQL mi? Veritabanı Sorgusu ile Model Hesaplamasının Farkı
SQL veritabanından veri sorgular, DAX Power BI modelinde bağlama duyarlı hesap yapar. Farkları, ortak noktaları ve doğru öğrenme sırasını keşfedin.
Ortak zemin ve temel ayrım
SQL (Structured Query Language), ilişkisel veritabanlarında veri sorgulamak, eklemek, güncellemek ve silmek için kullanılan standart dildir. SQL Server, PostgreSQL, MySQL, Oracle ya da bulut veri ambarları gibi sistemlerde çalışır. Bir SQL sorgusu tablolardan satır seçer, tabloları birleştirir, gruplar ve bir sonuç kümesi döndürür.
DAX (Data Analysis Expressions) ise Power BI, Analysis Services ve Excel Power Pivot'taki tablosal veri modellerinin formül dilidir. DAX ile ölçüler, hesaplanan sütunlar ve hesaplanan tablolar yazılır. Ölçüler rapor anında, kullanıcının seçtiği filtrelere göre her hücre için yeniden hesaplanır.
Her biri tablolarla çalışır, toplama ve filtreleme yapar ve aynı soruları yanıtlayabilir: bölgeye göre satış, geçen yıla göre değişim, en çok satan ürünler. Fark, sorunun nerede ve nasıl sorulduğundadır. SQL veriyi kaynakta sorgular; DAX, belleğe yüklenmiş ve ilişkileri tanımlanmış bir analiz modelinin üzerinde, bağlama göre hesap yapar.
Ölçüt ölçüt farklar
- Çalıştığı yer: DAX / Power BI, Analysis Services ve Power Pivot'taki tablosal model. SQL / ilişkisel veritabanları ve veri ambarları.
- Temel amaç: DAX / analiz ve raporlama hesapları. SQL / veriyi sorgulama ve yönetme; okuma kadar yazma işlemleri de yapar.
- Tablo birleştirme: DAX / ilişkiler modelde bir kez tanımlanır, formüller bu ilişkileri otomatik izler. SQL / her sorguda JOIN ile açıkça yazılır.
- Bağlam: DAX / satır ve filtre bağlamı vardır; aynı ölçü raporun her hücresinde farklı sonuç verir. SQL / sorgu yazıldığı haliyle tek bir sonuç kümesi döndürür; farklı kırılım için sorgu değişir.
- Zaman hesapları: DAX / geçen yılın aynı dönemi, yılbaşından bugüne gibi hesaplar için hazır zaman zekâsı fonksiyonları sunar. SQL / tarih tabloları ve pencere fonksiyonlarıyla yapılır, daha fazla elle kurgu ister.
- Boş değer: DAX / SQL'deki NULL kavramının yerini BLANK alır ve davranışı farklıdır. SQL / NULL ile yapılan karşılaştırmalar doğru ya da yanlış değil, bilinmeyen sonuç verir.
- Taşınabilirlik: DAX / Microsoft'un analiz ürünlerine özgüdür. SQL / ufak lehçe farklarıyla hemen her veri platformunda kullanılır.
Aynı soru, farklı yaklaşım
Örneğin bir yönetici, kategorilere göre kâr marjını ve bunun geçen yıla göre değişimini görmek istiyor.
SQL ile analist; satış, ürün ve tarih tablolarını JOIN ile birleştirir, kategori ve yıla göre gruplar, gelir ve maliyeti toplar, marjı hesaplar ve pencere fonksiyonuyla önceki yılı yan sütuna getirir. Sonuç sabit bir tablodur. Yönetici aynı analizi bölge bazında da görmek isterse sorgu yeniden yazılır.
DAX ile geliştirici; modelde ilişkileri bir kez kurar, ardından toplam gelir, toplam maliyet ve kâr marjı ölçülerini, bir de geçen yılın marjını veren zaman zekâsı ölçüsünü yazar. Bu ölçüler rapora konduğunda kullanıcı kategori, bölge, mağaza ya da ay düzeyinde dilimleyicileri değiştirdikçe sonuç kendiliğinden yeniden hesaplanır.
Bu örnekte SQL tek bir soruya kesin bir yanıt üretmekte, DAX ise aynı hesap mantığını sınırsız kırılımda yeniden kullanmakta güçlüdür. Marj gibi oranlarda DAX'ın avantajı belirgindir, çünkü oranın her kırılımda pay ve paydanın ayrı toplanmasıyla doğru hesaplanması gerekir.
Hangi hesap hangi katmanda yapılmalı?
Sağlam bir raporlama mimarisinde SQL ve DAX rakip değil, ardışık katmanlardır. Pratik bir ayrım şöyledir:
SQL katmanında, yani veritabanı ya da veri ambarında yapılması uygun olanlar:
- Ham verinin temizlenmesi, tekilleştirilmesi ve iş kurallarına göre dönüştürülmesi
- Büyük tabloların birleştirilmesi ve rapor için gerekmeyen satırların elenmesi
- Birçok rapor ve uygulamanın ortak kullanacağı hesaplanmış alanlar
- Olgu ve boyut tablolarının hazırlanması
DAX katmanında, yani Power BI modelinde yapılması uygun olanlar:
- Kullanıcı seçimine göre değişmesi gereken toplamlar, oranlar ve ortalamalar
- Zaman karşılaştırmaları, kümülatif toplamlar, hareketli ortalamalar
- Seçili kırılım içinde pay, sıralama ve hedefe göre sapma
- Satır düzeyinde güvenlik kuralları
Genel ilke, veriyi olabildiğince kaynağa yakın hazırlamak, yalnız etkileşimli olması gereken hesabı DAX'a bırakmaktır. Her şeyi DAX'ta çözmek modeli ağırlaştırır; her şeyi SQL'de ön hesaplamak ise raporu esneklikten yoksun bırakır.
SQL bilen biri DAX'ı öğrenirken nelere takılır?
SQL deneyimi DAX öğrenmeyi kolaylaştırır ama bazı alışkanlıklar ters teper:
- JOIN ile düşünmek: DAX'ta tablolar formül içinde birleştirilmez; ilişkiler modelde tanımlanır ve filtreler bu ilişkiler boyunca akar. Ölçü yazmadan önce model doğru kurulmalıdır.
- Sonuç kümesi beklemek: Ölçü tek başına bir tablo döndürmez; değerini raporun bağlamı belirler. Aynı ölçünün satırlarda ve toplam satırında farklı mantıkla çalışabileceği unutulmamalıdır.
- Her şeyi hesaplanan sütunla çözmek: SQL'deki türetilmiş sütun alışkanlığı DAX'ta modeli şişirir; dinamik değerler ölçü olarak yazılmalıdır.
- Filtre bağlamını değiştiren fonksiyonları ezberlemek: Bu fonksiyonlar DAX'ın merkezindedir; ezber yerine bağlamın nasıl değiştiğini küçük örneklerle görmek gerekir.
Tersi yönde, DAX'tan gelip SQL öğrenen biri JOIN türlerini, gruplama mantığını ve NULL davranışını dikkatle çalışmalıdır.
Hangisini önce öğrenmeli?
Veri analisti, iş zekâsı uzmanı ya da raporlama rolünü hedefleyen biri için genellikle önerilen sıra, önce SQL, sonra Power BI modelleme ve DAX'tır. SQL veri dünyasının ortak dilidir; işe hangi araçla devam edilirse edilsin veriye ulaşmak için gereklidir ve modelleme mantığını da öğretir.
Yalnız Power BI raporları hazırlayan, verisi başkaları tarafından hazırlanmış bir modelden gelen iş birimi kullanıcısı için ise doğrudan DAX ile başlamak makuldür. Bu durumda temel ölçüler ve filtre bağlamı ilk hedef olur.
İleri aşamada dillerin birlikte kullanımı belirleyicidir: veri ambarında SQL ile temiz olgu ve boyut tabloları hazırlayıp Power BI'da sade DAX ölçüleriyle raporlayan bir geliştirici, hem hızlı hem bakımı kolay çözümler üretir.
Mindset programlarında DAX ve SQL
SQL tarafında SQL ile Programlama Eğitimi; veritabanı ve tablo oluşturma, veri işleme dili, sorgular, hesaplamalar, JOIN kullanımı, toplama ve gruplama ile görünümler modüllerini içerir. DAX tarafında Power BI İleri Düzey ve DAX eğitimi; DAX diline derinlemesine giriş, CALCULATE ve filtre bağlamı, zaman zekâsı ve dönem analizi, performans optimizasyonu ve satır düzeyinde güvenlik başlıklarını kapsar.
Uygulamalı Power BI ile Veri Analitiği ve Görselleştirme Sertifika Programı ise veri modelleme, DAX analiz dili ve etkileşimli raporlama modülleriyle model tarafını bütün olarak ele alır.
İlgili Mindset programı
SQL ile Programlama Eğitimi
Sık sorulan sorular
DAX ile SQL sorgusu gibi tablo döndürülebilir mi?
Evet. DAX sorguları EVALUATE ifadesiyle yazılır ve SQL'deki SELECT ifadesine benzer biçimde bir tablo döndürür. Bu sorgular DAX Studio gibi araçlarda ya da SQL Server Management Studio'da Analysis Services modellerine karşı çalıştırılabilir. Günlük rapor geliştirmede ise DAX ağırlıklı olarak ölçü ve hesaplanan sütun yazmak için kullanılır.
Power BI'da doğrudan SQL yazılabilir mi?
Veritabanı kaynağına bağlanırken yerel bir SQL sorgusu yazılarak yalnız gereken verinin modele alınması mümkündür. Ancak bu sorgu veri yenilendiğinde çalışır ve modelin içinde dinamik bir hesap üretmez. Rapor etkileşimine tepki veren hesaplar için yine DAX ölçüleri gerekir. Kaynakta bir görünüm tanımlamak da sık kullanılan bir alternatiftir.
DAX, SQL'den daha mı zor?
Başlangıç düzeyinde DAX'ın toplama fonksiyonları kolay görünür; zorluk bağlam kavramıyla başlar. SQL'de sorgunun ne döndüreceği yazıldığı haliyle görülürken DAX'ta sonuç raporun bağlamına bağlıdır. Bu nedenle SQL bilen kişiler, filtre bağlamını değiştiren fonksiyonlara geldiğinde DAX'ı daha soyut bulur. Küçük örneklerle ilerlemek bu geçişi kolaylaştırır.
Veri analisti iş ilanlarında hangisi daha çok aranıyor?
İlan metinlerinde SQL genellikle temel beklenti olarak, Power BI ve DAX ise kullanılan raporlama aracına bağlı bir beklenti olarak yer alır. Kurum Microsoft ekosistemindeyse DAX bilgisi öne çıkar; farklı bir iş zekâsı aracı kullanılıyorsa SQL yine geçerliliğini korur.
İlgili rehberler
İlgili eğitimler
Kategori: Veri Analitiği ve İş Zekası