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
leftouter
inner
, 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żywanegojoin
przez operatora. - Operator
lookup
automatycznie emituje tabelę$right
$left
do tabeli (zasadniczo zachowuje się tak, jakbyhint.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)
on
RightTable
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 lubkind=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=inner
wartość , 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 |
Powiązana zawartość
- dołączenia do emisji
-
sprzężenia lewego - sprzężenia wewnętrznego
- operator sprzężenia