Veri Modelleme: Tablolar, İlişkiler ve Yıldız Şeması
Tahmini süre: 14 dk. Arayüz Power BI Desktop sürümüne ve dil ayarına göre küçük farklar gösterebilir; menü adları bu yüzden Türkçe ve İngilizce karşılıklarıyla verilmiştir.
Bu derste ne yapacağız?
Bu ders, kursun 4/8 dersidir. Önceki derslerde verilerinizi Excel'den Power BI'a aldınız ve temizlediniz. Şimdi bu tabloların birbiriyle nasıl konuşacağını kuracağız. Bir sonraki derste bu modelin üzerine hesaplamalar (ölçüler) yazmaya geçeceğiz. Yani bu ders, sonraki dersin temelidir.
Bu derste şunları öğreneceksiniz:
- DÜŞEYARA ile tek büyük tablo yapmak yerine neden ilişkilerle çalışıldığını.
- Olgu (fact) tablosu ile boyut (dimension) tablosu arasındaki farkı.
- İlişkinin yönünü ve türünü (bire çok, tek yönlü filtre).
- Yıldız şemasının nasıl göründüğünü ve bir tarih tablosunun neden gerektiğini.
Ön koşul: Power BI Desktop kurulu olmalı; en az iki tabloyu (örneğin Satışlar ve Ürünler) modele yüklemiş olmalısınız. Excel'de DÜŞEYARA kullandıysanız konuyu daha kolay kavrarsınız.
Kavram
Excel'de bir satış listesine ürün kategorisini getirmek için DÜŞEYARA yazarsınız. Her satır için formül çalışır, dosya büyüdükçe yavaşlar ve aynı bilgi binlerce kez tekrarlanır. Power BI'da ise bilgiyi bir kez, doğru yerde tutarsınız ve tabloları bir ilişki ile bağlarsınız.
Günlük hayat benzetmesi: Bir kütüphaneyi düşünün. Ödünç alma defteri her satırda yalnızca kitap numarasını ve üye numarasını yazar. Kitabın yazarı, üyenin adresi ise ayrı fihristlerde durur. Defter kalabalık olsa da fihrist küçüktür; bir yazarın adı değişirse yalnızca fihristte düzeltirsiniz. İşte ödünç defteri bir olgu tablosu, fihristler ise boyut tablolarıdır.
Olgu ve boyut tabloları
| Özellik | Olgu tablosu | Boyut tablosu |
|---|---|---|
| İçerdiği şey | Olaylar ve sayılar (satış, adet, tutar) | Tanımlayıcı bilgiler (ürün adı, kategori, şehir) |
| Satır sayısı | Genellikle çok fazla | Genellikle az |
| Anahtar sütun | Yabancı anahtar (ürün no, müşteri no) | Benzersiz birincil anahtar |
| Örnek | Satışlar | Ürünler, Müşteriler, Takvim |
Yıldız şeması
Ortada tek bir olgu tablosu, çevresinde ona bağlı boyut tabloları olduğunda şeklin bir yıldıza benzemesinden dolayı bu düzene yıldız şeması denir. Orta düzey bir raporda hedefiniz budur: sade, hızlı ve hata payı düşük bir model.
İlişkinin türü ve yönü
- Bire çok (1:*): Boyut tarafında her değer bir kez geçer (Ürün No 105 yalnızca bir kez), olgu tarafında çok kez geçer (105 numaralı ürün yüzlerce satışta yer alır).
- Filtre yönü: Filtre, boyuttan olguya doğru akar. Rapordaki bir kategori dilimleyicisini seçtiğinizde Satışlar tablosu süzülür. Bunun adı tek yön (Single) filtrelemedir ve çoğu durumda doğru seçimdir.
- Çift yön (Both): Filtre iki yönde akar. Beklenmedik sonuçlara ve yavaşlığa yol açabilir; yalnızca gerçekten ihtiyaç olduğunda açın.
Tarih tablosu neden gerekli?
Satışlar tablosunda bir sipariş tarihi sütunu vardır ama yıl, çeyrek, ay adı, hafta günü gibi alanlar ve eksiksiz bir takvim yoktur. Ayrıca satış olmayan günler tabloda hiç görünmez; bu da zaman içinde karşılaştırma yapan hesaplamaları bozar. Ayrı bir Takvim tablosu bu sorunu çözer: her gün bir kez yer alır ve Satışlar tablosuyla tarih üzerinden bağlanır. Geçen yılla karşılaştırma gibi zaman zekâsı hesaplamaları da bu tabloya dayanır.
Adım adım uygulama
Aşağıdaki örnekte Satışlar, Ürünler ve Müşteriler tablolarının yüklü olduğunu varsayıyoruz.
- Adım 1: Power BI Desktop'ta pencerenin sol kenarındaki dikey simge çubuğuna bakın. Üç simge vardır: Rapor, Tablo ve Model. Üçüncü simgeye (birbirine bağlı kutular şeklinde) tıklayın. Tablolarınız kutular hâlinde görünür.
- Adım 2: Power BI ilişkileri çoğu zaman sütun adlarına bakarak kendisi kurar. Kutular arasında çizgi var mı bakın. Çizginin bir ucunda 1, diğer ucunda * işareti olmalıdır.
- Adım 3: Çizgi yoksa Ana Sayfa sekmesinde İlişkileri yönet (Manage relationships) düğmesine tıklayın, açılan pencerede Yeni düğmesini seçin.
- Adım 4: Birinci açılır listeden Satışlar tablosunu seçin ve tabloda ürün numarası sütununa tıklayarak sütunu koyu renkle işaretleyin. İkinci açılır listeden Ürünler tablosunu seçin ve aynı şekilde ürün numarası sütununu işaretleyin.
- Adım 5: Kardinalite alanında Çoktan bire (*:1) seçili olduğunu kontrol edin. Çapraz filtre yönü alanında Tek seçili olsun. Kaydet düğmesine tıklayın.
- Adım 6: Aynı işlemi Satışlar tablosunun müşteri numarası sütunu ile Müşteriler tablosunun müşteri numarası sütunu için tekrarlayın.
- Adım 7: Takvim tablosunu oluşturmak için Ana Sayfa sekmesinden Veriyi dönüştür yerine, Rapor görünümünde üstteki Tablo Araçları sekmesinde Yeni tablo düğmesine tıklayın. Formül çubuğu açılır.
- Adım 8: Formül çubuğuna şu ifadeyi yazın: Takvim = CALENDAR(DATE(2024,1,1), DATE(2025,12,31)). Bilgisayarınızın bölgesel ayarına göre bağımsız değişkenleri ayıran karakter virgül yerine noktalı virgül olabilir; Power BI bunu yazarken size gösterir.
- Adım 9: Takvim tablosu seçiliyken Yeni sütun düğmesine tıklayıp sırayla şunları ekleyin: Yıl = YEAR([Date]) ve Ay No = MONTH([Date]) ve Ay Adı = FORMAT([Date], "MMMM"). Sütun adı [Date], tablonuzda İngilizce arayüzde böyle görünür; Türkçe arayüzde de aynı kalabilir, otomatik tamamlama listesinden seçmek en güvenlisidir.
- Adım 10: Takvim tablosunu seçip Tablo Araçları sekmesinde Tarih tablosu olarak işaretle (Mark as date table) seçeneğine tıklayın; tarih sütununu belirtin. Ardından Model görünümüne dönün ve Takvim tablosundaki tarih sütununu Satışlar tablosundaki sipariş tarihi sütununa sürükleyip bırakın.
- Adım 11: Sonuç olarak Satışlar ortada, Ürünler, Müşteriler ve Takvim çevresinde durmalıdır. Kutuları sürükleyerek Satışlar'ı ortaya alın; tam bir yıldız şekli elde edersiniz.
- Adım 12: Rapor görünümüne geçin. Bir tablo görseli ekleyin; Ürünler tablosundan kategoriyi, Satışlar tablosundan tutarı ekleyin. Kategori bazında toplamlar geliyorsa ilişki çalışıyor demektir.
Formüllerin anlamı: CALENDAR iki tarih arasındaki her günü bir satır olarak üretir. DATE yıl, ay, gün değerinden tarih oluşturur. YEAR ve MONTH tarihten yıl ve ay numarasını çıkarır. FORMAT ise değeri metne çevirir; burada ay adını verir.
Sık karşılaşılan sorunlar
| Hata / belirti | Olası neden | Çözüm |
|---|---|---|
| Tüm kategorilerde aynı toplam görünüyor | İlişki yok veya kurulmamış | Model görünümünde çizgiyi kontrol edin; yoksa İlişkileri yönet ile kurun. |
| Bire çok yerine çoktan çoğa çıkıyor | Boyut tablosunda anahtar sütunda yinelenen değerler var | Boyut tablosunda yinelenenleri Power Query'de kaldırın; anahtar benzersiz olmalı. |
| İlişki kurulamıyor, veri türü uyuşmuyor | Bir tarafta metin, diğerinde sayı | Sütunların veri türünü Power Query'de aynı yapın. |
| Boş (BLANK) bir kategori satırı çıkıyor | Olguda boyutta karşılığı olmayan anahtar var | Eksik ürün veya müşteriyi boyut tablosuna ekleyin ya da hatalı kaydı düzeltin. |
| Takvim tablosu tarihleri kapsamıyor | Başlangıç veya bitiş yılı dar seçilmiş | CALENDAR ifadesindeki tarihleri verinizin tümünü içerecek şekilde genişletin. |
| İlişki çizgisi kesik kesik görünüyor | Bu ilişki etkin değil (başka bir yol zaten var) | Gereksiz ilişkiyi silin; iki tablo arasında tek etkin yol bırakın. |
Mini görev
Elinizdeki bir Excel dosyasında en az üç sayfa bulunsun: siparişler, ürünler ve müşteriler. Bunları Power BI'a alın ve yıldız şemasını kendi başınıza kurun.
- Siparişler tablosunu olgu tablosu olarak belirleyin ve nedenini bir cümleyle not edin.
- Ürünler ve Müşteriler tablolarında anahtar sütunun benzersiz olduğunu doğrulayın.
- İki bire çok ilişkiyi tek yönlü filtreyle kurun.
- Verinizin tarih aralığını kapsayan bir Takvim tablosu oluşturun, tarih tablosu olarak işaretleyin ve siparişlere bağlayın.
- Rapor sayfasında ay adına göre sipariş tutarını gösteren bir görsel hazırlayın.
Kontrol listesi:
- Model görünümünde Satışlar ortada, diğer tablolar çevresinde mi?
- Her çizgide 1 ve * işaretleri doğru uçlarda mı?
- Filtre yönü tek mi?
- Takvim tablosu tarih tablosu olarak işaretlendi mi?
- Görselde kategori veya ay bazında farklı toplamlar görünüyor mu?
Kendini sına
- Soru 1: DÜŞEYARA ile tek büyük tablo yapmak yerine ilişki kullanmanın iki avantajını yazın.
- Soru 2: Olgu tablosu ile boyut tablosu arasındaki temel fark nedir?
- Soru 3: Bire çok ilişkide '1' ucu hangi tablodadır?
- Soru 4: Çift yönlü filtreyi neden dikkatli kullanmalıyız?
- Soru 5: Ayrı bir Takvim tablosu neden gerekir?
Cevaplar
- Cevap 1: Bilgi tek yerde tutulur, tekrar azalır; ayrıca dosya daha hızlı çalışır ve bir değişikliği tek noktadan düzeltirsiniz.
- Cevap 2: Olgu tablosu olayları ve sayısal değerleri (satış, adet, tutar) tutar ve çok satırlıdır. Boyut tablosu tanımlayıcı bilgileri (ürün adı, kategori, şehir) tutar ve anahtarı benzersizdir.
- Cevap 3: Boyut tablosunda; çok ucu ise olgu tablosundadır.
- Cevap 4: Filtre iki yönde aktığı için belirsiz yollar, beklenmedik sonuçlar ve yavaşlık oluşabilir. Yalnızca gerçekten gerektiğinde açılmalıdır.
- Cevap 5: Eksiksiz günleri, yıl, ay, çeyrek gibi alanları sağlar ve zaman içinde karşılaştırma yapan hesaplamaların doğru çalışmasını mümkün kılar.
Modeliniz artık sağlam bir temele oturdu. Bir sonraki derste bu yıldız şemasının üzerine ölçüler yazarak toplam, oran ve karşılaştırma hesaplarına geçeceğiz.
Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol