operator lookup
Berlaku untuk: ✅Microsoft Fabric✅
Memperluas kolom tabel fakta dengan nilai yang dicari dalam tabel dimensi.
Misalnya, kueri berikut menghasilkan tabel yang memperluas FactTable
($left
) dengan data dari DimensionTable
($right
) dengan melakukan pencarian. Pencarian cocok dengan setiap pasangan (CommonColumn
, Col1
) dari FactTable
dengan setiap pasangan (CommonColumn
, Col2
) di DimensionTable
. Untuk perbedaan antara tabel fakta dan dimensi, lihat tabel fakta dan dimensi.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
lookup
Operator tersebut menjalankan operasi yang mirip dengan operator join dengan perbedaan berikut:
- Hasilnya tidak mengulangi kolom dari
$right
tabel yang menjadi dasar untuk operasi gabungan. - Hanya dua jenis pencarian yang didukung,
leftouter
daninner
, denganleftouter
yang menjadi pencarian default-nya. - Dalam hal performa, sistem secara default mengasumsikan bahwa tabel
$left
adalah tabel (fakta) yang lebih besar, dan tabel$right
adalah tabel (dimensi) yang lebih kecil. Ini persis berlawanan dengan asumsi yang digunakan oleh operatorjoin
. - Operator
lookup
otomatis menyiarkan tabel$right
ke tabel$left
(pada dasarnya, tabel tersebut berperilaku seolah-olahhint.broadcast
ditentukan). Ini membatasi ukuran$right
tabel.
Catatan
Jika sisi kanan pencarian lebih besar dari beberapa puluh MB, kueri akan gagal.
Anda bisa menjalankan kueri berikut untuk memperkirakan ukuran sisi kanan dalam byte:
rightSide
| summarize sum(estimate_data_size(*))
Sintaks
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
Atribut)
on
RightTable
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
LeftTable | string |
✔️ | Tabel atau ekspresi tabular yang menjadi dasar pencarian. Dilambangkan sebagai $left . |
RightTable | string |
✔️ | Tabel atau ekspresi tabular yang digunakan untuk "mengisi" kolom baru dalam tabel fakta. Dilambangkan sebagai $right . |
Atribut | string |
✔️ | Daftar yang dibatasi koma dari satu atau beberapa aturan yang menjelaskan bagaimana baris dari LeftTable dicocokkan dengan baris dari RightTable. Beberapa aturan dievaluasi menggunakan operator logis and . Lihat Aturan. |
kind |
string |
Menentukan cara memperlakukan baris di LeftTable yang tidak cocok di RightTable. Secara default, inner digunakan, baris tersebut dihilangkan dari output. Jenis gabungan lainnya tidak didukung oleh lookup operator. |
Aturan
Jenis aturan | Sintaks | Predicate |
---|---|---|
Kesetaraan berdasarkan nama | ColumnName |
where
LeftTable.ColumnName== RightTable.ColumnName |
Kesetaraan berdasarkan nilai |
$left.
LeftColumn== $right. RightColumn |
where
$left.
LeftColumn== $right. *RightColumn |
Catatan
Dalam kasus 'kesetaraan berdasarkan nilai', nama kolom harus memenuhi tabel pemilik yang berlaku yang dilambangkan dengan notasi $left
dan $right
.
Mengembalikan
Tabel dengan:
- Kolom untuk setiap kolom di masing-masing dari dua tabel, termasuk kunci yang cocok. Kolom sisi kanan secara otomatis diganti namanya jika ada konflik nama.
- Baris untuk setiap pencocokan antar tabel input. Kecocokan adalah baris yang dipilih dari satu tabel yang memiliki nilai yang sama untuk semua bidang
on
sebagai baris di tabel lainnya. - Atribut (kunci pencarian) hanya muncul sekali dalam tabel output.
- Jika
kind
tidak ditentukan ataukind=leftouter
, maka selain kecocokan dalam, ada baris untuk setiap baris di sebelah kiri (dan/atau kanan), bahkan jika tidak memiliki kecocokan. Dalam hal ini, sel output yang tidak cocok berisi null. - Jika
kind=inner
, maka ada baris dalam output untuk setiap kombinasi baris yang cocok dari kiri dan kanan.
Contoh
Contoh berikut menunjukkan cara melakukan gabungan luar kiri antara FactTable
dan DimTable
, berdasarkan nilai yang cocok di kolom Personal
dan Family
.
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Rowan", "Murphy",
"2", "Ellis", "Turner",
"3", "Ellis", "Turner",
"4", "Maya", "Robinson",
"5", "Quinn", "Campbell"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Rowan", "Murphy", "rowanm",
"Ellis", "Turner", "ellist",
"Maya", "Robinson", "mayar",
"Quinn", "Campbell", "quinnc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Output
Baris | Pribadi | Family | Alias |
---|---|---|---|
1 | Rowan | Murphy | rowanm |
2 | Ellis | Turner | ellist |
3 | Ellis | Turner | ellist |
4 | Maya | Robinson | mayar |
5 | Quinn | Campbell | quinnc |