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. Kolayca ve sezgisel bir şekilde iki veya daha fazla veri kaynağı içeren veri modelleri 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.

A many-to-many relationship in the

Power BI Desktop'ta çoka çok kardinalitesine sahip bir ilişki , ilgili üç özellik arasında oluşur:

  • Bileşik modeller: Bileşik modeller, raporda DirectQuery bağlantıları ve içeri aktarma da dahil olmak üzere herhangi bir birleşimde iki veya daha fazla veri bağlantısına izin verir. Daha fazla bilgi için bkz. Power BI Desktop’ta bileşik modelleri kullanma.

  • Çoka çok kardinalitesine sahip ilişkiler: Bileşik modellerle tablolar arasında çoka çok kardinalitesine sahip ilişkiler oluşturabilirsiniz. Bu yaklaşım tablolardaki benzersiz değer gereksinimlerini ortadan kaldırır. Ayrıca yalnızca ilişki kurmak için yeni tablo eklenmesi gibi eski geçici çözümleri de devre dışı bırakır. Bu özellik bu makalede ayrıntılı olarak açıklanmaktadır.

  • Depolama modu: Artık arka uç veri kaynaklarını sorgulaması gereken görselleri belirtebilirsiniz. Sorgu gerektirmeye görseller DirectQuery tabanlı olsa dahi içeri aktarılmaz. Bu özellik, performansı artırmanıza ve arka uç yükünü azaltmanıza yardımcı olur. Daha önce, sorguları başlatan dilimleyiciler gibi basit görseller bile arka uç kaynaklara gönderiliyordu. Daha fazla bilgi için bkz. Power BI Desktop’ta depolama modu.

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

Çoka çok kardinalitesine sahip ilişkiler kullanıma sunulmadan önce, iki tablo arasındaki ilişki Power BI'da tanımlanmıştı. İlişkideki tablo sütunlarından en az birinde benzersiz değerlerin bulunması şarttı. Ancak genellikle benzersiz değer içeren sütun bulunmuyordu.

Örneğin, iki tabloda da Ülke etiketine sahip bir sütun bulunabiliyordu. Ancak Ülke değerleri iki tabloda da benzersiz olmuyordu. Bu tabloları birleştirmek için geçici bir çözüme ihtiyaç duyuluyordu. Geçici çözümlerden biri, ihtiyaç duyulan benzersiz değerleri içeren tablolar eklemekti. Çoka çok kardinalitesine sahip ilişkilerle, ç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ındaki ilişkiyi tanımlarken, ilişkinin kardinalitesini tanımlamanız gerekir. Örneğin, ProductSales[ProductCode] ve Product[ProductCode] sütunlarını kullanan ProductSales ile Product arasındaki ilişki Çok-1 olarak tanımlanabilir. Her ürün için birden fazla satış olduğundan ve Product tablosundaki (ProductCode) sütunu benzersiz olduğundan ilişkiyi bu şekilde tanımlıyoruz. Bir ilişkinin kardinalitesini Çok-1, 1-Çok veya 1-1 olarak tanımladığınızda Power BI doğrulama gerçekleştirerek seçtiğiniz kardinalitenin gerçek verilerle eşleşmesini sağlar.

Örneğin, şu görüntüde yer alan basit modele göz atalım:

ProductSales and Product table, Relationship view, Power BI Desktop

Şimdi Product tablosunda aşağıdaki gibi yalnızca iki satır görüntülendiğini düşünelim:

Product table visual with two rows, Power BI Desktop

Aynı zamanda Sales tablosunda C ürünü için bir satırın da bulunduğu yalnızca dört satır olduğunu düşünelim. Bilgi tutarlılığı hatası nedeniyle C ürününün satırı Product tablosunda mevcut değildir.

Sales table visual with four rows, Power BI Desktop

ProductName ve Price (Product tablosundan) ile her ürün için toplam Qty değeri (ProductSales tablosundan) şu şekilde gösterilecektir:

Visual displaying the product name, price, and quantity, Power BI Desktop

Yukarıdaki görüntüde gördüğünüz gibi C ürünüyle ilişkilendirilmiş boş bir ProductName satırı vardır. Bu boş satır aşağıdakileri gösterir:

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

  • ProductSales tablosunda, yabancı anahtar sütunu null olan herhangi bir satır.

Bu nedenlerden dolayı, her iki durumda da boş satır ProductName ve Price değerlerinin bilinmediği satışları gösterir.

Bazen tablolar iki sütunla birleştirilebilir ama sütunlardan hiçbiri benzersiz değildir. Örneğin, şu iki tabloyu inceleyin:

  • Sales tablosu State temelinde satış verilerini gösterir ve her satır o eyaletin satış türüne ilişkin satış tutarını gösterir. Eyaletler CA, WA ve TX olarak belirlenmiştir.

    Sales table displaying sales by state, Power BI Desktop

  • CityData tablosu, şehirlerin nüfus ve eyalet (CA, WA ve New York gibi) verilerini gösterir.

    Sales table displaying city, state, and population, Power BI Desktop

State sütunu iki tabloda da bulunmaktadır. Hem eyalete göre toplam satış miktarını hem de her bir eyaletin toplam nüfusunu rapora dahil etmek isteyebilirsiniz. Ancak burada bir sorun vardır: State sütunu iki tabloda da benzersiz değildir.

Eski geçici çözüm

Power BI Desktop'ın Temmuz 2018 sürümünden önce bu tablolar arasında doğrudan ilişki oluşturmak mümkün değildi. Yaygın bir geçici çözüm olarak şunlar yapılırdı:

  • Yalnızca benzersiz State kimliklerini içeren üçüncü bir tablo oluşturulurdu. Tablo şunlardan biri veya hepsi olabilirdi:

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

Geçici çözüm tablosunu görünür durumda tutabilirdiniz. Ya da geçici çözüm tablosunu gizleyerek Alanlar listesinde görünmemesini sağlayabilirdiniz. Tabloyu gizlediğinizde Çok-1 ilişkileri genellikle iki yönde de filtreleme yapacak şekilde ayarlanırdı ve iki tablodaki State alanını da kullanmanız mümkün olurdu. Sonraki çapraz filtreleme işlemleri diğer tabloya da yayılırdı. Bu yaklaşım aşağıdaki görüntüde gösterilmiştir:

Hidden State table, Relationship view, Power BI Desktop

State (CityData tablosundan) ile toplam Population ve toplam Sales değerlerini gösteren bir görsel aşağıdaki gibi olacaktır:

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

Not

Bu geçici çözümde CityData tablosundan eyalet değerinin kullanılmasıyla, yalnızca söz konusu tablodaki eyaletlerin listelendiğine (ve dolayısıyla TX eyaletinin hariç tutulduğuna) dikkat edin. Aynı zamanda, Çok-1 ilişkilerinden farklı olarak, toplam satırı tüm Sales değerlerini (TX eyaletininkiler de dahil) içerirken ayrıntılar bu tür eşleşmeyen satırları kapsayan boş satırı içermez. Benzer biçimde, State için null değeri olan bir Sales değerini kapsayacak boş bir satır yoktur.

Bu görsele City verilerini de eklediğinizi varsayalım. City başına nüfus değeri biliniyor olsa da City için gösterilen Sales değeri yalnızca ilgili State için gösterilen Sales değerini tekrarlar. Bu senaryo, burada gösterildiği gibi sütun gruplama belirli bir toplama ölçüsü ile ilgili olmadığında ortaya çıkar:

State and city population and sales, Power BI Desktop

Yeni Sales tablosunu buradaki tüm State girişlerinin toplamı olarak tanımladığınızı ve bunu Alanlar listesinde görünür hale getirdiğinizi düşünün. Aynı görselde State (yeni tabloda), Population toplamı ve Sales toplamı görüntülenir:

State, population, and sales visual, Power BI Desktop

Gördüğünüz gibi, BilinenPopulation verilerine sahip ancak Satış verileri olmayan TX ve Bilinen Population verileriyle birlikte New York dahil edilecek. Bu geçici çözüm çok uygun bir çözüm değildir ve birçok sorun barındırmaktadır. Çoka çok kardinalitesine sahip ilişkiler için, bir sonraki bölümde açıklandığı gibi 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

Benzer geçici çözümlere başvurmak zorunda kalmadan, daha önce açıkladığımız tablolar gibi tabloları doğrudan ilişkilendirebilirsiniz. Artık ilişki kardinalitesini çoka çok olarak ayarlamak mümkündür. Bu ayar, iki tabloda da benzersiz değerler olmadığını belirtir. Bu tür ilişkilerde de diğer tabloya filtre uygulayan tabloyu denetleyebilirsiniz. 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ği saptandığında kardinalite varsayılan olarak çoka çok olarak ayarlanır. Bu gibi durumlarda ilişki oluşturma isteğini onaylamanızı ve değişikliğin istenmeyen bir veri sorunu olmadığını kabul etmenizi isteyen bir uyarı iletisi görüntülenir.

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

Edit relationship dialog box, Power BI Desktop

Sonuçta elde edilen İlişki görünümü, iki tablo arasında doğrudan çok-çok ilişkisini gösterecektir. Tabloların Alanlar listesindeki görünümü ve görseller oluşturulduktan sonraki davranışları, geçici çözümün uygulandığı örneğe benzer olacaktır. Geçici çözümde, benzersiz State verilerini görüntüleyen ek tablo görünür hale getirilmez. Daha önce de açıklandığı gibi State, Population ve Sales verilerini gösteren bir görsel görüntülenir:

State, Population, and Sales tables, Power BI Desktop

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

  • Gösterilen değerlerde diğer tablodaki eşleşmeyen satırları gösteren boş satır bulunmaz. Ayrıca değerler, diğer tablodaki ilişki için kullanılan sütunun null olduğu satırları dikkate almaz.

  • Birden fazla satır arasında ilişki bulunabileceğinden RELATED() işlevini kullanamazsınız.

  • Tabloda ALL() işlevinin kullanılması çok-çok ilişkisiyle ilgili diğer tablolara uygulanan filtreleri kaldırmaz. Önceki örnekte, burada gösterildiği gibi tanımlanmış bir ölçü, ilişkili CityData tablosundaki sütunlarda bulunan filtreleri kaldırmaz:

    Script example

    State, Sales ve Sales total değerlerini gösteren bir görselde şu grafik yer alacaktır:

    Table visual

Yukarıda anlatılan farklılıkları göz önünde bulundurarak genel toplamın yüzdesi gibi ALL(<Table>) kullanan hesaplamaların istenen sonuçları döndürdüğünden emin olun.

Önemli noktalar 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 veri kümeleri
  • Azure Analysis Services

Söz konusu çok boyutlu kaynaklara DirectQuery kullanarak 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. Sınırlamaların birçoğu şimdi tablonun depolama moduna bağlı olarak tablo başına uygulanır. Örneğin, içeri aktarılan tablodaki hesaplanan sütun başka tablolara başvurabilir ama DirectQuery tablosundaki hesaplanan sütun yine aynı tablodaki sütunlara başvurabilir. Model içindeki tablolardan herhangi biri DirectQuery ise, diğer sınırlamalar modelin tamamına uygulanır. Örneğin, içindeki herhangi bir tablo DirectQuery depolama moduna sahipse Modelde QuickInsights ve QA& özellikleri kullanılamaz.

Sonraki adımlar

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