Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
$righttabel die de basis vormen voor de joinbewerking. - Er worden slechts twee soorten opzoekacties ondersteund,
leftoutereninner, waarbijleftouterde standaardinstelling is. - Wat de prestaties betreft, gaat het systeem standaard ervan uit dat de
$lefttabel de grotere tabel (feiten) is en dat de$righttabel de kleinere tabel (dimensies) is. Dit is precies tegenovergestelde van de veronderstelling die wordt gebruikt door de operatorjoin. - De operator
lookupverzendt de$righttabel automatisch naar de$lefttabel (gedraagt zich in feite alsofhint.broadcastis opgegeven). Hiermee wordt de grootte van de$righttabel 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
onvelden als een rij in de andere tabel. - De Kenmerken (opzoeksleutels) worden slechts eenmaal weergegeven in de uitvoertabel.
- Als
kindniet 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.
Voorbeeld
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 |