Hubungan model di Power BI Desktop

Artikel ini menargetkan pemodel data impor yang berfungsi dengan Power BI Desktop. Ini adalah topik desain model penting yang diperlukan untuk memberikan model yang intuitif, akurat, dan optimal.

Untuk diskusi yang lebih mendalam tentang desain model yang optimal, termasuk peran tabel dan hubungan, lihat Memahami skema bintang dan pentingnya Power BI.

Tujuan hubungan

Hubungan model menyebarkan filter yang diterapkan pada kolom dari satu tabel model ke tabel model yang berbeda. Filter akan menyebar selama ada jalur hubungan yang harus diikuti, yang dapat melibatkan penyebaran ke beberapa tabel.

Jalur hubungan bersifat deterministik, artinya filter selalu disebarkan dengan cara yang sama dan tanpa variasi acak. Akan tetapi, hubungan dapat dinonaktifkan, atau memiliki konteks filter yang diubah dengan perhitungan model yang menggunakan fungsi DAX tertentu. Untuk informasi selengkapnya, lihat topik Fungsi DAX yang relevan nanti di artikel ini.

Penting

Hubungan model tidak memberlakukan integritas data. Untuk informasi selengkapnya, lihat topik Evaluasi hubungan nanti di artikel ini, yang menjelaskan perilaku hubungan model saat ada masalah integritas data dengan data Anda.

Inilah cara hubungan menyebarkan filter dengan contoh animasi.

Diagram animasi penyebaran filter hubungan.

Dalam contoh ini, model terdiri dari empat tabel: Kategori, Produk, Tahun, dan Penjualan. Tabel Kategori berkaitan dengan tabel Produk, dan tabel Produk berkaitan dengan tabel Penjualan. Tabel Tahun juga berkaitan dengan tabel Penjualan. Semua hubungan bersifat satu ke banyak (detail yang dijelaskan nanti dalam artikel ini).

Sebuah kueri, mungkin dihasilkan oleh visual kartu Power BI, meminta jumlah total penjualan untuk pesanan penjualan yang dibuat untuk satu kategori, Cat-A, dan untuk satu tahun, CY2018. Itu sebabnya Anda dapat melihat filter diterapkan pada tabel Kategori dan Tahun. Filter pada tabel Kategori disebarkan ke tabel Produk untuk memisahkan dua produk yang ditetapkan ke kategori Cat-A. Kemudian filter tabel Produk disebarkan ke tabel Penjualan untuk memisahkan hanya dua baris penjualan untuk produk ini. Dua baris penjualan ini mewakili penjualan produk yang ditetapkan ke kategori Cat-A. Jumlah gabungannya adalah 14 unit. Pada saat yang sama, filter tabel Tahun disebarkan untuk memfilter lebih lanjut tabel Penjualan, menghasilkan hanya satu baris penjualan yaitu untuk produk yang ditetapkan ke kategori Cat-A dan itu dipesan pada tahun CY2018. Nilai kuantitas yang ditampilkan oleh kueri adalah 11 unit. Perhatikan bahwa saat beberapa filter diterapkan ke tabel (seperti tabel Penjualan dalam contoh ini), ini selalu merupakan operasi AND, yang mengharuskan semua ketentuan harus benar.

Menerapkan prinsip rancangan skema bintang

Sebaiknya Anda menerapkan prinsip rancangan skema bintang untuk menghasilkan model yang terdiri dari tabel dimensi dan fakta. Biasanya menyiapkan Power BI untuk menerapkan aturan yang memfilter tabel dimensi, memungkinkan hubungan model menyebarluaskan filter tersebut secara efisien ke tabel fakta.

Gambar berikut adalah diagram model dari model data analisis penjualan Adventure Works. Gambar ini menunjukkan desain skema bintang yang terdiri dari tabel fakta tunggal bernama Penjualan. Empat tabel lainnya adalah tabel dimensi yang mendukung analisis ukuran penjualan menurut tanggal, negara bagian, wilayah, dan produk. Perhatikan hubungan model yang menghubungkan semua tabel. Hubungan ini menyebarkan filter (secara langsung atau tidak langsung) ke tabel Penjualan.

Cuplikan layar diagram model Power BI Desktop yang terdiri dari tabel dan hubungan seperti yang dijelaskan dalam paragraf sebelumnya.

Tabel yang terputus

Tabel model tidak biasanya tidak berkaitan dengan tabel model lain. Tabel seperti itu dalam desain model yang valid digambarkan sebagai tabel yang terputus. Tabel terputus tidak dimaksudkan untuk menyebarkan filter ke tabel model lain. Sebagai gantinya, ia menerima "input pengguna" (mungkin dengan visual alat pengiris), memungkinkan perhitungan model menggunakan nilai input dengan cara yang berarti. Misalnya, pertimbangkan tabel terputus yang dimuat dengan rentang nilai tukar mata uang. Selama filter diterapkan untuk memfilter menurut nilai tarif tunggal, ungkapan pengukuran dapat menggunakan nilai tersebut untuk mengonversi nilai penjualan.

Parameter bagaimana-jika Power BI Desktop adalah fitur yang membuat tabel terputus. Untuk informasi selengkapnya, lihat Membuat dan menggunakan parameter Bagaimana jika untuk memvisualisasikan variabel di Power BI Desktop.

Properti hubungan

Hubungan model menghubungkan satu kolom dalam tabel ke satu kolom dalam tabel yang lain. (Ada satu kasus khusus saat persyaratan ini tidak benar, dan hanya berlaku untuk hubungan multikolom dalam model DirectQuery. Untuk informasi selengkapnya, lihat artikel fungsi COMBINEVALUES DAX.)

Catatan

Menghubungkan satu kolom ke kolom yang berbeda dalam tabel yang sama tidak mungkin dilakukan. Konsep ini terkadang dikacaukan dengan kemampuan untuk menentukan batasan kunci asing database relasional yang merujuk sendiri tabel. Anda dapat menggunakan konsep database hubungan ini untuk menyimpan hubungan induk-turunan (misalnya, setiap rekaman karyawan terkait dengan karyawan "laporkan ke"). Namun, Anda tidak dapat menggunakan hubungan model untuk membuat hierarki model berdasarkan jenis hubungan ini. Untuk membuat hierarki induk-turunan, lihat Fungsi Induk dan Turunan.

Tipe data kolom

Jenis data untuk kolom "dari" dan "ke' hubungan harus sama. Bekerja dengan hubungan yang ditentukan pada kolom DateTime mungkin tidak berulah seperti yang diharapkan. Mesin yang menyimpan data Power BI, hanya menggunakan tipe data DateTime; Jenis data Tanggal, Waktu, dan Tanggal/Waktu/Zona Waktu adalah konstruksi pemformatan Power BI yang diterapkan di atasnya. Objek yang bergantung pada model apa pun masih akan muncul sebagai DateTime di mesin (seperti hubungan, grup, dan sebagainya). Dengan demikian, jika pengguna memilih Tanggal dari tab Pemodelan untuk kolom tersebut, mereka masih tidak mendaftar sebagai tanggal yang sama, karena bagian waktu data masih dipertimbangkan oleh mesin. Baca selengkapnya tentang bagaimana jenis Tanggal/waktu ditangani. Untuk memperbaiki perilaku, jenis data kolom harus diperbarui di Editor Power Query untuk menghapus bagian Waktu dari data yang diimpor, jadi ketika mesin menangani data, nilai akan tampak sama.

Kardinalitas

Setiap hubungan model didefinisikan oleh jenis kardinalitas. Ada empat opsi jenis kardinalitas, yang mewakili karakteristik data dari kolom terkait "dari" dan "ke". Sisi "satu" berarti kolom berisi nilai unik; sisi "banyak" berarti kolom dapat berisi nilai duplikat.

Catatan

Jika operasi refresh data mencoba memuat nilai duplikat ke kolom sisi "satu", seluruh refresh data akan gagal.

Empat opsi, bersama dengan notasi singkatnya, dijelaskan dalam daftar berpoin berikut:

  • Satu ke banyak (1:*)
  • Banyak ke satu (*:1)
  • Satu ke satu (1:1)
  • Banyak ke banyak (*:*)

Saat Anda membuat hubungan di Power BI Desktop, perancang secara otomatis mendeteksi dan mengatur jenis kardinalitas. Power BI Desktop mengkueri model untuk mengetahui kolom mana yang berisi nilai unik. Untuk model impor, model ini menggunakan statistik penyimpanan internal; untuk model DirectQuery, model ini mengirim kueri pembuatan profil ke sumber data. Namun, terkadang Power BI Desktop bisa salah. Power BI Desktop bisa salah ketika tabel belum dimuat dengan data, atau karena kolom yang Anda harapkan berisi nilai duplikat saat ini berisi nilai unik. Dalam kedua kasus tersebut, Anda dapat memperbarui jenis kardinalitas selama kolom sisi "satu" mana pun berisi nilai unik (atau tabel belum dimuat dengan baris data).

Kardinalitas satu ke banyak (dan banyak ke satu)

Opsi kardinalitas satu ke banyak dan banyak ke satu pada dasarnya sama, dan kedua opsi tersebut juga merupakan jenis kardinalitas yang paling umum.

Saat mengonfigurasi hubungan satu ke banyak atau banyak ke satu, Anda akan memilih hubungan yang cocok dengan urutan kolom yang Anda kaitkan. Pertimbangkan bagaimana Anda akan mengonfigurasi hubungan dari tabel Produk ke tabel Penjualan menggunakan kolom ProductID yang terdapat di setiap tabel. Jenis kardinalitas akan menjadi satu ke banyak, karena kolom ProductID dalam tabel Produk berisi nilai unik. Jika Anda mengaitkan tabel ke arah terbalik, Penjualan ke Produk, kardinalitas akan menjadi banyak ke satu.

Kardinalitas satu ke satu

Hubungan satu ke satu berarti kedua kolom berisi nilai unik. Jenis kardinalitas ini tidak umum, dan kemungkinan mewakili desain model suboptimal karena penyimpanan data yang redundan.

Untuk informasi selengkapnya tentang menggunakan jenis kardinalitas ini, lihat Panduan hubungan satu ke satu.

Kardinalitas banyak ke banyak

Hubungan banyak ke banyak berarti kedua kolom dapat berisi nilai duplikat. Jenis kardinalitas ini jarang digunakan. Ini biasanya berguna saat merancang persyaratan model yang kompleks. Anda dapat menggunakannya untuk menghubungkan fakta banyak ke banyak atau untuk menghubungkan fakta grain yang lebih tinggi. Misalnya, ketika fakta target penjualan disimpan di tingkat kategori produk dan tabel dimensi produk disimpan di tingkat produk.

Untuk panduan tentang penggunaan jenis kardinalitas ini, lihat Panduan hubungan banyak ke banyak.

Catatan

Jenis kardinalitas Banyak ke banyak didukung untuk model yang dikembangkan untuk Server Laporan Power BI Januari 2024 dan yang lebih baru.

Tip

Dalam tampilan model Power BI Desktop, Anda dapat menginterpretasikan jenis kardinalitas hubungan dengan melihat indikator (1 atau *) di salah satu sisi garis hubungan. Untuk menentukan kolom mana yang terkait, Anda harus memilih, atau mengarahkan kursor ke atas, baris hubungan untuk menyoroti kolom.

Cuplikan layar dua tabel dalam diagram model dengan indikator kardinalitas disorot.

Arah filter silang

Setiap hubungan model didefinisikan dengan arah filter silang. Pengaturan Anda menentukan arah yang akan disebarkan oleh filter. Opsi filter silang yang memungkinkan bergantung pada jenis kardinalitas.

Jenis kardinalitas Opsi filter silang
Satu ke banyak (atau Banyak ke satu) Tunggal
Keduanya
One-to-one Keduanya
Banyak-ke-banyak Tunggal (Table1 hingga Table2)
Tunggal (Table2 hingga Table1)
Keduanya

Arah filter silang Tunggal berarti "arah tunggal", dan Keduanya berarti "kedua arah". Hubungan yang memfilter di kedua arah biasanya digambarkan sebagai dua arah.

Untuk hubungan satu ke banyak, arah filter silang selalu dari sisi "satu", dan opsional dari sisi "banyak" (dua arah). Untuk hubungan satu ke satu, arah filter silang selalu dari kedua tabel. Terakhir, untuk hubungan banyak ke banyak, arah filter silang bisa dari salah satu tabel, atau dari kedua tabel. Perhatikan bahwa ketika jenis kardinalitas menyertakan sisi "satu", filter tersebut akan selalu menyebar dari sisi tersebut.

Saat arah filter silang diatur ke Keduanya, properti lain akan tersedia. Ini dapat menerapkan pemfilteran dua arah saat Power BI memberlakukan aturan keamanan tingkat baris (RLS). Untuk informasi selengkapnya tentang RLS, lihat Keamanan tingkat baris (RLS) dengan Power BI Desktop.

Anda dapat mengubah arah hubungan filter silang, termasuk penonaktifan propagasi filter, menggunakan perhitungan model. Ini dicapai dengan menggunakan fungsi CROSSFILTER DAX.

Ingatlah bahwa hubungan dua arah dapat berdampak negatif pada performa. Selain itu, mencoba mengonfigurasi hubungan dua arah dapat menghasilkan jalur propagasi filter yang ambigu. Dalam kasus ini, Power BI Desktop mungkin gagal untuk melakukan perubahan hubungan dan akan memberi Anda peringatan dengan pesan kesalahan. Namun, terkadang Power BI Desktop memungkinkan Anda untuk menentukan jalur hubungan yang ambigu antar tabel. Mengatasi ambiguitas jalur hubungan dijelaskan nanti dalam artikel ini.

Sebaiknya gunakan pemfilteran dua arah hanya jika diperlukan. Untuk informasi lebih lanjut, lihat Panduan hubungan dua arah.

Tip

Dalam tampilan model Power BI Desktop, Anda dapat menginterpretasikan arah filter silang hubungan dengan memerhatikan panah di sepanjang garis hubungan. Sebuah panah tunggal mewakili filter satu arah ke arah panah; panah ganda mewakili hubungan dua arah.

Cuplikan layar dua tabel dalam diagram model dengan menampilkan mata panah filter silang.

Membuat hubungan ini aktif

Hanya boleh ada satu jalur propagasi filter yang aktif antara dua tabel model. Namun, mungkin untuk memperkenalkan jalur hubungan tambahan, meskipun Anda harus menetapkan hubungan ini sebagai tidak aktif. Hubungan tidak aktif hanya dapat dibuat aktif selama evaluasi perhitungan model. Ini dicapai dengan menggunakan fungsi USERELATIONSHIP DAX.

Umumnya, kami menyarankan untuk mendefinisikan hubungan aktif bila memungkinkan. Mereka memperluas cakupan dan potensi bagaimana pembuat laporan dapat menggunakan model Anda. Hanya menggunakan hubungan aktif berarti tabel dimensi permainan peran harus diduplikasi dalam model Anda.

Namun, dalam keadaan tertentu, Anda dapat menentukan satu atau beberapa hubungan tidak aktif untuk tabel dimensi permainan peran. Anda dapat mempertimbangkan desain ini ketika:

  • Tidak ada persyaratan bagi visual laporan untuk memfilter secara bersamaan berdasarkan peran yang berbeda.
  • Anda menggunakan fungsi DAX USERELATIONSHIP guna mengaktifkan hubungan tertentu untuk perhitungan model yang relevan.

Untuk informasi selengkapnya, lihat Panduan hubungan aktif vs tidak aktif.

Tip

Dalam tampilan model Power BI Desktop, Anda dapat menginterpretasikan status aktif vs tidak aktif hubungan. Hubungan aktif diwakili oleh garis tebal; hubungan tidak aktif direpresentasikan sebagai garis putus-putus.

Cuplikan layar dua tabel dalam diagram model dan dua hubungan; satu garis solid untuk aktif dan satu garis putus-putus untuk tidak aktif

Mengasumsikan integritas referensial

Properti Asumsikan integritas referensial hanya tersedia untuk hubungan satu ke banyak dan satu ke satu antara dua tabel mode penyimpanan DirectQuery yang termasuk dalam grup sumber yang sama. Anda hanya dapat mengaktifkan properti ini jika kolom samping "banyak" tidak berisi NULL.

Saat diaktifkan, kueri native yang dikirim ke sumber data akan menggabungkan dua tabel menggunakan INNER JOIN dan bukan OUTER JOIN. Umumnya, mengaktifkan properti ini meningkatkan performa kueri, meskipun hal ini bergantung pada spesifikasi sumber data.

Selalu aktifkan properti ini saat batasan kunci asing database ada di antara dua tabel. Meskipun batasan kunci yang mereferensikan tidak ada, pertimbangkan untuk mengaktifkan properti ini selama Anda yakin ada integritas data.

Penting

Jika integritas data harus dikompromikan, gabungan dalam akan menghilangkan baris yang tidak cocok di antara tabel. Misalnya, pertimbangkan tabel Penjualan model dengan nilai kolom ProductID yang tidak ada di tabel Produk terkait. Penyebaran filter dari tabel Produk ke tabel Penjualan akan menghilangkan baris penjualan untuk produk yang tidak dikenal. Hal ini akan mengakibatkan hasil penjualan yang kurang tepat.

Untuk informasi selengkapnya, lihat Pengaturan Asumsikan integritas referensial di Power BI Desktop.

Fungsi DAX yang relevan

Ada beberapa fungsi DAX yang relevan dengan hubungan model. Setiap fungsi dijelaskan secara singkat dalam daftar berpoin berikut:

  • RELATED: Mengambil nilai dari sisi "satu" hubungan. Ini berguna saat melibatkan perhitungan dari tabel berbeda yang dievaluasi dalam konteks baris.
  • RELATEDTABLE: Mengambil tabel baris dari sisi "banyak" hubungan.
  • USERELATIONSHIP: Memungkinkan perhitungan untuk menggunakan hubungan yang tidak aktif. (Secara teknis, fungsi ini memodifikasi bobot hubungan model tidak aktif tertentu yang membantu memengaruhi penggunaannya.) Ini berguna ketika model Anda menyertakan tabel dimensi pemutaran peran, dan Anda memilih untuk membuat hubungan yang tidak aktif dari tabel ini. Anda juga dapat menggunakan fungsi ini untuk mengatasi ambiguitas di jalur filter.
  • CROSSFILTER: Memodifikasi arah filter silang hubungan (ke satu atau keduanya), atau menonaktifkan propagasi filter (tidak ada). Ini berguna saat Anda perlu mengubah atau mengabaikan hubungan model selama evaluasi perhitungan tertentu.
  • COMBINEVALUES: Menggabungkan dua atau beberapa string teks ke dalam satu string teks. Tujuan dari fungsi ini adalah untuk mendukung hubungan multi-kolom dalam model DirectQuery jika tabel berada dalam grup sumber yang sama.
  • TREATAS: Menerapkan hasil ekspresi tabel sebagai filter ke kolom dari tabel yang tidak terkait. Ini sangat membantu dalam skenario lanjutan saat Anda ingin membuat hubungan virtual selama evaluasi perhitungan tertentu.
  • Fungsi Induk dan Turunan: Keluarga fungsi terkait yang dapat Anda gunakan untuk menghasilkan kolom terhitung untuk menaturalisasi hierarki induk-turunan. Anda kemudian dapat menggunakan kolom ini untuk membuat hierarki tingkat tetap.

Evaluasi hubungan

Hubungan model, dari perspektif evaluasi, diklasifikasikan sebagai reguler atau terbatas. Ini bukan properti hubungan yang dapat dikonfigurasi. Ini sebenarnya disimpulkan dari jenis kardinalitas dan sumber data dari dua tabel terkait. Penting untuk memahami jenis evaluasi karena mungkin ada implikasi atau konsekuensi performa jika integritas data dikompromikan. Implikasi dan konsekuensi integritas ini dijelaskan dalam topik ini.

Pertama, diperlukan beberapa teori pemodelan untuk sepenuhnya memahami evaluasi hubungan.

Semua sumber daya model impor atau DirectQuery berasal dari cache Vertipaq atau database sumber. Dalam kedua kasus ini, Power BI dapat menentukan bahwa ada sisi "satu" dari suatu hubungan.

Namun, model komposit dapat terdiri dari tabel menggunakan mode penyimpanan yang berbeda (impor, DirectQuery, atau ganda), atau beberapa sumber DirectQuery. Setiap sumber, termasuk cache Vertipaq data yang diimpor, dianggap sebagai grup sumber. Kemudian, hubungan model dapat diklasifikasikan sebagai intra grup sumber atau antar/lintas grup sumber. Hubungan intra grup sumber berkaitan dengan dua tabel dalam grup sumber, sementara hubungan antar/lintas grup sumber berkaitan dengan tabel di dua grup sumber. Perhatikan bahwa hubungan dalam model impor atau DirectQuery selalu merupakan grup sumber intra.

Berikut adalah contoh model komposit.

Diagram model komposit yang terdiri dari dua grup sumber.

Dalam contoh ini, model komposit terdiri dari dua grup sumber: grup sumber Vertipaq dan grup sumber DirectQuery. Grup sumber Vertipaq berisi tiga tabel, dan grup sumber DirectQuery berisi dua tabel. Satu hubungan grup sumber lintas ada untuk menghubungkan tabel di grup sumber Vertipaq ke tabel di grup sumber DirectQuery.

Hubungan reguler

Hubungan model bersifat teratur saat mesin kueri dapat menentukan sisi hubungan "satu". Ini memiliki konfirmasi bahwa kolom sisi "satu" berisi nilai unik. Semua hubungan grup sumber intra satu ke banyak adalah hubungan reguler.

Dalam contoh berikut, ada dua hubungan reguler, keduanya ditandai sebagai R. Hubungan mencakup hubungan satu ke banyak yang ada dalam grup sumber Vertipaq, dan hubungan satu ke banyak yang ada dalam sumber DirectQuery.

Diagram model komposit yang terdiri dari dua grup sumber dengan hubungan reguler yang ditandai.

Untuk model impor, saat semua data disimpan di cache Vertipaq, Power BI membuat struktur data untuk setiap hubungan reguler pada waktu refresh data. Struktur data terdiri dari pemetaan terindeks dari semua nilai kolom ke kolom, dan tujuannya adalah untuk mempercepat penggabungan tabel pada waktu kueri.

Pada waktu kueri, hubungan reguler memungkinkan perluasan tabel terjadi. Perluasan tabel menghasilkan pembuatan tabel virtual dengan menyertakan kolom native dari tabel dasar dan kemudian memperluas ke tabel terkait. Untuk tabel impor, perluasan tabel dilakukan di mesin kueri; untuk tabel DirectQuery, tabel tersebut dilakukan dalam kueri native yang dikirim ke database sumber (selama properti Mengasumsikan integritas referensial tidak diaktifkan). Mesin kueri kemudian bertindak berdasarkan tabel yang diperluas, menerapkan filter dan mengelompokkan berdasarkan nilai dalam kolom tabel yang diperluas.

Catatan

Hubungan tidak aktif juga diperluas, bahkan ketika hubungan tidak digunakan oleh perhitungan. Hubungan dua arah tidak berdampak pada ekspansi tabel.

Untuk hubungan satu ke banyak, perluasan tabel terjadi dari sisi "banyak" ke "satu" menggunakan semantik LEFT OUTER JOIN. Ketika nilai yang cocok dari sisi "banyak" ke sisi "satu" tidak ada, baris virtual kosong ditambahkan ke tabel sisi "satu". Perilaku ini hanya berlaku untuk hubungan reguler, bukan untuk hubungan terbatas.

Perluasan tabel juga terjadi untuk hubungan grup sumber intra satu ke satu, tetapi dengan menggunakan semantik FULL OUTER JOIN. Jenis gabungan ini memastikan bahwa baris virtual kosong ditambahkan di salah satu sisi, bila perlu.

Baris virtual kosong adalah anggota yang tidak dikenal secara efektif. Anggota yang tidak diketahui mewakili pelanggaran integritas referensial di mana nilai sisi "banyak" tidak memiliki nilai sisi "satu" yang sesuai. Idealnya, kosong ini seharusnya tidak ada. Mereka dapat dihilangkan dengan membersihkan atau memperbaiki data sumber.

Berikut adalah cara kerja ekspansi tabel dengan animasi contoh.

Diagram animasi ekspansi tabel.

Dalam contoh ini, model terdiri dari tiga tabel: Kategori, Produk, dan Penjualan. Tabel Kategori berkaitan dengan tabel Produk dengan hubungan Satu ke banyak, dan tabel Produk berkaitan dengan tabel Penjualan dengan hubungan Satu ke banyak. Tabel Kategori berisi dua baris, tabel Produk berisi tiga baris, dan tabel Penjualan berisi lima baris. Ada nilai yang cocok di kedua sisi dari semua hubungan yang berarti bahwa tidak ada pelanggaran integritas referensial. Tabel yang diperluas dengan waktu kueri ditampilkan. Tabel terdiri dari kolom dari ketiga tabel. Ini secara efektif merupakan perspektif denormalisasi dari data yang terkandung dalam ketiga tabel tersebut. Baris baru ditambahkan ke tabel Penjualan, dan memiliki nilai pengidentifikasi produksi (9) yang tidak memiliki nilai yang cocok di tabel Produk. Ini adalah pelanggaran integritas referensial. Dalam tabel yang diperluas, baris baru memiliki nilai (Kosong) untuk kolom tabel Kategori dan Produk.

Hubungan terbatas

Hubungan model bersifat terbatas jika tidak ada sisi "satu" yang dijamin. Hubungan terbatas dapat terjadi karena dua alasan:

  • Hubungan tersebut menggunakan jenis kardinalitas banyak ke banyak (bahkan jika satu atau kedua kolom berisi nilai unik).
  • Hubungannya adalah grup sumber lintas (yang hanya dapat terjadi pada model komposit).

Dalam contoh berikut, ada dua hubungan terbatas, keduanya ditandai sebagai L. Kedua hubungan tersebut mencakup hubungan banyak ke banyak yang ada dalam grup sumber Vertipaq, dan hubungan lintas grup sumber satu ke banyak.

Diagram model komposit yang terdiri dari dua tabel dengan hubungan terbatas yang ditandai.

Untuk model impor, struktur data tidak pernah dibuat untuk hubungan terbatas. Dalam kasus ini, Power BI menyelesaikan penggabungan tabel pada waktu kueri.

Perluasan tabel tidak pernah terjadi untuk hubungan terbatas. Gabungan tabel dicapai dengan menggunakan semantik INNER JOIN, dan karena alasan ini, baris virtual kosong tidak ditambahkan untuk mengimbangi pelanggaran integritas referensial.

Ada batasan lain yang terkait dengan hubungan terbatas:

  • Fungsi DAX RELATED tidak dapat digunakan untuk mengambil nilai kolom sisi "satu".
  • Memberlakukan RLS memiliki batasan topologi.

Tip

Dalam tampilan model Power BI Desktop, Anda bisa menginterpretasikan hubungan sebagai dibatasi. Hubungan terbatas diwakili dengan tanda seperti tanda kurung ( ) setelah indikator kardinalitas.

Cuplikan layar dua tabel dalam diagram model dengan hubungan terbatas disorot.

Mengatasi ambiguitas jalur hubungan

Hubungan dua arah dapat memperkenalkan beberapa, dan karenanya ambiguitas, jalur propagasi filter antara tabel model. Saat mengevaluasi ambiguitas, Power BI memilih jalur propagasi filter sesuai dengan prioritas dan beratnya.

Prioritas

Tingkat prioritas menentukan urutan aturan yang digunakan Power BI untuk mengatasi ambiguitas jalur hubungan. Kecocokan aturan pertama menentukan jalur yang akan diikuti Power BI. Setiap aturan di bawah ini menjelaskan bagaimana filter mengalir dari tabel sumber ke tabel target.

  1. Jalur yang terdiri dari hubungan satu-ke-banyak.
  2. Jalur yang terdiri dari hubungan satu-ke-banyak atau banyak-ke-banyak.
  3. Jalur yang terdiri dari hubungan banyak ke satu.
  4. Jalur yang terdiri dari hubungan satu-ke-banyak dari tabel sumber ke tabel perantara diikuti oleh hubungan banyak-ke-satu dari tabel perantara ke tabel target.
  5. Jalur yang terdiri dari hubungan satu-ke-banyak atau banyak-ke-banyak dari tabel sumber ke tabel perantara diikuti oleh hubungan banyak-ke-satu atau banyak-ke-banyak dari tabel perantara ke tabel target.
  6. Jalur lain.

Saat hubungan disertakan dalam semua jalur yang tersedia, hubungan dihapus dari pertimbangan dari semua jalur.

Beban

Setiap hubungan dalam jalur memiliki bobot. Secara default, setiap bobot hubungan sama kecuali fungsi USERELATIONSHIP digunakan. Bobot jalur adalah maksimum semua bobot hubungan di sepanjang jalur. Power BI menggunakan bobot jalur untuk mengatasi ambiguitas antara beberapa jalur dalam tingkat prioritas yang sama. Ini tidak akan memilih jalur dengan prioritas yang lebih rendah tetapi akan memilih jalur dengan bobot yang lebih tinggi. Jumlah hubungan dalam jalur tidak memengaruhi berat.

Anda dapat memengaruhi bobot hubungan dengan menggunakan fungsi USERELATIONSHIP . Bobot ditentukan oleh tingkat panggilan bersarang ke fungsi ini, di mana panggilan terdahulu menerima bobot tertinggi.

Pertimbangkan contoh berikut. Ukuran Penjualan Produk menetapkan bobot yang lebih tinggi terhadap hubungan antara Sales[ProductID] dan Product[ProductID], diikuti dengan hubungan antara Inventory[ProductID] dan Product[ProductID].

Product Sales = 
CALCULATE(
    CALCULATE(
        SUM(Sales[SalesAmount]), 
        USERELATIONSHIP(Sales[ProductID], Product[ProductID])
    ),
    USERELATIONSHIP(Inventory[ProductID], Product[ProductID])
)

Catatan

Jika Power BI mendeteksi beberapa jalur yang memiliki prioritas yang sama dan bobot yang sama, power BI akan mengembalikan kesalahan jalur ambigu. Dalam hal ini, Anda harus menyelesaikan ambiguitas dengan berpengaruh pada bobot hubungan dengan menggunakan fungsi USERELATIONSHIP , atau dengan menghapus atau memodifikasi hubungan model.

Preferensi performa

Daftar berikut mengurutkan performa propagasi filter, dari performa paling cepat hingga paling lambat:

  1. Hubungan grup intra sumber satu ke banyak
  2. Hubungan model banyak ke banyak dicapai dengan tabel perantara dan yang melibatkan setidaknya satu hubungan dua arah
  3. Hubungan kardinalitas banyak ke banyak
  4. Hubungan grup sumber lintas

Untuk informasi selengkapnya tentang artikel ini, lihat sumber daya berikut ini: