Panduan hubungan satu ke satu
Artikel ini menargetkan Anda sebagai pemodel data yang bekerja dengan Power BI Desktop. Artikel ini memberi Anda panduan tentang bekerja dengan hubungan model satu-ke-satu. Hubungan satu-ke-satu dapat dibuat saat kedua tabel masing-masing berisi kolom nilai umum dan unik.
Catatan
Pengantar relasi model tidak tercakup dalam artikel ini. Jika Anda tidak sepenuhnya terbiasa dengan hubungan, propertinya, atau cara mengonfigurasinya, kami sarankan Anda terlebih dahulu membaca artikel Relasi model di Power BI Desktop.
Penting juga jika Anda memiliki pemahaman tentang desain skema bintang. Untuk informasi selengkapnya, lihat Memahami skema bintang dan pentingnya Power BI.
Ada dua skenario yang melibatkan hubungan satu-ke-satu:
: Anda dapat memperoleh dimensiDegenerasi dimensi degenerasi dari tabel fakta . Data baris mencakup seluruh tabel: Satu entitas bisnis atau subjek dimuat sebagai dua tabel model (atau lebih), mungkin karena datanya bersumber dari penyimpanan data yang berbeda. Skenario ini dapat umum untuk tabel dimensi . Misalnya, detail produk master disimpan dalam sistem penjualan operasional, dan detail produk tambahan disimpan di sumber yang berbeda.
Namun, tidak umum untuk menghubungkan dua tabel fakta dengan hubungan satu-ke-satu. Itu karena kedua tabel fakta harus memiliki dimensi dan granularitas yang sama. Selain itu, setiap tabel fakta akan memerlukan kolom unik untuk memungkinkan hubungan model dibuat.
Dimensi degenerasi
Saat kolom dari tabel fakta digunakan untuk pemfilteran atau pengelompokan, Anda dapat mempertimbangkan untuk membuatnya tersedia dalam tabel terpisah. Dengan cara ini, Anda memisahkan kolom yang digunakan untuk memfilter atau mengelompokkan dari kolom tersebut yang digunakan untuk meringkas baris fakta. Pemisahan ini dapat:
- Kurangi ruang penyimpanan.
- Menyederhanakan perhitungan model.
- Membantu meningkatkan performa kueri.
- Memberikan pengalaman panel Data yang lebih intuitif kepada penulis laporan Anda.
Pertimbangkan tabel sumber bernama Sales
yang menyimpan detail referensi baris pesanan penjualan dalam dua kolom.
Kolom OrderNumber
menyimpan nomor pesanan, dan kolom OrderLineNumber
menyimpan rentetan baris dalam pesanan.
Dalam gambar berikut, perhatikan bahwa kolom nomor pesanan dan nomor baris pesanan belum dimuat ke tabel Sales
. Sebagai gantinya, nilainya digunakan untuk membuat kolom kunci pengganti
diagram
Tabel dimensi Sales Order
memberikan pengalaman yang kaya untuk penulis laporan dengan dua kolom: Sales Order
dan Sales Order Line
. Kolom tertentu ini mendukung desain laporan yang perlu memfilter, mengelompokkan, atau menelusuri paling detail pesanan dan baris pesanan.
Karena tabel Sales Order
berasal dari data penjualan, harus ada jumlah baris yang sama persis di setiap tabel. Selanjutnya, harus ada nilai yang cocok di setiap kolom OrderLineNumberID
.
Data baris mencakup seluruh tabel
Pertimbangkan contoh yang melibatkan dua tabel dimensi terkait satu-ke-satu: Product
dan Product Category
. Setiap tabel mewakili data yang diimpor dan memiliki kolom SKU
(unit penyimpanan stok) yang berisi nilai unik.
Berikut adalah diagram model parsial dari dua tabel.
Tabel pertama diberi nama Product
, dan berisi tiga kolom: Color
, Product
, dan SKU
. Tabel kedua diberi nama Product Category
, dan berisi dua kolom: Category
dan SKU
. Hubungan satu-ke-satu menghubungkan kedua kolom SKU
. Hubungan memfilter di kedua arah, yang selalu terjadi untuk hubungan satu-ke-satu.
Untuk membantu menjelaskan cara kerja penyebaran filter hubungan, gambar berikut mengungkapkan beberapa baris tabel. Semua contoh dalam artikel ini didasarkan pada data ini.
Detail baris untuk dua tabel tersebut dijelaskan dalam daftar berikut ini:
- Tabel
Product
memiliki tiga baris:-
SKU
CL-01,Product
T-shirt,Color
Hijau -
SKU
CL-02,Product
Jeans,Color
Blue -
SKU
AC-01,Product
Hat,Color
Blue
-
- Tabel
Product Category
memiliki dua baris:-
SKU
CL-01, PakaianCategory
-
SKU
AC-01, AksesoriCategory
-
Perhatikan bahwa tabel Product Category
tidak menyertakan baris untuk produk SKU CL-02. Kita akan membahas konsekuensi dari baris yang hilang ini nanti di artikel ini.
Di panel Data SKU
bersumber dari tabel Product
.
Perhatikan bahwa nilai Category
untuk SKU produk CL-02 adalah BLANK. Itu karena tidak ada baris yang sesuai dalam tabel Product Category
untuk produk ini.
Rekomendasi
Jika memungkinkan, sebaiknya hindari membuat hubungan model satu-ke-satu saat data baris mencakup seluruh tabel model. Itu karena desain ini dapat:
- Berkontribusi pada kekacauan panel Data , mencantumkan lebih banyak tabel daripada yang diperlukan.
- Menyulitkan penulis laporan untuk menemukan bidang terkait, karena didistribusikan di beberapa tabel.
- Batasi kemampuan untuk membuat hierarki, karena tingkatnya harus didasarkan pada kolom dari tabel yang sama.
- Menghasilkan hasil yang tidak terduga ketika tidak ada kecocokan baris yang lengkap di antara tabel.
Rekomendasi spesifik berbeda tergantung pada apakah hubungan satu-ke-satu adalah grup sumber intra atau grup lintas sumber. Untuk informasi selengkapnya tentang evaluasi hubungan, lihat hubungan Model di Power BI Desktop.
Hubungan satu-ke-satu grup sumber intra
Saat hubungan grup sumber intra satu-ke-satu ada di antara tabel, kami sarankan untuk mengonsolidasikan data ke dalam satu tabel model. Anda bisa melakukannya dengan menggabungkan kueri Power Query.
Langkah-langkah berikut menyajikan metodologi untuk mengonsolidasikan dan memodelkan data terkait satu ke satu.
Gabungkan kueri: Saat menggabungkan dua kueri, berikan pertimbangan untuk kelengkapan data di setiap kueri. Jika satu kueri berisi sekumpulan baris lengkap (seperti daftar master), gabungkan kueri lain dengannya. Atur transformasi penggabungan untuk menggunakan gabungan luar kiri , yang merupakan jenis gabungan default. Jenis gabungan ini memastikan Anda akan menyimpan semua baris kueri pertama, dan melengkapinya dengan baris yang cocok dari kueri kedua. Perluas semua kolom kueri kedua yang diperlukan ke dalam kueri pertama.
Nonaktifkan beban kueri: Pastikan untuk menonaktifkan beban kueri kedua. Dengan cara ini, beban kueri tersebut tidak akan memuat hasilnya sebagai tabel model. Konfigurasi ini mengurangi ukuran penyimpanan model data, dan membantu menghapus kekacauan panel Data .
Dalam contoh kami, penulis laporan sekarang menemukan satu tabel bernama
di panel Data . Tabel ini berisi semua bidang terkait produk. Ganti nilai yang hilang: Jika kueri kedua memiliki baris yang tidak cocok, nilai null muncul di kolom yang diperkenalkan darinya. Jika sesuai, pertimbangkan untuk mengganti nilai null dengan nilai token. Mengganti nilai yang hilang sangat penting ketika penulis laporan memfilter atau mengelompokkan menurut nilai kolom, karena BLANK dapat muncul dalam visual laporan.
Dalam gambar berikut, perhatikan bahwa kategori untuk SKU produk CL-02 sekarang tertera [Tidak Ditentukan]. Dalam kueri, kategori null diganti dengan nilai teks token ini.
Membuat hierarki: Jika ada hubungan antara kolom tabel yang sekarang dikonsolidasikan, pertimbangkan untuk membuat hierarki. Dengan cara ini, penulis laporan akan dengan cepat mengidentifikasi peluang untuk latihan visual laporan.
Dalam contoh kami, penulis laporan sekarang dapat menggunakan hierarki yang memiliki dua tingkat:
Category
danProduct
.
Jika Anda menyukai bagaimana tabel terpisah membantu menata bidang Anda, kami masih menyarankan untuk mengonsolidasikan ke dalam satu tabel. Anda masih bisa menata bidang Anda, tetapi dengan menggunakan folder tampilan sebagai gantinya.
Dalam contoh kami, penulis laporan dapat menemukan bidang Category
dalam folder tampilan Marketing
.
Jika Anda masih memutuskan untuk menentukan hubungan grup sumber intra satu-ke-satu dalam model Anda, jika memungkinkan, pastikan ada baris yang cocok dalam tabel terkait. Sebagai hubungan grup sumber intra satu-ke-satu dievaluasi sebagai hubungan reguler, masalah integritas data dapat muncul dalam visual laporan Anda sebagai BLANK. (Anda bisa melihat contoh pengelompokan BLANK dalam visual tabel pertama yang disajikan dalam artikel ini.)
Hubungan satu-ke-satu grup sumber silang
Saat terdapat hubungan satu-ke-satu antara grup sumber persilangan di antara tabel, tidak ada desain model yang dapat digunakan sebagai alternatif—kecuali Anda telah mengonsolidasikan data tersebut di sumber data Anda sebelumnya. Power BI akan mengevaluasi hubungan model satu-ke-satu sebagai hubungan terbatas. Oleh karena itu, berhati-hatilah untuk memastikan ada baris yang cocok dalam tabel terkait, karena baris yang tidak cocok dihilangkan dari hasil kueri.
Mari kita lihat apa yang terjadi ketika bidang dari kedua tabel ditambahkan ke visual tabel, dan hubungan terbatas ada di antara tabel.
Visual tabel pertama, yang menggunakan hubungan grup lintas sumber, hanya menampilkan dua baris. SKU produk CL-02 hilang karena tidak ada baris yang cocok dalam tabel Product Category
. Visual tabel kedua, berdasarkan satu tabel terkonsolidasi dalam model, menampilkan tiga baris.
Konten terkait
Untuk informasi selengkapnya tentang dokumen resmi ini, lihat sumber daya berikut: