Bagikan melalui


Hubungan

Berlaku untuk: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Dalam model tabular, hubungan adalah koneksi antara dua tabel data. Hubungan menetapkan bagaimana data dalam dua tabel harus berkorelasi. Misalnya, tabel Pelanggan dan tabel Pesanan dapat dikaitkan untuk menampilkan nama pelanggan yang terkait dengan setiap pesanan.

Saat mengimpor dari sumber data yang sama, hubungan yang sudah ada dalam tabel (di sumber data) yang Anda pilih untuk diimpor akan dibuat ulang dalam model. Anda dapat melihat hubungan yang terdeteksi dan dibuat ulang secara otomatis dengan menggunakan perancang model di Tampilan Diagram atau dengan menggunakan kotak dialog Kelola Hubungan. Anda juga bisa membuat hubungan baru antar tabel secara manual dengan menggunakan perancang model dalam Tampilan Diagram atau dengan menggunakan kotak dialog Buat Hubungan atau Kelola Hubungan.

Setelah hubungan antar tabel ditentukan, baik secara otomatis selama impor atau dibuat secara manual, Anda akan dapat memfilter data dengan menggunakan kolom terkait dan mencari nilai dalam tabel terkait.

Tip

Jika model Anda berisi banyak hubungan, Tampilan Diagram dapat membantu Anda memvisualisasikan dan membuat hubungan baru antar tabel dengan lebih baik.

Keuntungan

Hubungan adalah koneksi antara dua tabel data, berdasarkan satu atau beberapa kolom di setiap tabel. Untuk melihat mengapa hubungan berguna, bayangkan Anda melacak data untuk pesanan pelanggan dalam bisnis Anda. Anda dapat melacak semua data dalam satu tabel yang memiliki struktur seperti berikut ini:

ID Pelanggan Nama Email DiskonRate OrderID OrderDate Produk Kuantitas
1 Ashton chris.ashton@contoso.com .05 256 2010-01-07 Compact Digital 11
1 Ashton chris.ashton@contoso.com .05 255 2010-01-03 Kamera SLR 15
2 Jaworski michal.jaworski@contoso.com .10 254 2010-01-03 Movie-Maker Anggaran 27

Pendekatan ini dapat berfungsi, tetapi melibatkan penyimpanan banyak data yang berlebihan, seperti alamat email pelanggan untuk setiap pesanan. Penyimpanan murah, tetapi Anda harus memastikan Anda memperbarui setiap baris untuk pelanggan tersebut jika alamat email berubah. Salah satu solusi untuk masalah ini adalah membagi data menjadi beberapa tabel dan menentukan hubungan antara tabel tersebut. Ini adalah pendekatan yang digunakan dalam database relasional seperti SQL Server. Misalnya, database yang Anda impor ke dalam model mungkin mewakili data pesanan dengan menggunakan tiga tabel terkait:

Pelanggan

[Id Pelanggan] Nama Email
1 Ashton chris.ashton@contoso.com
2 Jaworski michal.jaworski@contoso.com

CustomerDiscounts

[Id Pelanggan] DiskonRate
1 .05
2 .10

Pesanan

[Id Pelanggan] OrderID OrderDate Produk Kuantitas
1 256 2010-01-07 Compact Digital 11
1 255 2010-01-03 Kamera SLR 15
2 254 2010-01-03 Movie-Maker Anggaran 27

Jika Anda mengimpor tabel ini dari database yang sama, Impor dapat mendeteksi hubungan antara tabel berdasarkan kolom yang ada di [tanda kurung], dan dapat mereproduksi hubungan ini di perancang model. Untuk informasi selengkapnya, lihat bagian Deteksi Otomatis dan Inferensi Hubungan di artikel ini. Jika Anda mengimpor tabel dari beberapa sumber, Anda bisa membuat hubungan secara manual seperti yang dijelaskan dalam Membuat Hubungan Antara Dua Tabel.

Kolom dan kunci

Hubungan didasarkan pada kolom di setiap tabel yang berisi data yang sama. Misalnya, tabel Pelanggan dan Pesanan dapat terkait satu sama lain karena keduanya berisi kolom yang menyimpan ID pelanggan. Dalam contoh, nama kolom sama, tetapi ini bukan persyaratan. Seseorang bisa menjadi CustomerID dan CustomerNumber lainnya, selama semua baris dalam tabel Pesanan berisi ID yang juga disimpan dalam tabel Pelanggan.

Dalam database relasional, ada beberapa jenis kunci, yang biasanya hanya kolom dengan properti khusus. Empat jenis kunci berikut ini dapat digunakan dalam database relasional:

  • Kunci primer: secara unik mengidentifikasi baris dalam tabel, seperti CustomerID dalam tabel Pelanggan.

  • Kunci alternatif (atau kunci kandidat): kolom selain kunci primer yang unik. Misalnya, tabel Karyawan mungkin menyimpan ID karyawan dan nomor jaminan sosial, yang keduanya unik.

  • Kunci asing: kolom yang merujuk ke kolom unik dalam tabel lain, seperti CustomerID dalam tabel Pesanan, yang mengacu pada CustomerID dalam tabel Pelanggan.

  • Kunci komposit: kunci yang terdiri dari lebih dari satu kolom. Kunci komposit tidak didukung dalam model tabular. Untuk informasi selengkapnya, lihat bagian Kunci Komposit dan Kolom Pencarian di artikel ini.

Dalam model tabular, kunci primer atau kunci alternatif disebut sebagai kolom pencarian terkait, atau hanya kolom pencarian. Jika tabel memiliki kunci utama dan alternatif, Anda bisa menggunakan sebagai kolom pencarian. Kunci asing disebut sebagai kolom sumber atau kolom saja. Dalam contoh kami, hubungan akan ditentukan antara CustomerID dalam tabel Pesanan (kolom) dan CustomerID (kolom pencarian) dalam tabel Pelanggan. Jika Anda mengimpor data dari database relasional, secara default perancang model memilih kunci asing dari satu tabel dan kunci primer yang sesuai dari tabel lain. Namun, Anda dapat menggunakan kolom apa pun yang memiliki nilai unik untuk kolom pencarian.

Jenis hubungan

Hubungan antara Pelanggan dan Pesanan adalah hubungan satu-ke-banyak. Setiap pelanggan dapat memiliki beberapa pesanan, tetapi pesanan tidak dapat memiliki beberapa pelanggan. Jenis hubungan lainnya adalah satu-ke-satu dan banyak-ke-banyak. Tabel CustomerDiscounts, yang menentukan satu tarif diskon untuk setiap pelanggan, berada dalam hubungan satu-ke-satu dengan tabel Pelanggan. Contoh hubungan banyak ke banyak adalah hubungan langsung antara Produk dan Pelanggan, di mana pelanggan dapat membeli banyak produk dan produk yang sama dapat dibeli oleh banyak pelanggan. Perancang model tidak mendukung hubungan banyak ke banyak di antarmuka pengguna. Untuk informasi selengkapnya, lihat bagian Hubungan Banyak ke Banyak di artikel ini.

Tabel berikut ini memperlihatkan hubungan antara tiga tabel:

Hubungan Jenis Kolom Pencarian Kolom
Customers-CustomerDiscounts satu-ke-satu Customers.CustomerID CustomerDiscounts.CustomerID
Customers-Orders satu-ke-banyak Customers.CustomerID Orders.CustomerID

Hubungan dan performa

Setelah hubungan apa pun dibuat, perancang model biasanya harus menghitung ulang rumus apa pun yang menggunakan kolom dari tabel dalam hubungan yang baru dibuat. Pemrosesan dapat memakan waktu tergantung pada jumlah data dan kompleksitas hubungan.

Persyaratan untuk hubungan

Perancang model memiliki beberapa persyaratan yang harus diikuti saat membuat hubungan:

Hubungan Aktif Tunggal antar tabel

Beberapa hubungan dapat mengakibatkan dependensi ambigu antar tabel. Untuk membuat perhitungan yang akurat, Anda memerlukan satu jalur dari satu tabel ke tabel berikutnya. Oleh karena itu, hanya ada satu hubungan aktif antara setiap pasangan tabel. Misalnya, di AdventureWorks DW 2012, tabel, DimDate, berisi kolom, DateKey, yang terkait dengan tiga kolom berbeda dalam tabel, FactInternetSales: OrderDate, DueDate, dan ShipDate. Jika Anda mencoba mengimpor tabel ini, hubungan pertama berhasil dibuat, tetapi Anda akan menerima kesalahan berikut pada hubungan berturut-turut yang melibatkan kolom yang sama:

* Hubungan: tabel[kolom 1]-> tabel[kolom 2] - Status: kesalahan - Alasan: Hubungan tidak dapat dibuat antara tabel tabel <1> dan <tabel 2>. Hanya satu hubungan langsung atau tidak langsung yang dapat ada di antara dua tabel.

Jika Anda memiliki dua tabel dan beberapa hubungan di antaranya, maka Anda harus mengimpor beberapa salinan tabel yang berisi kolom pencarian, dan membuat satu hubungan antara setiap pasangan tabel.

Mungkin ada banyak hubungan yang tidak aktif antar tabel. Jalur yang akan digunakan di antara tabel ditentukan oleh klien pelaporan pada waktu kueri.

Satu hubungan untuk setiap kolom sumber

Kolom sumber tidak dapat berpartisipasi dalam beberapa hubungan. Jika Anda sudah menggunakan kolom sebagai kolom sumber dalam satu hubungan, tetapi ingin menggunakan kolom tersebut untuk menyambungkan ke kolom pencarian terkait lainnya dalam tabel lain, Anda bisa membuat salinan kolom, dan menggunakan kolom tersebut untuk hubungan baru.

Sangat mudah untuk membuat salinan kolom yang memiliki nilai yang sama persis, dengan menggunakan rumus DAX dalam kolom terhitung. Untuk informasi selengkapnya, lihat Membuat Kolom Terhitung.

Pengidentifikasi unik untuk setiap tabel

Setiap tabel harus memiliki satu kolom yang secara unik mengidentifikasi setiap baris dalam tabel tersebut. Kolom ini sering disebut sebagai kunci utama.

Kolom pencarian unik

Nilai data di kolom pencarian harus unik. Dengan kata lain, kolom tidak boleh berisi duplikat. Dalam model Tabular, null dan string kosong setara dengan kosong, yang merupakan nilai data yang berbeda. Ini berarti Anda tidak dapat memiliki beberapa null di kolom pencarian.

Jenis data yang kompatibel

Jenis data di kolom sumber dan kolom pencarian harus kompatibel. Untuk informasi selengkapnya tentang jenis data, lihat Tipe Data yang Didukung.

Kunci komposit dan kolom pencarian

Anda tidak dapat menggunakan kunci komposit dalam model tabular; Anda harus selalu memiliki satu kolom yang secara unik mengidentifikasi setiap baris dalam tabel. Jika Anda mencoba mengimpor tabel yang memiliki hubungan yang sudah ada berdasarkan kunci komposit, Impor akan mengabaikan hubungan tersebut karena tidak dapat dibuat dalam model tabular.

Jika Anda ingin membuat hubungan antara dua tabel di perancang model, dan ada beberapa kolom yang menentukan kunci utama dan asing, Anda harus menggabungkan nilai untuk membuat kolom kunci tunggal sebelum membuat hubungan. Anda dapat melakukan ini sebelum mengimpor data, atau Anda bisa melakukan ini di perancang model dengan membuat kolom terhitung.

Hubungan banyak ke banyak

Model tabular pada tingkat kompatibilitas 1500 dan lebih tinggi yang disebarkan ke Azure Analysis Services, SQL Server 2019 dan yang lebih baru, dan Power BI Premium mendukung hubungan banyak ke banyak.

Hubungan banyak ke banyak adalah hubungan antara tabel di mana kedua kolom tidak unik. Hubungan dapat ditentukan antara dimensi dan tabel fakta pada granularitas yang lebih tinggi dari kolom kunci dimensi. Ini menghindari harus menormalkan tabel dimensi dan dapat meningkatkan pengalaman pengguna karena model yang dihasilkan memiliki jumlah tabel yang lebih kecil dengan kolom yang dikelompokkan secara logis.

Buat hubungan banyak ke banyak dengan menggunakan Visual Studio 2019 dengan proyek Analysis Services, API Model Objek Tabular (TOM), Tabular Model Scripting Language (TMSL), dan alat Editor Tabular sumber terbuka.

Model tabular pada tingkat kompatibilitas 1400 dan yang lebih rendah tidak mendukung hubungan banyak ke banyak, dan Anda tidak dapat menambahkan tabel persimpangan di perancang model. Namun, Anda dapat menggunakan fungsi DAX untuk memodelkan hubungan banyak ke banyak. Anda juga dapat mencoba menyiapkan filter silang dua arah untuk melihat apakah filter tersebut mencapai tujuan yang sama. Terkadang persyaratan hubungan banyak ke banyak dapat dipenuhi melalui filter silang yang mempertahankan konteks filter di beberapa hubungan tabel. Lihat Filter silang dua arah dalam model tabular untuk detailnya.

Gabungan dan perulangan mandiri

Gabungan mandiri tidak diizinkan dalam tabel model tabular. Gabungan mandiri adalah hubungan rekursif antara tabel dan dirinya sendiri. Gabungan mandiri sering digunakan untuk menentukan hierarki induk-anak. Misalnya, Anda dapat bergabung dengan tabel Karyawan ke dirinya sendiri untuk menghasilkan hierarki yang menunjukkan rantai manajemen di bisnis.

Perancang model tidak mengizinkan perulangan dibuat di antara hubungan dalam model. Dengan kata lain, set hubungan berikut dilarang.

Tabel 1, kolom a ke Tabel 2, kolom f

Tabel 2, kolom f ke Tabel 3, kolom n

Tabel 3, kolom n ke Tabel 1, kolom a

Jika Anda mencoba membuat hubungan yang akan mengakibatkan perulangan dibuat, kesalahan akan dihasilkan.

Inferensi hubungan

Dalam beberapa kasus, hubungan antar tabel secara otomatis ditautkan. Misalnya, jika Anda membuat hubungan antara dua set tabel pertama di bawah ini, hubungan disimpulkan ada di antara dua tabel lainnya, dan hubungan secara otomatis dibuat.

Produk dan Kategori -- dibuat secara manual

Kategori dan SubKategori -- dibuat secara manual

Produk dan SubKatgori -- hubungan disimpulkan

Agar hubungan dapat dirangkai secara otomatis, hubungan harus berjalan satu arah, seperti yang ditunjukkan di atas. Jika hubungan awal antara, misalnya, Penjualan dan Produk, dan Penjualan dan Pelanggan, hubungan tidak disimpulkan. Ini karena hubungan antara Produk dan Pelanggan adalah hubungan banyak ke banyak.

Deteksi hubungan saat mengimpor data

Saat Anda mengimpor dari tabel sumber data relasional, hubungan yang ada terdeteksi di antara tabel berdasarkan data skema sumber. Jika tabel terkait diimpor, hubungan tersebut akan direplikasi dalam model.

Membuat hubungan secara manual

Meskipun sebagian besar hubungan antara tabel dalam satu sumber data relasional akan terdeteksi secara otomatis, dan dibuat dalam model tabular, ada juga banyak instans di mana Anda harus membuat hubungan secara manual antar tabel model.

Jika model Anda berisi data dari beberapa sumber, Anda mungkin harus membuat hubungan secara manual. Misalnya, Anda dapat mengimpor tabel Pelanggan, CustomerDiscounts, dan Pesanan dari sumber data relasional. Hubungan yang ada di antara tabel tersebut di sumber secara otomatis dibuat dalam model. Anda kemudian dapat menambahkan tabel lain dari sumber lain, misalnya, Anda mengimpor data wilayah dari tabel Geografi dalam buku kerja Microsoft Excel. Anda kemudian dapat membuat hubungan secara manual antara kolom dalam tabel Pelanggan dan kolom dalam tabel Geografi.

Untuk membuat hubungan secara manual dalam model tabular, Anda bisa menggunakan perancang model di Tampilan Diagram atau dengan menggunakan kotak dialog Kelola Hubungan. Tampilan diagram menampilkan tabel, dengan hubungan di antaranya, dalam format grafis. Anda bisa mengklik kolom dalam satu tabel dan menyeret kursor ke tabel lain untuk membuat hubungan dengan mudah, dalam urutan yang benar, di antara tabel. Kotak dialog Kelola Hubungan menampilkan hubungan antar tabel dalam format tabel sederhana. Untuk mempelajari cara membuat hubungan secara manual, lihat Membuat Hubungan Antara Dua Tabel.

Nilai duplikat dan kesalahan lainnya

Jika Anda memilih kolom yang tidak dapat digunakan dalam hubungan, X merah muncul di samping kolom. Anda dapat menjeda kursor di atas ikon kesalahan untuk melihat pesan yang menyediakan informasi selengkapnya tentang masalah tersebut. Masalah yang dapat membuat tidak mungkin untuk membuat hubungan antara kolom yang dipilih meliputi yang berikut ini:

Masalah atau pesan Resolusi
Hubungan tidak dapat dibuat karena kedua kolom yang dipilih berisi nilai duplikat. Untuk membuat hubungan yang valid, setidaknya satu kolom pasangan yang Anda pilih hanya boleh berisi nilai unik.

Anda bisa mengedit kolom untuk menghapus duplikat, atau Anda bisa membalikkan urutan kolom sehingga kolom yang berisi nilai unik digunakan sebagai Kolom Pencarian Terkait.
Kolom berisi nilai null atau kosong. Kolom data tidak dapat digabungkan satu sama lain pada nilai null. Untuk setiap baris, harus ada nilai di kedua kolom yang digunakan dalam hubungan.

Lihat juga

Artikel Deskripsi
Membuat Hubungan Antara Dua Tabel Menjelaskan cara membuat hubungan secara manual antara dua tabel.
Hapus Hubungan Menjelaskan cara menghapus hubungan dan konfensi menghapus hubungan.
Filter silang dua arah Menjelaskan pemfilteran silang dua arah untuk tabel terkait. Konteks filter dari satu hubungan tabel dapat digunakan saat mengkueri di seluruh hubungan tabel kedua jika tabel terkait dan filter silang dua arah ditentukan.