Sdílet prostřednictvím


Operátor lookup

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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í a innervý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ředpokladu join , který operátor používá.
  • Operátor lookup automaticky vysílá $right tabulku do $left tabulky (v podstatě se chová, jako by hint.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)onrighttable

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ý nebo kind=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=innerje 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