Bagikan melalui


Hubungan model di Power BI Desktop

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

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

Tujuan hubungan

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

Jalur hubungan bersifat deterministik, yang berarti bahwa filter selalu disebarluaskan dengan cara yang sama dan tanpa variasi acak. Namun, hubungan dapat dinonaktifkan, atau konteks filter dapat dimodifikasi oleh 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 bagaimana hubungan model berprilaku ketika ada masalah integritas data dengan data Anda.

Berikut adalah cara hubungan menyebarluaskan 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).

Kueri, yang mungkin dihasilkan oleh visual kartu Power BI, meminta kuantitas penjualan total untuk pesanan penjualan yang dilakukan untuk satu kategori, Cat-A, dan untuk satu tahun, CY2018. Itulah sebabnya Anda dapat melihat filter yang diterapkan pada tabel Kategori dan Tahun . Filter pada tabel Kategori disebarkan ke tabel Produk untuk mengisolasi dua produk yang ditetapkan ke kategori Cat-A. Kemudian filter Tabel produk disebarkan ke tabel Penjualan untuk mengisolasi hanya dua baris penjualan untuk produk ini. Kedua baris penjualan ini mewakili penjualan produk yang ditetapkan ke kategori Cat-A. Jumlah gabungan mereka adalah 14 unit. Pada saat yang sama, filter tabel Tahun menyebar untuk memfilter tabel Penjualan lebih lanjut, menghasilkan hanya satu baris penjualan yang untuk produk yang ditetapkan ke kategori Cat-A dan yang dipesan pada tahun CY2018. Nilai kuantitas yang dikembalikan oleh kueri adalah 11 unit. Perhatikan bahwa ketika beberapa filter diterapkan ke tabel (seperti tabel Penjualan dalam contoh ini), itu selalu merupakan operasi AND, mengharuskan semua kondisi harus benar.

Menerapkan prinsip desain skema bintang

Sebaiknya terapkan prinsip desain skema bintang untuk menghasilkan model yang terdiri dari tabel dimensi dan fakta. Umumnya, Power BI disiapkan untuk menerapkan aturan pengelolaan yang memfilter tabel dimensi, memungkinkan hubungan antar model untuk menyebarluaskan filter tersebut secara efisien ke tabel fakta.

Gambar berikut adalah diagram model model data analisis penjualan Adventure Works. Ini menunjukkan desain skema bintang yang terdiri dari satu tabel fakta bernama Sales. Empat tabel lainnya adalah tabel dimensi yang mendukung analisis pengukuran penjualan berdasarkan tanggal, status, wilayah, dan produk. Perhatikan hubungan model yang menghubungkan semua tabel. Hubungan ini menyebarluaskan 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 tidak terhubung

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

Parameter 'what-if' Power BI Desktop adalah fitur yang membuat tabel tidak terhubung. 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 di mana persyaratan ini tidak benar, dan hanya berlaku untuk hubungan multi-kolom dalam model DirectQuery. Untuk informasi selengkapnya, lihat artikel fungsi COMBINEVALUES DAX.)

Nota

Tidak dimungkinkan untuk menghubungkan kolom ke kolom yang berbeda dalam tabel yang sama. Konsep ini terkadang dikacaukan dengan kemampuan untuk menentukan batasan kunci asing database relasional yang merujuk sendiri tabel. Anda dapat menggunakan konsep database relasional ini untuk menyimpan hubungan induk-anak (misalnya, setiap catatan karyawan terkait dengan karyawan yang "melapor kepada"). Namun, Anda tidak dapat menggunakan hubungan model untuk menghasilkan 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 berfungsi 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 muncul 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.

Nota

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, ia menggunakan statistik penyimpanan internal; untuk model DirectQuery, ia mengirim kueri pembuatan profil ke sumber data. Namun, terkadang Power BI Desktop bisa salah. Power BI Desktop dapat menghasilkan kesalahan ketika tabel belum dimuat dengan data, atau karena kolom yang Anda harapkan berisi nilai yang duplikat saat ini berisi nilai yang 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 juga merupakan jenis kardinalitas yang paling umum.

Saat mengonfigurasi hubungan satu-ke-banyak atau banyak-ke-satu, Anda akan memilih hubungan yang sesuai dengan urutan keterkaitan kolom. 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 menghubungkan tabel ke arah terbalik, dari Penjualan ke Produk, maka 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 dengan tingkat kedetailan 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 untuk hubungan banyak-ke-banyak.

Nota

Jenis kardinalitas Banyak-ke-banyak didukung untuk model yang dikembangkan untuk Power BI Report Server Januari 2024 dan seterusnya.

Petunjuk / Saran

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 penyaringan silang

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

Jenis kardinalitas Opsi penyaringan silang
Satu-ke-banyak (atau Banyak-ke-satu) Tunggal
Keduanya
Satu-ke-satu Keduanya
Banyak-ke-banyak Tunggal (Table1 ke Table2)
Tunggal (Table2 ke Table1)
Keduanya

Arah filter silang tunggal berarti "arah tunggal", dan Keduanya berarti "dua 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 dapat juga dari sisi "banyak" (dua arah). Untuk hubungan satu ke satu, arah filter silang selalu dari kedua tabel. Terakhir, untuk relasi banyak-ke-banyak, arah filter silang bisa berasal 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.

Petunjuk / Saran

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 kepala panah filter silang disorot.

Membuat hubungan ini aktif

Hanya boleh ada satu jalur propagasi filter yang aktif antara dua tabel model. Namun, dimungkinkan 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 peran. Anda dapat mempertimbangkan desain ini ketika:

  • Tidak ada persyaratan bagi visual laporan untuk difilter 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.

Petunjuk / Saran

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

Asumsikan 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 ketika batasan kunci asing database ada di antara dua tabel. Bahkan jika batasan kunci asing tidak ada, pertimbangkan untuk mengizinkan properti ini selama Anda yakin bahwa integritas data ada.

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 dalam 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 diremehkan.

Untuk informasi selengkapnya, lihat Pengaturan Anggapan tentang 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" dalam sebuah hubungan. Ini berguna saat melibatkan perhitungan dari tabel berbeda yang dievaluasi dalam konteks baris.
  • RELATEDTABLE: Mengambil tabel baris dari sisi "banyak" dari sebuah 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 bermain peran, dan Anda memilih untuk membuat hubungan 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 penyebaran filter (tidak ada). Ini berguna ketika 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. Sangat membantu dalam skenario lanjutan saat Anda ingin membuat hubungan virtual selama evaluasi perhitungan tertentu.
  • Fungsi Induk dan Anak: Keluarga fungsi terkait yang dapat Anda gunakan untuk menghasilkan kolom terhitung untuk menaturalisasi hierarki induk-anak. 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.

Model impor atau DirectQuery sumber semua datanya 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 dari data yang diimpor, dianggap sebagai grup sumber. Hubungan model kemudian dapat diklasifikasikan sebagai grup sumber intra atau grup antar/lintas sumber. Hubungan grup sumber intra berkaitan dengan dua tabel dalam grup sumber, sementara hubungan grup antar sumber/silang 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. Ada satu hubungan grup lintas sumber untuk menghubungkan tabel di grup sumber Vertipaq ke tabel di grup sumber DirectQuery.

Hubungan reguler

Hubungan model teratur ketika mesin kueri dapat menentukan sisi hubungan "satu". Dikonfirmasi bahwa kolom sisi 'satu' berisi nilai unik. Semua hubungan antar grup sumber satu-ke-banyak adalah hubungan reguler.

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

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

Untuk model impor, di mana 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 terjadinya perluasan tabel. 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 asli yang dikirim ke database sumber (selama properti Asumsikan integritas referensial tidak diaktifkan). Mesin kueri kemudian bertindak berdasarkan tabel yang diperluas, menerapkan filter dan mengelompokkan berdasarkan nilai dalam kolom tabel yang diperluas.

Nota

Hubungan yang tidak aktif juga diperluas, meskipun hubungan tersebut tidak digunakan oleh perhitungan. Relasi 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 kedua sisi, bila perlu.

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

Berikut cara kerja ekspansi tabel dengan contoh animasi.

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 semua hubungan yang berarti bahwa tidak ada pelanggaran integritas referensial. Tabel yang diperluas saat 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 terbatas ketika 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).
  • Hubungan ini adalah lintas grup sumber (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 terkandung dalam grup sumber Vertipaq, dan hubungan grup sumber silang 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.

Ekspansi tabel tidak pernah terjadi untuk hubungan yang terbatas. Gabungan tabel dicapai dengan menggunakan INNER JOIN semantik, 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 pada sisi "satu".
  • Penerapan RLS memiliki pembatasan topologi.

Petunjuk / Saran

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 jalur propagasi filter yang ambigu 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 lainnya.

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

Berat

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 yang ada dalam jalur tidak memengaruhi berat.

Anda dapat memengaruhi bobot hubungan dengan menggunakan fungsi USERELATIONSHIP . Bobot ditentukan oleh tingkat sarang dari panggilan ke fungsi ini, di mana panggilan terdalam 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])
)

Nota

Jika Power BI mendeteksi beberapa jalur yang memiliki prioritas yang sama dan bobot yang sama, Power BI akan menghasilkan error 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 kinerja

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

  1. Hubungan satu-ke-banyak dalam grup sumber
  2. Model hubungan banyak-ke-banyak dicapai melalui tabel perantara serta melibatkan minimal satu hubungan dua arah.
  3. Hubungan kardinalitas banyak ke banyak
  4. Hubungan antar grup sumber silang

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