COMBINEVALUES
Berlaku untuk: kolom terhitungTabel terhitung
Ukur
Perhitungan visual
Menggabungkan dua string teks atau lebih ke dalam satu string teks. Tujuan utama fungsi ini adalah untuk mendukung hubungan multi-kolom dalam model DirectQuery. Lihat keterangan
Sintaksis
COMBINEVALUES(<delimiter>, <expression>, <expression>[, <expression>]…)
Parameter
Istilah | Definisi |
---|---|
delimiter |
Pemisah yang digunakan selama penggalian. Harus berupa nilai konstanta. |
expression |
Ekspresi DAX yang nilainya akan digabungkan ke dalam string teks tunggal. |
Mengembalikan nilai
String yang digabungkan.
Komentar
Fungsi COMBINEVALUES mengasumsikan, tetapi tidak memvalidasi, bahwa ketika nilai input berbeda, string output juga berbeda. Berdasarkan asumsi ini, ketika COMBINEVALUES digunakan untuk membuat kolom terhitung untuk membangun hubungan yang menggabungkan beberapa kolom dari dua tabel DirectQuery, kondisi gabungan yang dioptimalkan dihasilkan pada waktu kueri. Misalnya, jika pengguna ingin membuat hubungan antara Table1(Column1, Column2) dan Table2(Column1, Column2), mereka dapat membuat dua kolom terhitung, satu di setiap tabel, sebagai:
Table1[CalcColumn] = COMBINEVALUES(",", Table1[Column1], Table1[Column2])
dan
Table2[CalcColumn] = COMBINEVALUES(",", Table2[Column1], Table2[Column2])
Lalu buat hubungan antara
Table1[CalcColumn]
danTable2[CalcColumn]
. Tidak seperti fungsi dan operator DAX lainnya, yang diterjemahkan secara harfiah ke operator dan fungsi SQL yang sesuai, hubungan di atas menghasilkan predikat gabungan SQL sebagai:(Table1.Column1 = Table2.Column1 OR Table1.Column1 IS NULL AND Table2.Column1 IS NULL)
dan
(Table1.Column2 = Table2.Column2 OR Table1.Column2 IS NULL AND Table2.Column2 IS NULL)
Predikat gabungan berpotensi memberikan performa kueri yang jauh lebih baik daripada yang melibatkan operator dan fungsi SQL yang kompleks.
Fungsi COMBINEVALUES bergantung pada pengguna untuk memilih pemisah yang sesuai untuk memastikan bahwa kombinasi unik nilai input menghasilkan string output yang berbeda tetapi tidak memvalidasi bahwa asumsinya benar. Misalnya, jika pengguna memilih
"| "
sebagai pemisah, tetapi satu baris di Table1 memilikiTable1[Column1] = "| "
danTable2 [Column2] = " "
, sementara satu baris di Table2 memilikiTable2[Column1] = " "
danTable2[Column2] = "| "
, dua output yang digabungkan akan menjadi"|| "
yang sama , yang tampaknya menunjukkan bahwa dua baris tersebut cocok dalam operasi gabungan. Dua baris tidak digabungkan jika kedua tabel berasal dari sumber DirectQuery yang sama meskipun digabungkan bersama-sama jika kedua tabel diimpor.
Contoh
Kueri DAX berikut ini:
EVALUATE
DISTINCT (
SELECTCOLUMNS ( Date, "Month", COMBINEVALUES ( ", ", [MonthName], [CalendarYear] ) )
)
Mengembalikan tabel kolom tunggal berikut:
[Bulan] |
---|
Januari 2020 |
Februari 2020 |
Maret, 2020 |
April, 2020 |
Mei, 2020 |
Juni, 2020 |
Juli 2020 |
Agustus 2020 |
September, 2020 |
Oktober 2020 |
November 2020 |
Desember, 2020 |
Januari 2021 |
Januari 2021 |
Februari 2021 |
Maret, 2021 |
April, 2021 |
Mei, 2021 |
Juni 2021 |
Juli 2021 |
Agustus 2021 |
September, 2021 |
Oktober 2021 |
November 2021 |
Desember 2021 |