Panduan hubungan dua arah

Artikel ini menargetkan Anda sebagai pemodel data yang bekerja dengan Power BI Desktop. Ini memberi Anda panduan tentang kapan harus membuat hubungan model dua arah. Hubungan dua arah adalah hubungan yang memfilter kedua arah.

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.

Umumnya, sebaiknya minimalkan penggunaan hubungan dua arah. Mereka dapat berdampak negatif pada performa kueri model, dan mungkin memberikan pengalaman yang membingungkan bagi pengguna laporan Anda.

Ada tiga skenario ketika pemfilteran dua arah dapat menyelesaikan persyaratan tertentu:

Hubungan model khusus

Hubungan dua arah memainkan peran penting saat membuat dua jenis hubungan model khusus berikut:

  • Satu-ke-satu: Semua hubungan satu-ke-satu harus dua arah—tidak dimungkinkan untuk mengonfigurasi sebaliknya. Umumnya, kami tidak menyarankan untuk membuat jenis hubungan ini. Untuk diskusi lengkap dan desain alternatif, lihat Panduan hubungan satu-ke-satu.
  • Banyak ke banyak: Saat berkaitan dengan dua tabel jenis dimensi, tabel bridging diperlukan. Filter dua arah diperlukan untuk memastikan filter menyebar di seluruh tabel bridging. Untuk informasi selengkapnya, lihat Panduan hubungan banyak-ke-banyak (Menghubungkan dimensi banyak-ke-banyak).

Item pemotong "dengan data"

Hubungan dua arah dapat mengirimkan pemotong yang membatasi item ke tempat data ada. (Jika Anda terbiasa dengan PivotTable dan pemotong Excel, itu adalah perilaku default saat mencari data dari model semantik Power BI (sebelumnya dikenal sebagai himpunan data), atau model Analysis Services.) Untuk membantu menjelaskan apa artinya, pertama-tama pertimbangkan diagram model berikut.

Diagram showing a model containing three tables. The design is described in the following paragraph.

Tabel pertama diberi nama Pelanggan, dan berisi tiga kolom: Negara Bagian, Pelanggan, dan Kode Pelanggan. Tabel pertama diberi nama Produk, dan berisi tiga kolom: Warna, Produk, dan SKU. Tabel ketiga diberi nama Penjualan, dan berisi empat kolom: Kode Pelanggan, Tanggal Pesanan, Jumlah Pesanan, dan SKU. Tabel Pelanggan dan Produk adalah tabel jenis dimensi, dan masing-masing memiliki hubungan satu-ke-banyak dengan tabel Penjualan. Setiap hubungan memfilter dalam satu arah.

Untuk membantu menjelaskan cara kerja pemfilteran dua arah, diagram model telah dimodifikasi untuk mengungkapkan baris tabel. Semua contoh dalam artikel ini didasarkan pada data ini.

Catatan

Tidak dimungkinkan untuk menampilkan baris tabel dalam diagram model Power BI Desktop. Telah dijelaskan dalam artikel ini untuk mendukung diskusi dengan contoh yang jelas.

Diagram showing that the model now reveals the table rows. The row details are described in the following paragraph.

Detail baris untuk dua tabel tersebut dijelaskan dalam daftar berikut ini:

  • Tabel Pelanggan memiliki dua baris:
    • Kode Pelanggan CUST-01, Pelanggan Pelanggan-1, Negara Bagian Amerika Serikat
    • Kode Pelanggan CUST-02, Pelanggan Pelanggan-2, Negara Bagian Australia
  • Tabel Produk memiliki tiga baris:
    • SKU CL-01, ProdukKaos, Warna Hijau
    • SKU CL-02, Produk Jeans, Warna Biru
    • SKU AC-01, ProdukTopi, Warna Biru
  • Tabel Penjualan memiliki tiga baris:
    • Tanggal Pemesanan 1 Januari 2019, CustomerCode CUST-01, SKU CL-01, Jumlah Pesanan 10
    • Tanggal Pemesanan 2 Januari 2019, Kode Pelanggan CUST-01, SKU CL-02, Jumlah Pesanan 20
    • Tanggal Pemesanan 3 Maret 2019, Kode Pelanggan CUST-02, SKU CL-01, Jumlah Pesanan 30

Sekarang pertimbangkan halaman laporan berikut.

Diagram showing the report page containing three visuals. The details are described in the following paragraph.

Halaman ini terdiri dari dua pemotong dan visual kartu. Pemotong pertama adalah untuk Negara Bagian dan memiliki dua item: Australia dan Amerika Serikat. Saat ini diiris oleh Australia. Pemotong kedua adalah untuk Produk, dan memiliki tiga item: Hat, Jeans, dan Kaos. Tidak ada item yang dipilih (artinya tidak ada produk yang difilter). Visual kartu menampilkan jumlah 30.

Saat melaporkan pengguna yang diiris oleh Australia, Anda mungkin ingin membatasi Pemotong produk untuk menampilkan item di mana data terkait dengan penjualan Australia. Inilah yang dimaksud dengan menampilkan item pemotong "dengan data". Anda dapat mencapai perilaku ini dengan mengonfigurasi hubungan antara tabel Produk dan Penjualan untuk memfilter pada kedua arah.

Diagram showing a model that the relationship between the Product and Sales table is now bi-directional.

Pemotong Produk sekarang mencantumkan satu item: Kaos. Item ini mewakili satu-satunya produk yang dijual kepada pelanggan Australia.

Diagram showing the report page containing three visuals with Product called out. The details are described in the following paragraph.

Pertama, kami sarankan Anda mempertimbangkan dengan cermat apakah desain ini berfungsi untuk pengguna laporan Anda. Beberapa pengguna laporan menemukan pengalaman ini membingungkan. Mereka tidak memahami mengapa pemotong item muncul atau menghilang secara dinamis saat berinteraksi dengan pemotong lain.

Jika Anda memutuskan untuk menampilkan item pemotong "dengan data", kami tidak menyarankan Anda mengonfigurasi hubungan dua arah. Hubungan dua arah memerlukan lebih banyak pemrosesan sehingga dapat berdampak negatif pada performa kueri—terutama seiring meningkatnya jumlah hubungan dua arah dalam model Anda.

Ada cara yang lebih baik untuk mencapai hasil yang sama: Alih-alih menggunakan filter dua arah, Anda dapat menerapkan filter tingkat visual ke Pemotong produk itu sendiri.

Sekarang mari kita pertimbangkan bahwa hubungan antara tabel Produk dan Penjualan tidak lagi memfilter di kedua arah. Dan, definisi pengukuran berikut telah ditambahkan ke tabel Penjualan.

Total Quantity = SUM(Sales[Quantity])

Untuk menampilkan item Pemotong produk "dengan data", item tersebut hanya perlu difilter dengan ukuran Jumlah Total menggunakan kondisi "tidak kosong".

Diagram showing that the Filters pane for the Product slicer now filters by

Analisis dimensi ke dimensi

Skenario berbeda yang melibatkan hubungan dua arah memperlakukan tabel jenis fakta seperti tabel bridging. Dengan cara ini, ia mendukung analisis data tabel jenis dimensi dalam konteks filter tabel jenis dimensi yang berbeda.

Dengan menggunakan model contoh dalam artikel ini, pertimbangkan bagaimana pertanyaan berikut dapat dijawab:

  • Berapa banyak warna yang dijual kepada pelanggan Australia?
  • Berapa banyak negara/wilayah yang membeli celana jeans?

Kedua pertanyaan dapat dijawab tanpa meringkas data dalam tabel bridging jenis fakta. Namun, mereka mengharuskan filter disebarluaskan dari satu tabel jenis dimensi ke tabel lainnya. Setelah filter menyebar melalui tabel jenis fakta, ringkasan kolom tabel jenis dimensi dapat dicapai menggunakan fungsi DISTINCTCOUNT DAX—dan mungkin fungsi DAX MIN dan MAX.

Saat tabel jenis fakta bertingkah seperti tabel bridging, Anda dapat mengikuti panduan hubungan banyak ke banyak untuk menghubungkan dua tabel jenis dimensi. Ini akan memerlukan konfigurasi setidaknya satu hubungan untuk memfilter di kedua arah. Untuk informasi selengkapnya, lihat Panduan hubungan banyak-ke-banyak (Menghubungkan dimensi banyak-ke-banyak).

Namun, seperti yang sudah dijelaskan dalam artikel ini, kemungkinan desain ini akan menghasilkan dampak negatif pada performa, dan konsekuensi pengalaman pengguna terkait dengan item pemotong "dengan data". Jadi, kami sarankan Anda mengaktifkan pemfilteran dua arah dalam definisi pengukuran dengan menggunakan fungsi DAX CROSSFILTER sebagai gantinya. Fungsi CROSSFILTER dapat digunakan untuk memodifikasi arah filter—atau bahkan menonaktifkan hubungan—selama evaluasi ekspresi.

Pertimbangkan definisi pengukuran berikut telah ditambahkan ke tabel Penjualan. Dalam contoh ini, hubungan model antara tabel Pelanggan dan Penjualan telah dikonfigurasi untuk memfilter dalam satu arah.

Different Countries Sold =
CALCULATE(
    DISTINCTCOUNT(Customer[Country-Region]),
    CROSSFILTER(
        Customer[CustomerCode],
        Sales[CustomerCode],
        BOTH
    )
)

Selama evaluasi ekspresi pengukuran Berbeda Negara Terjual, hubungan antara tabel Pelanggan dan Penjualan memfilter di kedua arah.

Tabel berikut ini menampilkan statistik untuk setiap produk yang terjual. Kolom Jumlah hanyalah total nilai kuantitas. Kolom Negara Yang Dijual Berbeda mewakili jumlah nilai negara bagian yang berbeda dari semua pelanggan yang telah membeli produk.

Diagram showing that two products are listed in a table visual. In the

Untuk informasi selengkapnya tentang dokumen resmi ini, lihat sumber daya berikut: