operator lookup

Memperluas kolom tabel fakta dengan nilai yang dicari dalam tabel dimensi.

FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2

Di sini, hasilnya adalah tabel yang memperluas FactTable ($left) dengan data dari DimensionTable (yang direferensikan oleh $right) dengan melakukan pencarian setiap pasangan (CommonColumn,Col) dari tabel sebelumnya dengan tiap-tiap pasangan (CommonColumn1,Col2) di tabel terakhir. Untuk perbedaan antara tabel fakta dan dimensi, lihat tabel fakta dan dimensi.

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)] (KondisiRightTable)on

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan 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 satu atau beberapa aturan yang dibatasi koma 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, leftouter digunakan, yang berarti semua baris tersebut akan muncul dalam output dengan nilai null yang digunakan untuk nilai yang hilang dari kolom RightTable yang ditambahkan oleh operator. Jika inner digunakan, baris tersebut dihilangkan dari output. Jenis gabungan lainnya tidak didukung oleh lookup operator.

Aturan

Jenis aturan Sintaks Predikat
Kesetaraan berdasarkan nama ColumnName whereLeftTable.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 akan otomatis diganti namanya secara jika ada konflik nama.
  • Baris untuk setiap pencocokan antar tabel input. Pencocokan adalah baris yang dipilih dari satu tabel yang memiliki nilai yang sama untuk semua bidang on sebagai baris di tabel lainnya.
  • Atribut (tombol pencarian) hanya akan 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), meskipun 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

let FactTable=datatable(Row:string,Personal:string,Family:string) [
  "1", "Bill",   "Gates",
  "2", "Bill",   "Clinton",
  "3", "Bill",   "Clinton",
  "4", "Steve",  "Ballmer",
  "5", "Tim",    "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
  "Bill",  "Gates",   "billg",
  "Bill",  "Clinton", "billc",
  "Steve", "Ballmer", "steveb",
  "Tim",   "Cook",    "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Baris Pribadi Keluarga Alias
1 Tagihan Gate billg
2 Tagihan Clinton billc
3 Tagihan Clinton billc
4 Steve Ballmer steveb
5 Tim Cook timc