Power BI Veri Modelleme: KOBİ İçin İleri Seviye Teknikler

Özet: Power BI'da güçlü dashboard yapmanın anahtarı veri modellemesidir. Yıldız şeması, doğru ilişkiler ve DAX ölçüleri performansı katlar; KOBİ veri kümelerinde ileri teknikler 100K+ satırlı analitik kümeleri akıcı sunabilir.
Power BI ilk açılışta drag-drop dashboard yapımı kolaydır. Excel'den verileri çekip basit grafik oluşturma 30 dakikada yapılır. Ama 6 ay sonra raporu açtığınızda 30 saniye yükleme süresi, hesaplamaları yanlış toplam, ve "yeni bir filtre eklemeye çalışırken çöküyor" sorunlarıyla karşılaşırsınız. Bunun nedeni neredeyse her zaman aynıdır: kötü veri modellemesi. Bu rehber Power BI'da KOBİ ölçeğinde yapılması gereken ileri veri modelleme tekniklerini gösterir.
Yıldız Şeması (Star Schema)
Power BI'ın temel veri modelleme prensibi yıldız şemasıdır. Veriler iki tipe ayrılır:
- Olgu (fact) tabloları: Sayısal veriler, işlemler. Satışlar, faturalar, ziyaretler, click sayıları.
- Boyut (dimension) tabloları: Kategorik veriler, lookup'lar. Müşteri, ürün, tarih, kategori.
Olgu tablosu merkezde, boyutlar etrafında yıldız şeklinde dağılır. Her boyut olgu tablosuyla bir ilişki kurar.
Neden yıldız şeması?
- Performans: Power BI'ın VertiPaq motoru yıldız şeması için optimize edilmiştir. 1M satırı saniyenin altında işler.
- Bakım kolaylığı: Yeni rapor eklemek, filtre değiştirmek mantıklı çünkü her tablonun rolü net.
- Ölçü doğruluğu: DAX hesaplamaları beklenen yönde çalışır.
Kötü model: Tek dev tablo
Excel'deki gibi tek dev tablo: tüm sütunlar tek satıra denk gelir. Power BI'da bu yapıyı çalıştırırsanız:
- Her satırda müşteri adı, ürün adı, tarih tekrarlanır → bellek şişer
- Filtreleme yavaşlar
- İlişkiler kurmak imkansız
Çözüm: tablonu fact + dimension'lara böl. Power Query ile tek dev tablo veriyi yıldız şemasına dönüştürmek mümkündür.
Tarih Boyutu (Date Dimension)
Power BI'da en sık eksik kalan boyut tarih tablosudur. Otomatik olarak Power BI tarih hiyerarşisi yaratır ama bu yeterli değildir. Manuel tarih tablosu kurmak gerekir.
Tarih tablosu içeriği
| Sütun | Örnek |
|---|---|
| Tarih | 2026-04-26 |
| Yıl | 2026 |
| Çeyrek | Q2 |
| Ay (sayı) | 4 |
| Ay adı | Nisan |
| Gün adı | Pazar |
| İş günü mü? | 0 |
| Mali yıl çeyreği | FY26-Q4 |
| Yıl-Ay | 2026-04 |
DAX ile tarih tablosu yaratma
DateTable = ADDCOLUMNS(
CALENDAR(DATE(2020,1,1), DATE(2030,12,31)),
"Yıl", YEAR([Date]),
"Çeyrek", "Q" & QUARTER([Date]),
"Ay", MONTH([Date]),
"AyAdı", FORMAT([Date], "MMMM"),
"GünAdı", FORMAT([Date], "dddd"),
"İşGünü", IF(WEEKDAY([Date], 2) < 6, 1, 0)
)Bu tablo bir kez yaratılır, tüm fact tablolarındaki tarih sütunları onunla ilişkilendirilir. Time intelligence DAX (TOTALYTD, SAMEPERIODLASTYEAR) bu tablo üzerinden çalışır.
İlişki Yönetimi
Power BI'da ilişki yönü ve cardinality kritiktir.
One-to-many (1:*) ilişkiler
Standart kullanım. Müşteri tablosu (1) → Satışlar (*). Filtre yönü dimension'dan fact'a doğru.
Many-to-many (*:*) ilişkiler — tehlikeli
Power BI bunu destekler ama performans kaybı + hesaplama yanlışlığı riski yüksek. Mümkünse araya "köprü tablo" koyun.
Çift yönlü filtre — zorunlu kalmadıkça yapma
İki tablonun birbirini filtrelemesi. Karmaşıklığı artırır, hata yaratır. Sadece spesifik senaryolar için (örneğin role-based security) kullanın.
DAX Ölçüleri (Measures)
Calculated column yerine measure kullanın. Measure veri saklamaz, sorgu zamanında hesaplanır; bellek ekonomisi sağlar.
Temel DAX ölçüleri
Toplam Satış = SUM('Satışlar'[Tutar])
Müşteri Sayısı = DISTINCTCOUNT('Satışlar'[MüşteriID])
Ortalama Sipariş = DIVIDE(
[Toplam Satış],
[Müşteri Sayısı]
)Time intelligence
YTD Satış = TOTALYTD([Toplam Satış], 'Tarih'[Tarih])
Geçen Yıl Aynı Dönem = CALCULATE(
[Toplam Satış],
SAMEPERIODLASTYEAR('Tarih'[Tarih])
)
YoY Büyüme % = DIVIDE(
[Toplam Satış] - [Geçen Yıl Aynı Dönem],
[Geçen Yıl Aynı Dönem]
)Variables (VAR) ile karmaşık DAX
Tekrar eden hesaplamaları VAR'a koy:
Pareto Analizi =
VAR ToplamSatis = [Toplam Satış]
VAR EnIyiMusteriler = TOPN(
10,
VALUES('Müşteri'[MüşteriAdı]),
[Toplam Satış], DESC
)
VAR EnIyilerSatis = CALCULATE([Toplam Satış], EnIyiMusteriler)
RETURN DIVIDE(EnIyilerSatis, ToplamSatis)VAR olmadan aynı hesap tekrar tekrar yapılır; performans düşer.
Power Query ile Veri Hazırlama
Power BI'ın ETL aracı Power Query'de yapılması gerekenler:
- Sütun temizleme: Gereksiz sütunları sil. Her sütun bellekte yer kaplar.
- Veri tipi belirleme: Sayı, tarih, metin. Yanlış tip performansı düşürür.
- Dönüşümler: Boş hücreleri doldur, hatalı değerleri düzelt, formatları standartlaştır.
- Birleştirme (merge): İki tabloyu yan yana getir. SQL JOIN gibi.
- Yığın haline getirme (append): Aynı yapıdaki tabloları alt alta birleştir.
Bu adımlar Power Query'de yapılırsa Power BI raporu hızlı kalır. Power BI içinde DAX ile yapmak için zorlanırsanız bellek ve performans kaybedersiniz.
Performans Optimizasyonu
Veri modelinin boyutunu küçült
- Sayısal sütunları integer'a çevir (decimal yerine)
- Tarih/saat sütunlarını ayır (tarih ayrı, saat ayrı)
- Tekrarlanan metinleri dimension'a taşı
- Kullanılmayan sütunları sil
Calculated column yerine measure
Calculated column verinin yenilenmesinde hesaplanır ve saklanır. Measure görünüme bağlı olarak hesaplanır. Mümkün olduğunca measure tercih.
Aggregations
Detaylı veriden agregasyon tablosu yarat. Power BI önce agregasyona bakar, gerekirse detaya iner. 100M satır bile pratikleşir.
Yaygın Hatalar
- Excel'den direkt çekip tek tablo bırakmak: Power Query'de yıldız şemasına dönüştürmeden devam etmek. Performans kötüleşir.
- Tarih sütunlarını birden fazla yerde tutmak: Her fact tablosunda kendi tarihi. Tek tarih tablosu kullanın.
- Calculated column ile measure'ı karıştırmak: Calculated column tablo verisinin parçası, measure görünüm verisinin parçası. Yanlış kullanım performansı bozar.
- Many-to-many'yi kabullenmek: Köprü tablo kurmak yerine direkt M:N kurma. Hesaplamalar yanlış çıkar.
- İlişki yönünü kontrol etmemek: Filtre yönü dimension'dan fact'a olmalı; aksi halde filtre çalışmaz.
Sıkça Sorulan Sorular
Yıldız şeması KOBİ verisi için aşırı mı?Hayır, tam tersi. KOBİ veri kümeleri 100K-1M satır arası olur; bu boyutta yıldız şemasız çalışmak zorlaşır. Yıldız şeması başlangıçta biraz çaba ister ama sürdürülebilir.
Power BI Pro lisansı yeterli mi?Evet, çoğu KOBİ için. Pro $10/kullanıcı/ay; rapor paylaşma ve güncel veri için yeterli. Premium büyük ölçekli (1000+ kullanıcı) veya AI özellikleri için.
Power Query mi DAX mi tercih edilmeli?Veri dönüştürme (temizleme, birleştirme): Power Query. İş kuralı hesaplaması (toplam, oran, time intelligence): DAX. Yanlış katmanda yapmak performans bozar.
Veri modelinin doğruluğunu nasıl test etmeli?Test ölçüsü ile manuel hesaplamayı karşılaştır. Excel'de bilinen sonucu (örneğin Q1 toplam satışı) Power BI'da aynı çıkmalı. Farkın olduğu yerlerde model hatalıdır.
Tarih tablosu nereden alınmalı?DAX ile yaratmak en pratik. Alternatif: Excel'de yıllık takvim tablosu hazırlayıp import etmek. Üçüncü seçenek: Power Query'de Date.Count() ile yaratmak. Hangisi olursa olsun "Tarih tablosu olarak işaretle" seçeneği aktif edilmeli.
Yazar
Serdar
Yamanlar Bilişim Uzmanı
Yamanlar Bilişim bünyesinde IT altyapısı, siber güvenlik ve dijital dönüşüm konularında içerikler üretmektedir. Sorularınız için iletişime geçebilirsiniz.
Profesyonel Destek
Bu konuda destek alın
Veri Analizi ve İş Zekası alanında ihtiyaç duyduğunuz çözümü birlikte tasarlayalım. Uzman ekibimiz 1 iş günü içinde size geri döner.
support@yamanlarbilisim.com.tr · Yanıt süresi: 1 iş günü