Bagikan melalui


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

lookupOperator 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 dan inner, dengan leftouter yang menjadi pencarian default-nya.
  • Dalam hal performa, sistem secara default mengasumsikan bahwa tabel $left adalah tabel (fakta) yang lebih besar, dan tabel $rightadalah tabel (dimensi) yang lebih kecil. Ini persis berlawanan dengan asumsi yang digunakan oleh operator join.
  • Operator lookup otomatis menyiarkan tabel $right ke tabel $left (pada dasarnya, tabel tersebut berperilaku seolah-olah hint.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)onRightTable

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, digunakan, yang berarti semua baris tersebut muncul dalam output dengan nilai null yang digunakan untuk nilai kolom RightTable yang hilang yang ditambahkan oleh operator. Jika 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 atau kind=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
  • gabungan siaran
  • gabungan leftouter
  • gabungan dalam
  • operator gabungan