lookup 演算子

ディメンション テーブル内で検索された値を使用して、ファクト テーブルの列を拡張します。

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

ここでは、各ペア (CommonColumnCol) を元のテーブルから、2番目のテーブルの各ペア (CommonColumn1,Col2) に対して検索を実行することによって ($right により参照された) DimensionTable のデータを使用して FactTable ($left) を拡張するテーブルが生成されます。 ファクト テーブルとディメンション テーブルの違いについては、ファクト テーブルとディメンション テーブルを参照してください。

lookup 演算子は結合演算子と同様の操作を実行しますが、次のような違いがあります。

  • 結果は、結合操作の $right 基礎となるテーブルの列を繰り返しません。
  • leftouter および inner の、2 種類の検索のみがサポートされており、既定値は leftouter です。
  • パフォーマンスの観点から、既定では、システムは $left テーブルが大きな (ファクト) テーブルであり、$right テーブルが小さい (ディメンション) テーブルであると想定されています。 これは、join 演算子で使用される仮定と完全に逆です。
  • lookup 演算子は $right テーブルを $left テーブルに自動的にブロードキャストします (基本的には、hint.broadcast が指定されている場合と同様に動作します)。 これにより、テーブルのサイズが制限されます $right

Note

検索の右側が数十 MB を超える場合、クエリは失敗します。

次のクエリを実行すると、右側の推定サイズをバイト単位で取得できます。

rightSide
| summarize sum(estimate_data_size(*))

構文

LeftTable|lookup [kind= (leftouter|inner)] (RightTable)onの条件

構文規則について詳しく知る。

パラメーター

名前 必須 説明
LeftTable string ✔️ 参照の基礎となるテーブルまたは表形式の式。 $left と示されます。
RightTable string ✔️ ファクト テーブル内の新しい列を "設定" するために使用されるテーブルまたは表形式の式。 $right と示されます。
属性 string ✔️ LeftTable の行と RightTable の行の照合方法を記述する 1 つ以上のルールのコンマ区切りのリスト。 複数のルールは、and 論理演算子を使用して評価されます。 「ルール」を参照してください。
kind string RightTable で一致しない LeftTable の行を処理する方法を決定します。 既定では、leftouter が使用されます。これは、これらのすべての行が、演算子によって追加された RightTable の列の欠損値に使用される null 値で出力に表示されることを意味します。 inner が使用される場合、このような行は出力から除外されます。 その他の種類の結合は、 演算子では lookup サポートされていません。

ルール

ルールの種類 構文 Predicate
名前による等値性 [ColumnName] whereLeftTable.ColumnName==RightTable.ColumnName
値による等値性 $left.LeftColumn==$right.RightColumn where$left.LeftColumn==$right.*RightColumn

Note

"値による等値性" の場合、$left および $right の表記によって示される該当する所有者テーブルで列名を修飾する必要があります

戻り値

次の要素が含まれるテーブル:

  • 照合キーを含め、2 つのテーブルそれぞれのすべての列に対応する列。 名前が競合している場合は、右側の列の名前が自動的に変更されます。
  • 入力テーブル間でのすべての一致に対応する行。 片方のテーブルから選択された、もう一方のテーブルに含まれる 1 つの行とすべての on フィールドの値が同じである行です。
  • 属性 (検索キー) は、出力テーブルに 1 回だけ表示されます。
  • が指定されていない場合、または kind=leftouterの場合kind、内側の一致に加えて、一致するものがない場合でも、左側 (および/または右) のすべての行に対して行が存在します。 その場合、一致しない出力セルには null が含まれます。
  • の場合 kind=innerは、左右の一致する行の組み合わせごとに、出力に行があります。

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
個人用 ファミリ エイリアス
1 Bill ゲート billg
2 Bill Clinton billc
3 Bill Clinton billc
4 Steve Ballmer steveb
5 Tim Cook timc