Delen via


opzoekoperator

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

Breidt de kolommen van een feitentabel uit met waarden die zijn opgezoekd in een dimensietabel.

De volgende query resulteert bijvoorbeeld in een tabel die de FactTable ($left) uitbreidt met gegevens uit de DimensionTable ($right) door een zoekopdracht uit te voeren. De zoekactie komt overeen met elk paar (CommonColumn, Col1) uit FactTable met elk paar (CommonColumn, Col2) in de DimensionTable. Zie feiten- en dimensietabellenvoor de verschillen tussen feiten- en dimensietabellen.

FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2

De operator lookup voert een bewerking uit die vergelijkbaar is met de join-operator met de volgende verschillen:

  • Het resultaat herhaalt geen kolommen uit de $right tabel die de basis vormen voor de joinbewerking.
  • Er worden slechts twee soorten opzoekacties ondersteund, leftouter en inner, waarbij leftouter de standaardinstelling is.
  • Wat de prestaties betreft, gaat het systeem standaard ervan uit dat de $left tabel de grotere tabel (feiten) is en dat de $right tabel de kleinere tabel (dimensies) is. Dit is precies tegenovergestelde van de veronderstelling die wordt gebruikt door de operator join.
  • De operator lookup verzendt de $right tabel automatisch naar de $left tabel (gedraagt zich in feite alsof hint.broadcast is opgegeven). Hiermee wordt de grootte van de $right tabel beperkt.

Notitie

Als de rechterkant van de zoekopdracht groter is dan meerdere tientallen MB's, mislukt de query.

U kunt de volgende query uitvoeren om de grootte van de rechterkant in bytes te schatten:

rightSide
| summarize sum(estimate_data_size(*))

Syntaxis

LeftTable|lookup [kind= (leftouter|inner)] (RightTable)onAttributes

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
LeftTable- string ✔️ De tabel- of tabellaire expressie die de basis vormt voor de zoekactie. Aangeduid als $left.
RightTable- string ✔️ De tabel- of tabellaire expressie die wordt gebruikt om nieuwe kolommen in de feitentabel te vullen. Aangeduid als $right.
kenmerken string ✔️ Een door komma's gescheiden lijst met een of meer regels die beschrijven hoe rijen uit LeftTable- worden vergeleken met rijen uit RightTable-. Er worden meerdere regels geëvalueerd met behulp van de logische operator and. Zie Regels.
kind string Bepaalt hoe rijen in LeftTable- worden behandeld die geen overeenkomst hebben in RightTable-. Standaard wordt leftouter gebruikt, wat betekent dat al deze rijen worden weergegeven in de uitvoer met null-waarden die worden gebruikt voor de ontbrekende waarden van RightTable kolommen die door de operator worden toegevoegd. Als inner wordt gebruikt, worden dergelijke rijen weggelaten uit de uitvoer. Andere soorten joins worden niet ondersteund door de operator lookup.

Reglement

Type regel Syntaxis Predikaat
Gelijkheid op naam ColumnName- where LeftTable-.ColumnName==RightTable.ColumnName-
Gelijkheid op waarde $left. LeftColumn==$right.RightColumn- where $left. LeftColumn==$right.*RightColumn

Notitie

In het geval van 'gelijkheid op waarde', moeten de kolomnamen worden gekwalificeerd met de toepasselijke eigenaarstabel die wordt aangeduid met $left en $right notaties.

Retourneert

Een tabel met:

  • Een kolom voor elke kolom in elk van de twee tabellen, inclusief de overeenkomende sleutels. De namen van de kolommen aan de rechterkant worden automatisch gewijzigd als er naamconflicten zijn.
  • Een rij voor elke overeenkomst tussen de invoertabellen. Een overeenkomst is een rij die is geselecteerd uit een tabel met dezelfde waarde voor alle on velden als een rij in de andere tabel.
  • De Kenmerken (opzoeksleutels) worden slechts eenmaal weergegeven in de uitvoertabel.
  • Als kind niet is opgegeven of kind=leftouter, is er naast de binnenste overeenkomsten een rij voor elke rij aan de linkerkant (en/of rechts), zelfs als deze geen overeenkomst heeft. In dat geval bevatten de niet-overeenkomende uitvoercellen null-waarden.
  • Als kind=inner, staat er een rij in de uitvoer voor elke combinatie van overeenkomende rijen van links en rechts.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een left outer join uitvoert tussen de FactTable en DimTable, op basis van overeenkomende waarden in de kolommen Personal en 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

uitvoer

Roeien Persoonlijk Familie Alias
1 Lijsterbes Murphy rowanm
2 Ellis Draaier ellist
3 Ellis Draaier ellist
4 Maya Robinson mayar
5 Quinn Campbell quinnc