uppslagsoperator
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Utökar kolumnerna i en faktatabell med värden som letats upp i en dimensionstabell.
Följande fråga resulterar till exempel i en tabell som utökar FactTable
($left
) med data från DimensionTable
($right
) genom att utföra en sökning. Sökningen matchar varje par (CommonColumn
, Col1
) från FactTable
med varje par (CommonColumn
, Col2
) i DimensionTable
. Skillnaderna mellan fakta- och dimensionstabeller finns i fakta- och dimensionstabeller.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Operatorn lookup
utför en åtgärd som liknar kopplingsoperatorn med följande skillnader:
- Resultatet upprepar inte kolumner från den
$right
tabell som utgör grunden för kopplingsåtgärden. - Endast två typer av uppslag stöds,
leftouter
ochinner
, därleftouter
är standard. - När det gäller prestanda förutsätter systemet som standard att tabellen
$left
är den större tabellen (fakta) och att tabellen$right
är den mindre tabellen (dimensioner). Detta är precis motsatsen till det antagande som används avjoin
-operatorn. - Operatorn
lookup
sänder automatiskt$right
-tabellen till den$left
tabellen (fungerar i princip som omhint.broadcast
angavs). Detta begränsar storleken på den$right
tabellen.
Not
Om den högra sidan av sökningen är större än flera tiotals MBs 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)
on
Attributes
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
LeftTable | string |
✔️ | Det tabell- eller tabelluttryck som ligger till grund för sökningen. Anges som $left . |
RightTable | string |
✔️ | Tabell- eller tabelluttrycket som används för att "fylla i" nya kolumner i faktatabellen. Anges 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 i LeftTable som inte har någon matchning i RightTable. Som standard används leftouter , 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 lookup -operatorn. |
Reglemente
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 |
Not
Om det gäller likhet efter värde måste kolumnnamnen kvalificeras med den tillämpliga ägartabellen som anges av $left
och $right
noteringar.
Returnerar
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. - Attribut (uppslagsnycklar) visas bara en gång i utdatatabellen.
- Om
kind
är ospecificerad 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 nullvärden. - Om
kind=inner
finns det en rad i utdata för varje kombination av matchande rader från vänster och höger.
Exempel
I följande exempel visas hur du utför en vänster yttre koppling mellan FactTable
och DimTable
, baserat på matchande värden i kolumnerna Personal
och Family
.
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
utdata
Rad | Personlig | Familj | Alias |
---|---|---|---|
1 | Rönn | Murphy | rowanm |
2 | Ellis | Stekspade | ellist |
3 | Ellis | Stekspade | ellist |
4 | Maya | Robinson | mayar |
5 | Quinn | Campbell | quinnc |