Aracılığıyla paylaş


Power BI Desktop'ta çoka çok ilişkileri uygulama

Power BI Desktop'ta çoka çok kardinalitesine sahip ilişkilerle, çoka çok kardinalitesini kullanan tabloları birleştirebilirsiniz. İki veya daha fazla veri kaynağı içeren veri modellerini daha kolay ve sezgisel bir şekilde oluşturabilirsiniz. Çoka çok kardinalitesine sahip ilişkiler, Power BI Desktop'taki daha büyük bileşik model özelliklerinin bir parçasıdır. Bileşik modeller hakkında daha fazla bilgi için bkz. Power BI Desktop'ta bileşik modelleri kullanma

İlişkiyi düzenle bölmesinde çoka çok ilişkinin ekran görüntüsü.

Çoka çok kardinalitesine sahip bir ilişki neleri çözer?

Çoka çok kardinalitesine sahip ilişkiler kullanılabilir hale gelmeden önce, iki tablo arasındaki ilişki Power BI'da tanımlanmıştı. İlişkiye dahil olan tablo sütunlarından en az birinin benzersiz değerler içermesi gerekiyordu. Ancak çoğu zaman benzersiz değerler içeren bir sütun yoktur.

Örneğin, iki tabloda CountryRegion etiketli bir sütun olabilir. CountryRegion değerleri her iki tabloda da benzersiz değildi. Bu tür tabloları birleştirmek için bir geçici çözüm oluşturmanız gerekiyordu. Geçici çözümlerden biri, gerekli benzersiz değerlere sahip ek tablolar eklemek olabilir. Çoka çok kardinalitesine sahip ilişkilerde, çoka çok kardinalitesine sahip bir ilişki kullanıyorsanız, bu tür tabloları doğrudan birleştirebilirsiniz.

Çoka çok kardinalitesine sahip ilişkileri kullanma

Power BI'da iki tablo arasında ilişki tanımlarken, ilişkinin kardinalitesini tanımlamanız gerekir. Örneğin, ProductSales[ProductCode] ve Product[ProductCode] sütunlarını kullanan ProductSales ve Product arasındaki ilişki Çok-1 olarak tanımlanabilir. Her ürünün çok sayıda satışı olduğundan ve Product tablosundaki (ProductCode) sütun benzersiz olduğundan ilişkiyi bu şekilde tanımlarız. bir ilişki kardinalitesini Çok-1, 1-Çok veya 1-1 olarak tanımladığınızda Power BI bunu doğrular, böylece seçtiğiniz kardinalite gerçek verilerle eşleşir.

Örneğin, bu görüntüdeki basit modele göz atın:

İlişki görünümünde ProductSales ve Product tablosunun ekran görüntüsü.

Product tablosunun gösterildiği gibi yalnızca iki satır görüntülediğini düşünün:

İki satırlı bir Product tablosu görselinin ekran görüntüsü.

Ayrıca Sales tablosunun C ürünü için bir satır da dahil olmak üzere yalnızca dört satırı olduğunu düşünün. Bilgi tutarlılığı hatası nedeniyle, ürün C satırı Product tablosunda yok.

Dört satırlı Sales tablosu görselinin ekran görüntüsü.

ProductName ve Price (Product tablosundan) ve her ürünün toplam Qty değeriyle (ProductSales tablosundan) gösterildiği gibi görüntülenir:

Ürün adını, fiyatını ve miktarını gösteren görselin ekran görüntüsü.

Yukarıdaki görüntüde görebileceğiniz gibi, boş bir ProductName satırı C ürünü için satışlarla ilişkilendirilir. Bu boş satır aşağıdaki noktaları kapsar:

  • ProductSales tablosunda, Product tablosunda karşılık gelen satır bulunmayan satırlar. Bu örnekte C ürünü için gördüğümüz gibi bilgi tutarlılığı sorunu vardır.

  • ProductSales tablosunda yabancı anahtar sütununun null olduğu tüm satırlar.

Bu nedenlerle, her iki durumdaki boş satır, ProductName ve Price değerinin bilinmediği satışları gösterir.

Bazen tablolar iki sütunla birleştirilir, ancak her iki sütun da benzersiz değildir. Örneğin, şu iki tabloyu göz önünde bulundurun:

  • Sales tablosunda Eyalete göre satış verileri görüntülenir ve her satır bu durumdaki satış türü için satış tutarını içerir. Durumlar CA, WA ve TX'tir.

    Eyalete göre satışları gösteren Satış tablosunun ekran görüntüsü.

  • CityData tablosu, nüfus ve eyalet (CA, WA ve New York gibi) dahil olmak üzere şehirlere ilişkin verileri görüntüler.

    Şehir, eyalet ve popülasyonu gösteren Bir Satış tablosunun ekran görüntüsü.

State sütunu artık her iki tabloda da yer alır. Hem eyalete göre toplam satışları hem de her eyaletin toplam nüfusunu raporlamak isteyebilirsiniz. Ancak bir sorun var: State sütunu iki tabloda da benzersiz değil.

Önceki geçici çözüm

Power BI Desktop'ın Temmuz 2018 sürümünden önce bu tablolar arasında doğrudan ilişki oluşturamazsınız. Yaygın bir geçici çözüm şu şekildedir:

  • Yalnızca benzersiz Durum Kimliklerini içeren üçüncü bir tablo oluşturun. Tablo şunlardan herhangi biri veya tümü olabilir:

    • Hesaplanan tablo (Veri Çözümleme İfadeleri [DAX] kullanılarak tanımlanır).
    • Power Query Düzenleyicisi'de tanımlanan ve tablolardan birinden çekilen benzersiz kimlikleri görüntüleyebilen bir sorguyu temel alan tablo.
    • Birleştirilmiş tam küme.
  • Ardından, ortak Çok-1 ilişkilerini kullanarak iki özgün tabloyu bu yeni tabloyla ilişkilendirin.

Geçici çözüm tablosunu görünür bırakabilirsiniz. Alternatif olarak, geçici çözüm tablosunu gizleyerek Alanlar listesinde görünmemesi de gerekebilir. Tabloyu gizlerseniz, Çok-1 ilişkileri genellikle her iki yönde de filtrelenecek şekilde ayarlanır ve her iki tablodan da State alanını kullanabilirsiniz. İkinci çapraz filtreleme diğer tabloya yayılır. Bu yaklaşım aşağıdaki görüntüde gösterilmiştir:

İlişki görünümünde gizli durum tablosunun ekran görüntüsü.

State (CityData tablosundan), toplam Population ve total Sales ile birlikte görüntülenen bir görsel aşağıdaki gibi görünür:

State, Population ve Sales verilerini içeren bir tabloyu gösteren ekran görüntüsü.

Not

CityData tablosundaki durum bu geçici çözümde kullanıldığından yalnızca tablodaki durumlar listelenir, bu nedenle TX dışlanır. Ayrıca, Çok-1 ilişkilerinin aksine, toplam satırı tüm Satışları (TX'inkiler dahil) içerirken, ayrıntılar bu tür eşleşmeyen satırları kapsayan boş bir satır içermez. Benzer şekilde, State için null değeri olan Sales'i kapsayan boş bir satır yoktur.

Bu görsele Şehir de eklediğinizi varsayalım. Şehir başına nüfus bilinse de, City için gösterilen Satışlar yalnızca ilgili Eyalet için Satışları tekrarlar. Bu senaryo normalde burada gösterildiği gibi sütun gruplandırma işlemi bazı toplama ölçüleriyle ilişkili olmadığında oluşur:

Eyalet ve şehir nüfusu ile satışları gösteren bir tablonun ekran görüntüsü.

Yeni Sales tablosunu buradaki tüm Eyaletlerin birleşimi olarak tanımladığınız ve alanlar listesinde görünür hale getirdiğimizi varsayalım. Aynı görselde State (yeni tabloda), toplam Population ve total Sales görüntülenir:

Durum, nüfus ve satış görselini gösteren görselin ekran görüntüsü.

Gördüğünüz gibi, Bilinen Nüfus verilerine sahip olan ancak Satış verileri bilinmeyen TX ve Bilinen Nüfus verilerine sahip ancak Satış verileri olmayan New York dahil edilecek. Bu geçici çözüm en uygun çözüm değildir ve birçok sorunu vardır. Çoka çok kardinalitesine sahip ilişkiler için, bir sonraki bölümde açıklandığı gibi sonuçta ortaya çıkan sorunlar giderilir.

Bu geçici çözümü uygulama hakkında daha fazla bilgi için bkz . Çoka çok ilişki kılavuzu.

Geçici çözüm yerine çoka çok kardinalitesine sahip bir ilişki kullanın

Daha önce açıkladığımız tablolar gibi tabloları, benzer geçici çözümlere başvurmak zorunda kalmadan doğrudan ilişkilendirebilirsiniz. Artık ilişki kardinalitesini çoka çok olarak ayarlamak mümkündür. Bu ayar, hiçbir tablonun benzersiz değerler içermediğini gösterir. Bu tür ilişkiler için, hangi tablonun diğer tabloyu filtreleyebileceğini denetlemeye devam edebilirsiniz. Ya da her tablonun diğerini filtrelediği çift yönlü filtreleme uygulayabilirsiniz.

Power BI Desktop'ta, hiçbir tablonun ilişki sütunları için benzersiz değerler içermediğini belirlediğinde kardinalite varsayılan olarak çoka çok olarak ayarlanır. Böyle durumlarda, bir uyarı iletisi ilişki ayarlamak istediğinizi ve değişikliğin veri sorununun istenmeyen etkisi olmadığını onaylar.

Örneğin, doğrudan CityData ile Sales arasında (filtrelerin CityData'dan Sales'e akması gereken) bir ilişki oluşturduğunuzda, Power BI Desktop İlişkiyi düzenle iletişim kutusunu görüntüler:

Kardinalite ve Çapraz filtre yönü vurgulanmış ilişkiyi düzenle iletişim kutusunun ekran görüntüsü.

Sonuçta elde edilen İlişki görünümü, iki tablo arasındaki doğrudan, çoka çok ilişkisini görüntüler. Tabloların Alanlar listesindeki görünümü ve görseller oluşturulduğunda daha sonraki davranışları, geçici çözümü uyguladığımız zamanlara benzer. Geçici çözümde, ayrı Durum verilerini görüntüleyen ek tablo görünür hale getirilemeyecek. Daha önce açıklandığı gibi State, Population ve Sales verilerini gösteren bir görsel görüntülenecekti:

State, Population ve Sales tablosunun ekran görüntüsü.

Çoka çok kardinalitesine sahip ilişkiler ile daha tipik Çok-1 ilişkileri arasındaki başlıca farklar şunlardır:

  • Gösterilen değerler, diğer tablodaki eşleşmeyen satırları hesaplayan boş bir satır içermez. Ayrıca değerler, diğer tablodaki ilişkide kullanılan sütunun null olduğu satırları hesaba katmaz.

  • birden fazla satır ilişkilendirilebileceği için işlevini kullanamazsınız RELATED() .

  • bir tabloda işlevinin ALL() kullanılması, çoka çok ilişkisi tarafından diğer ilişkili tablolara uygulanan filtreleri kaldırmaz. Yukarıdaki örnekte, burada gösterildiği gibi tanımlanan bir ölçü, ilgili CityData tablosundaki sütunlardaki filtreleri kaldırmaz:

    Betik örneğinin ekran görüntüsü. Örnek: Sales total = Calculate(Sum('Sales'[Sales]), All('Sales')).

    State, Sales ve Sales toplam verilerini gösteren bir görsel şu grafikle sonuçlanır:

    Formülden elde edilen State, Sales ve Sales toplamını gösteren tablo görselinin ekran görüntüsü.

Yukarıdaki farkları göz önünde bulundurarak, genel toplamın %'si gibi kullanan ALL(<Table>)hesaplamaların istenen sonuçları döndürdiğinden emin olun.

Dikkat edilecekler ve sınırlamalar

Çoka çok kardinalitesine ve bileşik modellere sahip ilişkilerin bu sürümünde birkaç sınırlama vardır.

Aşağıdaki Live Connect (çok boyutlu) kaynaklar bileşik modellerle kullanılamaz:

  • SAP HANA
  • SAP Business Warehouse
  • SQL Server Analysis Services
  • Power BI anlam modelleri
  • Azure Analysis Services

DirectQuery kullanarak bu çok boyutlu kaynaklara bağlandığınızda, başka bir DirectQuery kaynağına bağlanamaz veya içeri aktarılan verilerle birleştiremezsiniz.

DirectQuery kullanmanın mevcut sınırlamaları, çoka çok kardinalitesine sahip ilişkileri kullandığınızda da geçerlidir. Artık tablonun depolama moduna bağlı olarak tablo başına birçok sınırlama vardır. Örneğin, içeri aktarılan bir tablodaki hesaplanmış sütun diğer tablolara başvurabilir, ancak DirectQuery tablosundaki hesaplanmış sütun yine de yalnızca aynı tablodaki sütunlara başvurabilir. Model içindeki tablolardan herhangi biri DirectQuery ise, diğer sınırlamalar modelin tamamı için geçerlidir. Örneğin, içindeki herhangi bir tabloda DirectQuery depolama modu varsa Modelde QuickInsights ve Soru-Cevap özellikleri kullanılamaz.

Bileşik modeller ve DirectQuery hakkında daha fazla bilgi için aşağıdaki makalelere bakın: