Udostępnij za pośrednictwem


operator wyszukiwania

Dotyczy: ✅Microsoft Fabric

Rozszerza kolumny tabeli faktów o wartości wyszukane w tabeli wymiarów.

Na przykład następujące zapytanie powoduje utworzenie tabeli, która rozszerza FactTable ($left) przy użyciu danych z DimensionTable ($right), wykonując wyszukiwanie. Wyszukiwanie pasuje do każdej pary (CommonColumn, Col1) z FactTable z każdą parą (CommonColumn, Col2) w DimensionTable. Aby uzyskać różnice między tabelami faktów i wymiarów, zobacz tabele faktów i wymiarów.

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

Operator lookup wykonuje operację podobną do operatora sprzężenia z następującymi różnicami:

  • Wynik nie powtarza kolumn z $right tabeli, które są podstawą operacji sprzężenia.
  • Obsługiwane są tylko dwa rodzaje odnośników i leftouterinner, z wartością leftouter domyślną.
  • Jeśli chodzi o wydajność, system domyślnie zakłada, że $left tabela jest większą (faktami), a $right tabela jest mniejszą (wymiarami). Jest to dokładnie przeciwieństwo założenia używanego join przez operatora.
  • Operator lookup automatycznie emituje tabelę $right$left do tabeli (zasadniczo zachowuje się tak, jakby hint.broadcast została określona). Ogranicza to rozmiar $right tabeli.

Uwaga

Jeśli prawa strona odnośnika jest większa niż kilkadziesiąt mb/s, zapytanie zakończy się niepowodzeniem.

Możesz uruchomić następujące zapytanie, aby oszacować rozmiar prawej strony w bajtach:

rightSide
| summarize sum(estimate_data_size(*))

Składnia

| lookup LeftTable [kind= (leftouter|inner)] (atrybutów)onRightTable

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
LeftTable string ✔️ Tabela lub wyrażenie tabelaryczne, które jest podstawą wyszukiwania. Oznaczono jako $left.
RightTable string ✔️ Tabela lub wyrażenie tabelaryczne używane do "wypełniania" nowych kolumn w tabeli faktów. Oznaczono jako $right.
Atrybuty string ✔️ Rozdzielana przecinkami lista co najmniej jednej reguły, która opisuje, jak wiersze z tabeli LeftTable są dopasowywane do wierszy z tabeli RightTable. Wiele reguł jest ocenianych przy użyciu operatora logicznego and . Zobacz Reguły.
kind string Określa sposób traktowania wierszy w tabeli LeftTable , które nie mają dopasowania w tabeli RightTable. Domyślnie jest używana leftouter, co oznacza, że wszystkie te wiersze są wyświetlane w danych wyjściowych z wartościami null używanymi dla brakujących wartości kolumn RightTable dodanych przez operatora. Jeśli inner jest używany, takie wiersze zostaną pominięte z danych wyjściowych. Inne rodzaje sprzężeń nie są obsługiwane przez lookup operatora.

Reguły

Rodzaj reguły Składnia Predykat
Równość według nazwy Nazwakolumny where LeftTable.ColumnName==RightTable.Nazwakolumny
Równość według wartości $left. == $right. Kolumna prawa w lewo where $left. == $right.Kolumna lewa *Kolumna prawa

Uwaga

W przypadku "równości według wartości" nazwy kolumn muszą być kwalifikowane z odpowiednią tabelą właściciela oznaczona za pomocą $left notacji i .$right

Zwraca

Tabela z:

  • Kolumna dla każdej kolumny w każdej z dwóch tabel, w tym pasujących kluczy. Kolumny po prawej stronie są automatycznie zmieniane, jeśli występują konflikty nazw.
  • Wiersz dla każdego dopasowania między tabelami wejściowymi. Dopasowanie to wiersz wybrany z jednej tabeli, który ma tę samą wartość dla wszystkich on pól co wiersz w drugiej tabeli.
  • Atrybuty (klucze odnośników) są wyświetlane tylko raz w tabeli wyjściowej.
  • Jeśli kind jest nieokreślony lub kind=leftouter, oprócz dopasowań wewnętrznych, istnieje wiersz dla każdego wiersza po lewej (i/lub w prawo), nawet jeśli nie ma dopasowania. W takim przypadku niedopasowane komórki wyjściowe zawierają wartości null.
  • Jeśli kind=innerwartość , w danych wyjściowych znajduje się wiersz dla każdej kombinacji pasujących wierszy z lewej i prawej.

Przykłady

W poniższym przykładzie pokazano, jak wykonać lewe sprzężenie zewnętrzne między FactTable i DimTable, na podstawie pasujących wartości w kolumnach Personal i 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

wyjściowe

Wiersz Osobista Rodzina Alias
1 Jarzębina Murphy rowanm
2 Ellis Tokarz lista ellist
3 Ellis Tokarz lista ellist
100 Maya Robinson mayar
5 Quinn Campbell quinnc