lookup operátor
Kiterjeszti egy ténytábla oszlopait egy dimenziótáblában felnézett értékekkel.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Az eredmény egy tábla, amely kiterjeszti a () táblát a FactTable
($left
) táblából származó DimensionTable
adatokkal (hivatkozással $right
) úgy, hogy az előző táblából az egyes párokat (CommonColumn
,Col
) az utóbbi táblában lévő párokkal (CommonColumn1
,Col2
) megkeresi.
A tény- és dimenziótáblák közötti különbségekért lásd: tény- és dimenziótáblák.
Az lookup
operátor az illesztési operátorhoz hasonló műveletet hajt végre az alábbi különbségekkel:
- Az eredmény nem ismétlődik a táblából az
$right
illesztési művelet alapjául szolgáló oszlopokkal. - Csak kétféle keresés támogatott,
leftouter
ésinner
leftouter
az alapértelmezett. - 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áblázat, a$right
tábla pedig a kisebb (dimenziók) táblázat. Ez pontosan ellentétes az operátor által használt feltételezésseljoin
. - Az
lookup
operátor automatikusan szórja a$right
táblát a$left
táblába (lényegében úgy viselkedik, minthahint.broadcast
meg lett volna adva). Ez korlátozza a tábla méretét$right
.
Megjegyzés
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(*))
Syntax
Bal oldali tábla|
lookup
[kind
=
(leftouter
|inner
)] (
RightTable)
on
feltételek
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
Bal oldali tábla | string |
✔️ | A keresés alapjául szolgáló táblázat vagy táblázatos kifejezés. A jelölése: $left . |
RightTable | string |
✔️ | A ténytábla új oszlopainak "feltöltéséhez" használt táblázat vagy táblázatos kifejezés. A jelölése: $right . |
Attribútumok | string |
✔️ | Egy vagy több szabály vesszővel tagolt listája, amely leírja, hogy a LeftTable sorai hogyan lesznek egyeztetve a RightTable soraival. 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 a LeftTable-ban , amelyeknek nincs egyezésük a RightTable-ban. Alapértelmezés szerint ez azt jelenti, leftouter hogy az összes sor megjelenik a kimenetben az operátor által hozzáadott RightTable oszlopok hiányzó értékeihez használt null értékekkel. Ha inner ezt használja, az ilyen sorok ki lesznek hagyva a kimenetből. Az operátor más típusú illesztéseket nem támogat lookup . |
Szabályok
Szabály típusa | Syntax | Predikátum |
---|---|---|
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 |
Megjegyzés
Az "érték szerinti egyenlőség" esetén az oszlopneveket a megfelelő tulajdonosi táblával $left
$right
kell minősíteni, és jelölésekkel kell jelölni.
Válaszok
Táblázat a következőkkel:
- Egy oszlop a két tábla minden oszlopához, beleértve az egyező kulcsokat is. Ha névütközések történnek, a jobb oldali oszlopok automatikusan átneveződnek.
- Egy sor a bemeneti táblák közötti minden egyezéshez. Az egyezés egy olyan sor, amely az egyik táblából van kiválasztva, és az összes
on
mező értéke megegyezik a másik tábla sorával. - Az Attribútumok (keresési kulcsok) csak egyszer jelennek meg a kimeneti táblában.
- Ha
kind
nincs meghatározva vagykind=leftouter
, akkor a belső egyezések mellett minden sornak van egy sora a bal oldalon (és/vagy jobbra), 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éldák
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
Sor | Személyes | Family (Család) | Alias |
---|---|---|---|
1 | Számla | Gates | billg |
2 | Számla | Clinton | billc |
3 | Számla | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Főzni | timc |
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: