SSAS: İki Dünya, İki Dil

SQL Server Analysis Services (SSAS), Microsoft'un OLAP ve analitik modelleme platformudur. İki farklı modda çalışır: Tabular (DAX) ve Multidimensional (MDX). Forumlarda en çok tartışılan konu: _"Yeni projemde hangisini kullanmalıyım?"_

Kısa cevap: Yeni projeler için Tabular. Ama neden olduğunu anlamak önemli.

Mimari Farklar

Tabular Model

  • In-memory: Tüm veri bellekte (VertiPaq motoru)
  • DAX: Power BI ile aynı formül dili
  • Kolon bazlı depolama: Analitik sorgularda çok hızlı
  • Power BI uyumu: Mükemmel (aynı motor)

Multidimensional Model

  • MOLAP: Önceden hesaplanmış aggregation'lar
  • MDX: Karmaşık ama güçlü sorgu dili
  • Drillthrough: Detaylı veri erişimi
  • Write-back: Kullanıcılar veri yazabilir (bütçeleme)

Karşılaştırma

| Kriter | Tabular | Multidimensional |

|---|---|---|

| Sorgu dili | DAX | MDX |

| Motor | VertiPaq (in-memory) | MOLAP (disk + memory) |

| Performans | Çok hızlı (basit sorgu) | Hızlı (karmaşık sorgu) |

| Power BI uyumu | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |

| Excel uyumu | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |

| Write-back | ❌ | ✅ |

| Many-to-Many | Sınırlı | Doğal destek |

| Partition | ✅ | ✅ |

| Öğrenme eğrisi | Orta (DAX biliyorsanız) | Dik (MDX karmaşık) |

| Azure desteği | Azure AS + Fabric | Sadece on-premises |

| Gelecek | ✅ Aktif geliştirme | ⚠️ Bakım modu |

⚠️Microsoft, yeni özellikler yalnızca Tabular modele ekliyor. Multidimensional hâlâ destekleniyor ama aktif geliştirme yok. Yeni projelerde Tabular tercih edin.

Ne Zaman Multidimensional?

Multidimensional'ı yalnızca şu durumlarda tercih edin:

  • Bütçeleme/planlama: Write-back gerekli
  • Karmaşık many-to-many: MDX'in doğal desteği
  • Mevcut MDX yatırımı: Çok sayıda MDX sorgusu ve rapor var

DAX vs MDX Örnek Karşılaştırma

DAX
// DAX: Yıllık büyüme
YoY Büyüme = 
    VAR BuYil = [Toplam Satış]
    VAR GecenYil = CALCULATE([Toplam Satış], SAMEPERIODLASTYEAR(Takvim[Tarih]))
    RETURN DIVIDE(BuYil - GecenYil, GecenYil)
MDX
-- MDX: Yıllık büyüme (aynı hesaplama)
WITH MEMBER [Measures].[YoY Büyüme] AS
    ([Measures].[Toplam Satış] - 
     ([Measures].[Toplam Satış], [Zaman].[Yıl].CurrentMember.PrevMember)) /
    ([Measures].[Toplam Satış], [Zaman].[Yıl].CurrentMember.PrevMember)
    , FORMAT_STRING = "Percent"
SELECT {[Measures].[Toplam Satış], [Measures].[YoY Büyüme]} ON COLUMNS,
       [Zaman].[Yıl].Members ON ROWS
FROM [SatışKüp]
💡DAX öğrenmesi daha kolay, Power BI ile aynı dil ve Microsoft'un geleceği DAX üzerine kurulu. Yeni başlayanlar için net seçim: DAX.

Multidimensional'dan Tabular'a Geçiş

Mevcut Multidimensional modelinizi Tabular'a taşımak istiyorsanız:

  • Tabular model oluşturun — aynı veri kaynağı
  • DAX measure'ları yazın — MDX calculated member'ları dönüştürün
  • Perspektifler tanımlayın — kullanıcı gruplarına göre
  • Partition'ları ayarlayın — processing stratejisi
  • Test edin — sonuçları Multidimensional ile karşılaştırın
  • Excel raporlarını güncelleyin — bağlantı değişikliği

Azure Analysis Services ve Fabric

| Platform | Tabular | Multidimensional |

|---|---|---|

| SSAS On-Premises | ✅ | ✅ |

| Azure Analysis Services | ✅ | ❌ |

| Power BI Premium | ✅ (XMLA endpoint) | ❌ |

| Microsoft Fabric | ✅ (Semantic Model) | ❌ |

Buluta geçiyorsanız Tabular tek seçenek — Multidimensional Azure'da desteklenmiyor.

Sonuç

Yeni SSAS projeleri için Tabular model açık ara doğru seçimdir — Power BI uyumu, Azure desteği, DAX'ın öğrenme kolaylığı ve Microsoft'un yol haritası hep Tabular yönünde. Multidimensional yalnızca write-back veya mevcut MDX yatırımı gibi spesifik senaryolarda değerini korur. Mevcut Multidimensional modellerinizi orta vadede Tabular'a taşımayı planlayın.