Share via


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 och inner, med leftouter 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 operatorn join .
  • Operatorn lookup sänder $right automatiskt tabellen till $left tabellen (fungerar i princip som om hint.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 whereLeftTable. 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 eller kind=leftouterfinns 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=innerfinns 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