Share via


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

Screenshot of a many-to-many relationship in the Edit relationship pane.

Ç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:

Screenshot of ProductSales and Product table in Relationship view.

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

Screenshot of a Product table visual with two rows.

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.

Screenshot of a Sales table visual with four rows.

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

Screenshot of a Visual displaying the product name, price, and quantity.

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.

    Screenshot of a Sales table displaying sales by state.

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

    Screenshot of a Sales table displaying city, state, and population.

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:

Screenshot of a hidden State table in Relationship view.

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:

Screenshot showing a table with State, Population, and Sales data.

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:

Screenshot of a table showing State and city population and sales.

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:

Screenshot of a visual showing State, population, and sales visual.

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:

Screenshot of the Edit relationship dialog box with Cardinality and Cross filter direction highlighted.

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:

Screenshot of a State, Population, and Sales table.

Ç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:

    Screenshot of a script example. The example is, Sales total = Calculate(Sum('Sales'[Sales]), All('Sales')).

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

    Screenshot of a table visual showing State, Sales, and Sales total resulting from the formula.

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 Canlı Bağlan (ç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 Hızlı Analizler ve Soru-Cevap özellikleri, içindeki herhangi bir tabloda DirectQuery depolama modu varsa modelde kullanılamaz.

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