opzoekoperator
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
eninner
, waarbijleftouter
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 operatorjoin
. - De operator
lookup
verzendt de$right
tabel automatisch naar de$left
tabel (gedraagt zich in feite alsofhint.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)
on
Attributes
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 ofkind=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 |