keresési operátor
A következőkre vonatkozik: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 CommonColumn
minden 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
ésinner
, az alapértelmezettleftouter
. - 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 ajoin
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, minthahint.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)
on
Attribú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.
$left jelö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.
$right jelö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 vagykind=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 DimTable
kö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 |