Freigeben über


lookup-Operator

Gilt für: ✅Microsoft Fabric

Erweitert die Spalten einer Faktentabelle mit Werten, die in einer Dimensionstabelle nachschlagen.

Die folgende Abfrage führt z. B. zu einer Tabelle, die die FactTable ($left) mit Daten aus dem DimensionTable ($right) erweitert, indem sie einen Nachschlagevorgang ausführen. Die Suche entspricht jedem Paar (CommonColumn, Col1) aus FactTable mit jedem Paar (CommonColumn, Col2) im DimensionTable. Die Unterschiede zwischen Fakten- und Dimensionstabellen finden Sie in fakten- und dimensionstabellen.

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

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 wobei inneres sich um leftouter 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 vom join-Operator verwendet wird.
  • Der lookup Operator sendet die $right Tabelle automatisch in die $left Tabelle (im Wesentlichen verhält sich wie angegeben hint.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|lookup [kind= (leftouter|inner)] (RightTable-)onAttribute

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 leftouter verwendet, was bedeutet, 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 wurden. 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 $right

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 (Nachschlagetasten) werden nur einmal in der Ausgabetabelle angezeigt.
  • Wenn kind nicht angegeben ist oder kind=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

Das folgende Beispiel zeigt, wie Sie eine linke äußere Verknüpfung zwischen dem FactTable und DimTableausführen, basierend auf übereinstimmenden Werten in den Spalten Personal und 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

Ausgabe-

Zeile Persönlich Familie Alias
1 Eberesche Murphy rowanm
2 Ellis Drechsler ellist
3 Ellis Drechsler ellist
4 Maya Robinson Mayar
5 Quinn Campbell Quinnc