Operátor lookup
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Rozšíří sloupce tabulky faktů o hodnoty v tabulce dimenzí.
Výsledkem následujícího dotazu je například tabulka, která rozšiřuje FactTable
($left
) o data z DimensionTable
($right
) provedením vyhledávání. Vyhledávání odpovídá každému páru (CommonColumn
, Col1
) z FactTable
s každou dvojicí (CommonColumn
, Col2
) v DimensionTable
. Rozdíly mezi tabulkami faktů a dimenzí najdete v tabulkách faktů a dimenzí.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
Operátor lookup
provede operaci podobnou operátoru spojení s následujícími rozdíly:
- Výsledek neopakuje sloupce z
$right
tabulky, které jsou základem operace spojení. - Podporují
leftouter
se pouze dva druhy vyhledávání ainner
výchozíleftouter
nastavení. - Z hlediska výkonu systém ve výchozím nastavení předpokládá, že
$left
tabulka je větší (fakta) a$right
tabulka je menší (dimenze). Je to přesně opak předpokladujoin
, který operátor používá. - Operátor
lookup
automaticky vysílá$right
tabulku do$left
tabulky (v podstatě se chová, jako byhint.broadcast
byl zadán). Tím se omezí velikost$right
tabulky.
Poznámka:
Pokud je pravá strana vyhledávání větší než několik desítek MB, dotaz selže.
Spuštěním následujícího dotazu můžete odhadnout velikost pravé strany v bajtech:
rightSide
| summarize sum(estimate_data_size(*))
Syntaxe
lefttable|
lookup
[kind
=
(leftouter
|inner
)] (
atributy)
on
righttable
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
Levá tabulka | string |
✔️ | Tabulka nebo tabulkový výraz, který je základem pro vyhledávání. Označeno jako $left . |
RightTable | string |
✔️ | Tabulka nebo tabulkový výraz, který slouží k "naplnění" nových sloupců v tabulce faktů. Označeno jako $right . |
Atributy | string |
✔️ | Seznam pravidel oddělených čárkami, která popisují, jak se řádky z tabulky LeftTable shodují s řádky z tabulky RightTable. Pomocí logického operátoru and se vyhodnocuje více pravidel. Viz Pravidla. |
kind |
string |
Určuje, jak zacházet s řádky v tabulce LeftTable , které nemají v tabulce RightTable žádnou shodu. Ve výchozím nastavení se používají leftouter , což znamená, že všechny tyto řádky se zobrazí ve výstupu s hodnotami null použitými pro chybějící hodnoty RightTable sloupce přidané operátorem. Pokud inner se tyto řádky použijí, ve výstupu se vynechá. Operátor nepodporuje lookup jiné druhy spojení. |
Pravidla
Druh pravidla | Syntaxe | Predikát |
---|---|---|
Rovnost podle názvu | ColumnName |
where
LeftTable.ColumnName== RightTable.ColumnName |
Rovnost podle hodnoty |
$left.
LeftColumn== $right. RightColumn |
where
$left.
LeftColumn== $right. *RightColumn |
Poznámka:
V případě rovnosti podle hodnoty musí být názvy $right
Návraty
Tabulka s:
- Sloupec pro každý sloupec v každé ze dvou tabulek, včetně odpovídajících klíčů. Pokud dojde ke konfliktům názvů, sloupce pravé strany se automaticky přejmenují.
- Řádek pro každou shodu mezi vstupními tabulkami. Shoda je řádek vybraný z jedné tabulky, který má stejnou hodnotu pro všechna
on
pole jako řádek v druhé tabulce. - Atributy (vyhledávací klíče) se ve výstupní tabulce zobrazují jenom jednou.
- Pokud
kind
není zadaný nebokind=leftouter
, pak kromě vnitřních shod existuje řádek pro každý řádek vlevo (nebo vpravo), i když nemá žádnou shodu. V takovém případě chybějící výstupní buňky obsahují hodnoty null. - Pokud
kind=inner
je ve výstupu řádek pro každou kombinaci odpovídajících řádků zleva a doprava.
Příklady
Následující příklad ukazuje, jak provést levé vnější spojení mezi FactTable
a DimTable
, na základě odpovídajících hodnot ve sloupcích Personal
a 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
výstupní
Řádek | Osobní | Rodina | Alias |
---|---|---|---|
0 | Jeřabina | Murphy | rowanm |
2 | Ellis | Soustružník | ellist |
3 | Ellis | Soustružník | ellist |
4 | Maya | Robinson | mayar |
5 | Quinn | Campbell | quinnc |
Související obsah
- připojení k vysílání
- levé spojení
- vnitřní spojení
- operátor spojení