Megosztás a következőn keresztül:


keresési operátor

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Kiterjeszti egy ténytábla oszlopait egy dimenziótáblában felnézett értékekkel.

Az alábbi lekérdezés például egy olyan táblát eredményez, amely egy keresés végrehajtásával kibővíti a FactTable ($left) a DimensionTable ($right) adataival. A keresés megfelel a CommonColumn egyes párainak (Col1, FactTable) a CommonColumnminden párjával (Col2, DimensionTable). A tény- és dimenziótáblák közötti különbségekért lásd tény- és dimenziótáblákat.

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

A lookup operátor az illesztési operátorhoz hasonló műveletet hajt végre, a következő különbségekkel:

  • Az eredmény nem ismétlődik az illesztési művelet alapjául szolgáló $right tábla oszlopaiból.
  • Csak kétféle keresés támogatott, leftouter és inner, az alapértelmezett leftouter.
  • A teljesítmény szempontjából a rendszer alapértelmezés szerint azt feltételezi, hogy a $left tábla a nagyobb (tények) tábla, a $right tábla pedig a kisebb (dimenziók) tábla. Ez pontosan ellentétes a join operátor által használt feltételezéssel.
  • A lookup operátor automatikusan a $right táblába szórja a $left táblát (lényegében úgy viselkedik, mintha hint.broadcast lett volna megadva). Ez korlátozza a $right tábla méretét.

Jegyzet

Ha a keresés jobb oldala több tíz MB-nál nagyobb, a lekérdezés sikertelen lesz.

Az alábbi lekérdezés futtatásával megbecsülheti a jobb oldal méretét bájtban:

rightSide
| summarize sum(estimate_data_size(*))

Szintaxis

LeftTable|lookup [kind= (leftouter|inner)] (RightTable)onAttribútumok

További információ szintaxiskonvenciákról.

Paraméterek

Név Típus Szükséges Leírás
LeftTable string ✔️ A keresés alapjául szolgáló táblázatos vagy táblázatos kifejezés. $leftjelölése.
RightTable string ✔️ A ténytábla új oszlopainak "feltöltésére" használt táblázat vagy táblázatos kifejezés. $rightjelölése.
attribútumok string ✔️ Egy vagy több szabály vesszővel tagolt listája, amely leírja, hogy a LeftTable sorai hogyan illeszkednek RightTablesoraihoz. Több szabály kiértékelése a and logikai operátor használatával történik. Lásd: Szabályok.
kind string Meghatározza, hogyan kezelhetők azok a sorok LeftTable, amelyek nem egyeznek RightTable. Alapértelmezés szerint leftouter van használatban, ami azt jelenti, hogy az összes sor null értékekkel jelenik meg a kimenetben az operátor által hozzáadott RightTable oszlopok hiányzó értékeihez. Ha inner használ, a rendszer kihagyja az ilyen sorokat a kimenetből. A lookup operátor más típusú illesztéseket nem támogat.

Szabályok

Szabály típusa Szintaxis Állítmány
Egyenlőség név szerint ColumnName where LeftTable.ColumnName==RightTable.ColumnName
Egyenlőség érték szerint $left. LeftColumn==$right.RightColumn where $left. LeftColumn==$right.*RightColumn

Jegyzet

Az "érték szerinti egyenlőség" esetén az oszlopneveket kell minősíteni a $left és $right jelöléssel ellátott megfelelő tulajdonostáblával.

Visszatér

Táblázat a következőkkel:

  • A két tábla minden oszlopának oszlopa, beleértve a megfelelő kulcsokat is. Ha névütközések vannak, a rendszer automatikusan átnevezi a jobb oldali oszlopokat.
  • Egy sor a bemeneti táblák közötti minden egyezéshez. Az egyezés egy olyan sor, amely egy táblából van kiválasztva, és az összes on mező értéke megegyezik a másik tábla sorával.
  • A attribútumok (keresési kulcsok) csak egyszer jelennek meg a kimeneti táblázatban.
  • Ha kind nincs meghatározva vagy kind=leftouter, akkor a belső egyezések mellett a bal oldalon (és/vagy jobbra) minden sorhoz tartozik egy sor, még akkor is, ha nincs egyezése. Ebben az esetben a nem egyező kimeneti cellák null értékeket tartalmaznak.
  • Ha kind=inner, akkor a kimenetben egy sor található a balról és a jobbról egyező sorok összes kombinációjához.

Példa

Az alábbi példa bemutatja, hogyan hajthat végre bal oldali külső illesztést a FactTable és a DimTableközött a Personal és Family oszlopban lévő egyező értékek alapján.

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

kimeneti

Sor Személyes Család Álnév
1 Madárberkenye Murphy rowanm
2 Ellis Turner ellist
3 Ellis Turner ellist
4 Maya Robinson mayar
5 Quinn Campbell quinnc