lookup-operatorn
Utökar kolumnerna i en faktatabell med värden som har letats upp i en dimensionstabell.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Här är resultatet en tabell som utökar FactTable
($left
) med data från DimensionTable
(refereras av $right
) genom att utföra en sökning av varje par (CommonColumn
,Col
) från den tidigare tabellen med varje par (CommonColumn1
,Col2
) i den senare tabellen.
Skillnaderna mellan fakta- och dimensionstabeller finns i fakta- och dimensionstabeller.
Operatorn lookup
utför en åtgärd som liknar kopplingsoperatorn med följande skillnader:
- Resultatet upprepar inte kolumner från tabellen
$right
som utgör grunden för kopplingsåtgärden. - Endast två typer av uppslag stöds,
leftouter
ochinner
, medleftouter
som standard. - När det gäller prestanda förutsätter systemet som standard att
$left
tabellen är den större tabellen (fakta) och$right
att tabellen är den mindre tabellen (dimensioner). Detta är exakt motsatt till det antagande som används av operatornjoin
. - Operatorn
lookup
sänder$right
automatiskt tabellen till$left
tabellen (fungerar i princip som omhint.broadcast
den angavs). Detta begränsar tabellens$right
storlek.
Anteckning
Om sökningens högra sida är större än flera tiotals MB misslyckas frågan.
Du kan köra följande fråga för att beräkna storleken på den högra sidan i byte:
rightSide
| summarize sum(estimate_data_size(*))
Syntax
LeftTable|
lookup
[kind
=
(leftouter
|inner
)] (
RightTable-villkor)
on
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
LeftTable | string |
✔️ | Det tabell- eller tabelluttryck som utgör grunden för sökningen. Betecknas som $left . |
RightTable | string |
✔️ | Tabellen eller tabelluttrycket som används för att "fylla i" nya kolumner i faktatabellen. Betecknas som $right . |
Attribut | string |
✔️ | En kommaavgränsad lista över en eller flera regler som beskriver hur rader från LeftTable matchas med rader från RightTable. Flera regler utvärderas med hjälp av den and logiska operatorn. Se Regler. |
kind |
string |
Avgör hur rader ska behandlas i LeftTable som inte har någon matchning i RightTable. Som standard leftouter används, vilket innebär att alla dessa rader visas i utdata med null-värden som används för saknade värden för RightTable-kolumner som lagts till av operatorn. Om inner används utelämnas sådana rader från utdata. Andra typer av kopplingar stöds inte av operatorn lookup . |
Regler
Regeltyp | Syntax | Predikat |
---|---|---|
Likhet efter namn | Columnname | where LeftTable. Columnname== RightTable. Columnname |
Likhet efter värde | $left. LeftColumn== $right. RightColumn |
where $left. LeftColumn== $right. *RightColumn |
Anteckning
Vid likhet efter värde måste kolumnnamnen kvalificeras med den tillämpliga ägartabellen som anges av $left
och $right
noteringar.
Returer
En tabell med:
- En kolumn för varje kolumn i var och en av de två tabellerna, inklusive matchande nycklar. Kolumnerna på höger sida byts automatiskt namn om det finns namnkonflikter.
- En rad för varje matchning mellan indatatabellerna. En matchning är en rad som valts från en tabell som har samma värde för alla
on
fält som en rad i den andra tabellen. - Attributen (uppslagsnycklar) visas bara en gång i utdatatabellen.
- Om
kind
är ospecificerat ellerkind=leftouter
finns det förutom de inre matchningarna en rad för varje rad till vänster (och/eller höger), även om den inte har någon matchning. I så fall innehåller de omatchade utdatacellerna null. - Om
kind=inner
finns det en rad i utdata för varje kombination av matchande rader från vänster och höger.
Exempel
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
Rad | Personligt | Familj | Alias |
---|---|---|---|
1 | Fakturera | Gates | billg |
2 | Fakturera | Clinton | billc |
3 | Fakturera | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Laga | timc |
Relaterat innehåll
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för