Operátor lookup

Rozšíří sloupce tabulky faktů o hodnoty vyhledáné v tabulce dimenzí.

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

Výsledkem je tabulka, která rozšiřuje FactTable ($left) o data z DimensionTable (na které odkazuje $right) tím, že provede vyhledávání každé dvojice (CommonColumn,Col) z předchozí tabulky s každou dvojicí (CommonColumn1,Col2) v druhé tabulce. Rozdíly mezi tabulkami faktů a dimenzí najdete v tabulkách faktů a dimenzí.

Operátor lookup provádí 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í se pouze dva druhy vyhledávání, leftouter a inner, přičemž leftouter výchozí je.
  • Z hlediska výkonu systém ve výchozím nastavení předpokládá, že $left tabulka je větší tabulka (fakta) a $right tabulka je menší (dimenze). To je přesný opak předpokladu používaného operátorem join .
  • 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 omezuje 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(*))

Syntax

Levá tabulka|lookup [kind= (leftouter|inner)] (PodmínkyRightTable)on

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Levá tabulka string ✔️ Tabulka nebo tabulkový výraz, který je základem vyhledávání. Označuje se jako $left.
RightTable string ✔️ Výraz tabulky nebo tabulkového výrazu, který se používá k "naplnění" nových sloupců v tabulce faktů. Označuje se jako $right.
Atributy string ✔️ Seznam jednoho nebo více pravidel oddělených čárkami, která popisují, jak jsou řádky z tabulky LeftTable spárovány s řádky z tabulky RightTable. Více pravidel se vyhodnocuje pomocí logického operátoru and . Viz Pravidla.
kind string Určuje způsob zpracování řádků v tabulce LeftTable , které nemají shodu v pravé tabulce. Ve výchozím nastavení leftouter se používá , což znamená, že všechny tyto řádky se zobrazí ve výstupu s hodnotami null použitými pro chybějící hodnoty sloupců RightTable přidaných operátorem. Pokud inner se použije, tyto řádky se z výstupu vynechají. Operátor nepodporuje lookup jiné typy spojení.

Pravidla

Druh pravidla Syntax Predikátu
Rovnost podle názvu Columnname whereLevá tabulka. Columnname==RightTable. Columnname
Rovnost podle hodnoty $left.Levý sloupec==$right.Pravý sloupec where$left.Levý sloupec==$right.*Pravý sloupec

Poznámka

V případě rovnosti podle hodnoty musí být názvy sloupců kvalifikovány příslušnou tabulkou vlastníka označenou $left notací a $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 konfliktu názvů, sloupce na pravé straně 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 zobrazí jenom jednou.
  • Pokud kind není zadána hodnota nebo kind=leftouter, pak kromě vnitřních shod existuje řádek pro každý řádek na levé straně (nebo vpravo), a to i v případě, že není shodný. 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 zprava.

Příklady

let FactTable=datatable(Row:string,Personal:string,Family:string) [
  "1", "Bill",   "Gates",
  "2", "Bill",   "Clinton",
  "3", "Bill",   "Clinton",
  "4", "Steve",  "Ballmer",
  "5", "Tim",    "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
  "Bill",  "Gates",   "billg",
  "Bill",  "Clinton", "billc",
  "Steve", "Ballmer", "steveb",
  "Tim",   "Cook",    "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Řádek Osobní Rodina Alias
1 Faktura Gates faktura
2 Faktura Clinton billc
3 Faktura Clinton billc
4 Steve Ballmer Petr Hoštád
5 Tim Vařit Housová