Dela via


uppslagsoperator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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 och inner, där leftouter ä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 av join-operatorn.
  • Operatorn lookup sänder automatiskt $right-tabellen till den $left tabellen (fungerar i princip som om hint.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)onAttributes

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 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 nullvärden.
  • Om kind=innerfinns 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