lookup-Operator
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Erweitert die Spalten einer Faktentabelle mit Werten, die in einer Dimensionstabelle nachschlagen.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Hier ist das Ergebnis eine Tabelle, die die FactTable
($left
) mit Daten aus DimensionTable
(referenziert von $right
) erweitert, indem eine Nachschlagevorgang der einzelnen Paare (,Col
) aus der früheren Tabelle mit jedem Paar (CommonColumn
CommonColumn1
,Col2
) in der letzten Tabelle ausgeführt wird.
Die Unterschiede zwischen Fakten- und Dimensionstabellen finden Sie in fakten- und dimensionstabellen.
Der lookup
Operator führt einen Vorgang aus, der dem Verknüpfungsoperator mit den folgenden Unterschieden ähnelt:
- Das Ergebnis wiederholt keine Spalten aus der
$right
Tabelle, die die Grundlage für den Verknüpfungsvorgang sind. - Es werden nur zwei Arten von Nachschlagevorgängen unterstützt,
leftouter
wobeiinner
es sich umleftouter
die Standardeinstellung handelt. - In Bezug auf die Leistung geht das System standardmäßig davon aus, dass die
$left
Tabelle die größere (Fakten)-Tabelle ist, und die$right
Tabelle ist die kleinere (Dimensionen) Tabelle. Dies ist das genaue Gegenteil zu der Annahme, die vomjoin
-Operator verwendet wird. - Der
lookup
Operator sendet die$right
Tabelle automatisch in die$left
Tabelle (im Wesentlichen verhält sich wie angegebenhint.broadcast
). Dadurch wird die Größe der$right
Tabelle begrenzt.
Hinweis
Wenn die rechte Seite des Nachschlagevorgangs größer als mehrere zehn MBs ist, schlägt die Abfrage fehl.
Sie können die folgende Abfrage ausführen, um die Größe der rechten Seite in Bytes zu schätzen:
rightSide
| summarize sum(estimate_data_size(*))
Syntax
LeftTable [kind
=
(leftouter
|inner
)] (
RightTable-Bedingungen |
lookup
)
on
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | BESCHREIBUNG |
---|---|---|---|
LeftTable | string |
✔️ | Der Tabellen- oder tabellarische Ausdruck, der die Grundlage für die Suche ist. Wird als $left bezeichnet. |
RightTable | string |
✔️ | Der Tabellen- oder tabellarische Ausdruck, der zum Auffüllen neuer Spalten in der Faktentabelle verwendet wird. Wird als $right bezeichnet. |
Attribute | string |
✔️ | Eine durch Trennzeichen getrennte Liste einer oder mehrerer Regeln, die beschreiben, wie Zeilen aus LeftTable mit Zeilen aus RightTable übereinstimmen. Mehrere Regeln werden mithilfe des logischen Operators and ausgewertet. Siehe Regeln. |
kind |
string |
Bestimmt, wie Zeilen in LeftTable behandelt werden, die in RightTable keine Übereinstimmung aufweisen. Standardmäßig wird verwendet, was bedeutet, leftouter dass alle diese Zeilen in der Ausgabe mit NULL-Werten angezeigt werden, die für die fehlenden Werte von RightTable-Spalten verwendet werden, die vom Operator hinzugefügt werden. Wenn inner diese Zeilen verwendet werden, werden diese Zeilen aus der Ausgabe weggelassen. Andere Verknüpfungsarten werden vom lookup Operator nicht unterstützt. |
Regeln
Regelart | Syntax | Predicate |
---|---|---|
Gleichheit nach Name | ColumnName | where LeftTable.ColumnName == RightTable.ColumnName |
Gleichheit nach Wert | $left. LeftColumn == $right. RightColumn |
where $left. LeftColumn == $right. *RightColumn |
Hinweis
Bei "Gleichheit nach Wert" müssen die Spaltennamen mit der jeweils gültigen Besitzertabelle qualifiziert werden, die von $left
und $right
Notationen angegeben ist.
Gibt zurück
Eine Tabelle mit:
- Eine Spalte für jede Spalte in jeder der beiden Tabellen, einschließlich der übereinstimmenden Schlüssel. Die Spalten der rechten Seite werden automatisch umbenannt, wenn Namenskonflikte auftreten.
- Einer Zeile für jede Übereinstimmung zwischen den Eingabetabellen. Eine Übereinstimmung ist eine ausgewählte Zeile in einer Tabelle, die in allen
on
-Feldern denselben Wert wie eine Zeile in der anderen Tabelle aufweist. - Die Attribute (Nachschlageschlüssel) werden nur einmal in der Ausgabetabelle angezeigt.
- Wenn
kind
nicht angegeben ist oderkind=leftouter
, gibt es zusätzlich zu den inneren Übereinstimmungen eine Zeile für jede Zeile auf der linken (und/oder rechten) Zeile, auch wenn sie keine Übereinstimmung hat. In diesem Fall enthalten die Ausgabezellen ohne Übereinstimmung NULL-Werte. - Wenn
kind=inner
, gibt es eine Zeile in der Ausgabe für jede Kombination von übereinstimmenden Zeilen von links und rechts.
Beispiele
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
Zeile | Persönlich | Familie | Alias |
---|---|---|---|
1 | Bill | Gates | billg |
2 | Bill | Clinton | billc |
3 | Bill | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Kochen | timc |