Ana içeriğe geç
Kesit Power BI
Temel · Veri Modelleme

Veri modelleme: yıldız şema ve ilişkiler

Olgu ve boyut tabloları, kardinalite, filtre yönü. Power BI neden yıldız şemayı sever?

Uygulamada aç, 7 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

İki tür tablo

Olgu (fact) tablosuBoyut (dimension) tablosu
Ne tutar?Olayları ve sayıları: satış satırı, ödeme, ziyaretOlayları tanımlayan nitelikleri: ürün, müşteri, tarih
Satır sayısıÇok (milyonlar)Az (yüzler, binler)
SütunlarAnahtarlar + sayısal değerlerTek bir anahtar + metin nitelikler
Bu modeldeSatislar, HedeflerUrunler, Musteriler, Tarih, Kategoriler

Yıldız şema

Olgu tablosu ortada durur, boyutlar çevresinde dizilir. Her boyut olguya bire-çok (1:*) ilişkiyle bağlanır: bir ürünün çok satış satırı vardır. Diyagram bir yıldıza benzer. Anadolu Market modeli sayfasında bu modelin diyagramını görebilirsin.

Neden yıldız?Filtreler boyuttan olguya doğru akar. Kullanıcı dilimleyicide “Kitap” seçer → Urunler süzülür → ilişki üzerinden Satislar yalnızca kitap satırlarına iner → ölçü bu satırlar üzerinde hesaplanır. Tablolar az, ilişkiler net olduğunda hem DAX basitleşir hem motor hızlanır.

İlişkinin özellikleri

Anahtarlar

Boyut tablosundaki anahtar (Urunler[UrunNo]) benzersiz olmalıdır. Olgu tablosundaki yabancı anahtar (Satislar[UrunNo]) tekrar edebilir. Boyut anahtarında tekrar varsa Power BI ilişkiyi çoka-çok yapar; bu genellikle veride bir sorun olduğunu gösterir.

Kaçınılacak desenler

Uzmanlaş

Kardinaliteyi veriyle oku

Kardinalite, bir ilişkinin iki ucunda kaç satırın eşleştiğini söyler. Ezberlemek yerine veriye bakarak bulabilirsin. Urunler ile Satislar ilişkisini ele alalım:

SoruUrunler[UrunNo]Satislar[UrunNo]
Kaç satır?401.620
Kaç farklı değer?40 (her ürün bir kez)38 (ürünler tekrar ediyor)
Sonuç“Bir” tarafı“Çok” tarafı

Satır sayısı ile farklı değer sayısı eşitse o sütun benzersizdir ve ilişkinin bir tarafı olabilir. Satislar'da 38 farklı ürün var; demek ki katalogdaki iki ürün hiç satılmamış. Bu bir hata değil, bir bilgidir. Model görünümünde ilişki çizgisinin ucunda 1 ve * işaretleri bu durumu gösterir.

Kontrol etmenin kolay yolu: Tablo görünümünde sütunu seç; Power Query'de ise Görünüm → Sütun profili ile “farklı” ve “benzersiz” sayılarını gör. Boyut tablosunda farklı sayısı satır sayısından azsa yinelenen anahtar vardır ve önce onu temizlemen gerekir.

Filtre yönünü bir örnekle izle

İlişkiler tek yönlüyken filtre bir tarafından çok tarafına akar. Bunu iki basit ölçüyle görebilirsin:

Katalog Ürün Sayısı = COUNTROWS(Urunler)
Satılmış Ürün Sayısı = DISTINCTCOUNT(Satislar[UrunNo])
KırılımKatalog Ürün SayısıSatılmış Ürün SayısıNeden?
Kategori: Elektronik88Kategoriler → Urunler → Satislar yolu var; ikisi de süzülür.
Kategori: Hediye21İki hediye ürününden biri hiç satılmamış.
Yıl: 2022, 2023, 202440, 40, 4036, 38, 38Tarih yalnızca Satislar'ı süzer; Urunler'e geri akmaz.
Segment: Premium4038Musteriler → Satislar akar, Satislar → Urunler akmaz.

“Premium müşterilerin aldığı ürün sayısı” isteniyorsa yanlış yol ilişkiyi çift yönlü yapmaktır. Doğru yol, sayımı olgu tablosu üzerinden yapmaktır: DISTINCTCOUNT(Satislar[UrunNo]). Olgu tablosu her boyuttan filtre alır; sayımı orada yaparsan çift yönlü ilişkiye ihtiyaç kalmaz.

İlişkiyi adım adım kurmak

  1. Model görünümünde bir tarafındaki sütunu (Urunler[UrunNo]) çok tarafındaki sütunun (Satislar[UrunNo]) üzerine sürükle.
  2. Açılan pencerede kardinaliteyi (Bire çok), çapraz filtre yönünü (Tek) ve “Bu ilişkiyi etkin yap” kutusunu kontrol et.
  3. İki sütunun veri türü aynı olmalı. Biri metin “27”, diğeri tam sayı 27 ise ilişki kurulmaz ya da eşleşme olmaz; türü Power Query'de eşitle.
  4. Kurduktan sonra bir tablo görselinde Kategoriler[Kategori] ile [Net Satış]'ı yan yana koy; boş (BLANK) bir kategori satırı görürsen olgu tablosunda boyutta karşılığı olmayan anahtarlar var demektir.
Model sağlık kontrolüHer boyut anahtarı benzersiz mi? Her ilişki bire-çok ve tek yönlü mü? Boş boyut satırı var mı? Bu üç soruya “evet, evet, hayır” diyorsan temel model sağlamdır. İleri konular Model tasarımı II dersinde.
Alıştırmalara geç (7)