Veri Modelinde İlişki Tipleri- Limited Relationships

Veri Modeli

Veri modelinde ilişki tiplerine limited relationships ile devam edelim. Önceki yazıdan hatırlamak gerekirse, iki tablo arasındaki bir ilişki ya regular ‘dır ya da limited‘ tir. Bir ilişkinin tipini regular ya da limited olarak belirlemek bizim seçebileceğimiz bir opsiyon değil demiştim.

Import moduyla alınan veya direct query modunda ama aynı veri kaynağından gelen iki tablo arasındaki tüm 1-∞, ∞-1 ve 1-1 ilişkiler regular ilişkidir.

Bu ve önceki yazının temel kaynaklarından birisi Microsoft Learn’deki bu sayfa, tekrar belirtmiş olayım. Türkçe versiyonu da burada.

Limited Relationship Ne Demek?

Regular ilişkiyi tariflerken, Power BI “bir ilişkinin one tarafındaki tablonun anahtar sütununda sadece ve sadece tekil değerler olduğunu 100% garanti edebildiğinde” demiştim. Benzer bir tarifi limited ilişki için yapacak olursak, 100% garanti edemediğinde buna limited ilişki diyor!

Bu 100% garanti edemediği durumu yaratalım! Önceki yazıda kullandığım basit tabloları kullanacağım gene.

Soldaki Ürünler ve ortadaki Satışlar tablosu import ile alınmış ve veri kaynağı aynı SQL sunucu. Ürünler tablosu ile Satışlar tablosu Ürün ID üzerinden 1-∞ tipinde ilişkili. Aradaki ilişki regular ilişki.

Üzerinde mavi renk çizgi olan sağdaki Ürünler tablosu, bir başka SQL sunucudan direct query ile alınmış. Bu tablodaki Ürün ID ile diğer SQL sunucudan çekilmiş Satışlar tablosunu birleştirdiğimizde arada gene 1-∞ ilişki kuruyor. Ama ilişkinin gösterim tipi farklı!

İlişki tipleri

Soldaki regular 1-∞ ilişkide kesintisiz gözüken çizgi, sağdaki 1-∞ ilişkide kesintisiz değil! Birleşme noktalarında boşluk gözüküyor. Bu ilişki : limited ilişki!

Limited ve Regular Relationship Arasında Ne Fark Var?

Farkları daha net anlamak için tablolardaki değerlere bir göz atalım.

Örnekteki her iki Ürün tablosu da birebir aynı değerleri içeriyor. Satışlar tablosunda olup Ürünler tablosunda olmayan, uyuşmayan kayıtlar ve blank bir satır var.

Hem regular hem de limited ilişkideki Ürünler tablolarının sütunlarını tutar toplamını gösteren bir metrikle matrislere düşürelim.

Regular ilişki üzerinden çalışan soldaki matris, satışlar tablosunda olup ürünler tablosunda karşılığı olmayan, match etmeyen tüm kayıtlar için fiktif bir blank satır oluşturdu ve bu blank satırı gösteriyor. Eşleşmeyen 9-10 ve blank satırlarını, ürünler tablosundaki bu fiktif blank satırıyla eşleştirdi ve tabloları LEFT OUTER JOIN ile birleştiriyor. Dip toplam 1040, aritmetik olarak doğru.

Limited ilişki üzerinden çalışan sağdaki matris, eşleşmeyen kayıtlar için Ürünler tablosunda fiktif bir blank satırı oluşturmuyor, dolayısıyla matriste bir BLANK satırı yok ve tabloları birleştirirken INNER JOIN kullandı. Dip toplam 1040, aritmetik olarak matriste gözüken rakamların toplamı değil! Satışlar tablosundaki eşleşen-eşleşmeyen tüm tutar rakamlarının toplamı. Çünkü şu anki baktığımız matrisin toplam satırını limited ilişkili Ürünler tablosundan tetikleyen bir filtre yok! Dolayısıyla total satırındaki filter context‘te tüm satışlar tablosu var.

Limited ilişkilerde mutlaka hatırlamamız gereken durumlardan biri bu. One tarafındaki limited ilişkili tablodan gelen bir filtre yoksa, eşleşmeyen kayıtların değerlerine de bakıyor olabiliriz. Bu tablodaki Ürün ID’lerin hepsini seçerek matrise baktığımızda aritmetik olarak doğru olacaktır.

Aynı Kaynak Grubu, Farklı Kaynak Grubu ve Composite Model

Power BI, bir veri modelinde farklı kaynaklardan gelen direct query tablolar olduğunda veya aynı kaynaktan hem direct query hem de import edilmiş tablolar olduğunda buna composite model diyor.

Veri kaynaklarını tariflerken “source group” ifadesini kullanıyor. Kaynak grubu, ya da veri kaynağı diye çevirebiliriz sanırım.

One tarafındaki direct query ile bağlandığımız tablo, yukarıdaki örnekte olduğu gibi many tarafındaki tabloyla farklı kaynaktan geliyorsa aradaki ilişkiyi limited yaratıyor. Örneğini yaptık.

Eğer tabloların her ikisi de aynı veri kaynağından geliyorsa, fakat tabloların biri direct query diğeri import modundaysa, gene limited ilişki yaratıyor.

Eğer aynı kaynaktan gelen her iki tablo da direct query ile oluştuysa aradaki ilişkiyi regular yaratıyor.

Yazıdaki şu ana kadar anlattığım örnekleri şöyle bir resimle toplayalım: Üzerinde renk çizgisi olmayan tablolar import modunda, renkli olan tablolar direct query modunda, aynı renkli tablolar aynı veri kaynağından geliyor, farklı renk farklı bir veri kaynağından geldiğini gösteriyor. R regular, L de limited anlamında.

Many to Many İlişki

Power BI ‘ın limited ilişki yarattığı bir durum daha var: O da many-to-many ilişki tipi. Tablolar import olsun ya da olmasın, farklı kaynaklardan gelsin ya da gelmesin, her türlü many-to-many ilişki limited ilişki! İlişkinin bir tarafında tekil değerler olsa bile, teknik olarak many-to-many ilişki oluşturduysanız, bu ilişki limited!

Limited İlişkilerdeki Diğer Kısıtlar

Limited bir ilişkide one tarafındaki tablonun değerlerine ulaşmak için RELATED gibi fonksiyonları kullanamıyoruz.

Basit bir örnek olması açısından, diyelim Satışlar tablosuna, limited ilişkili Ürünler tablosundan renk bilgisini bir hesaplanmış sütun olarak getirmeye çalışalım.

Sanki arada hiçbir ilişki yokmuş gibi davranıp hata veriyor.

Bu durumun diğer bir doğal sonucu RLS, yani Row Level Security. Eğer limited ilişkinin one tarafındaki bir tablonun sütunları üzerinden rol oluşturursanız bu da çalışmayacaktır.

Bloga sosyal medya hesabınızla hızlı üye olmak için ilgili ikonu tıklayabilirsiniz.

Yorum yapın

PowerBI İstanbul

Power BI, Power Query, DAX, Azure servisleri, SSAS, DW, R, veri madenciliği, veri modelleme ve veri görselleştirme üzerine Türkçe bilgi içeriğine katkı sağlamayı amaçlar.

Intellect BI blog sitesidir.

Intellect BI & PowerBI İstanbul, Microsoft Data Analytics ve Power BI Partneri 'dir.

Blog Yazılarına Üye Olun

Blog yazıları, eğitim ve meetup duyuruları posta kutunuza gelsin!

8,3K Üye