次の方法で共有


lookup 演算子

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

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

たとえば、次のクエリを実行すると、FactTable ($left) を DimensionTable ($right) のデータで拡張するテーブルが作成されます。 ルックアップは、FactTable の各ペア (CommonColumnCol1) と、DimensionTable内の各ペア (CommonColumnCol2) と一致します。 ファクト テーブルとディメンション テーブルの違いについては、ファクト テーブルとディメンション テーブルを参照してください。

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

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属性

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

パラメーター

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

ルール

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

Note

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

返品

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

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

次の例は、Personal 列と Family 列の一致する値に基づいて、FactTableDimTableの間で左外部結合を実行する方法を示しています。

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

出力

個人用 家族 エイリアス
1 ナナカマド マーフィー rowanm
2 エリス ターナー ellist
3 エリス ターナー ellist
4 マヤ ロビンソン mayar
5 クイン キャンベル quinnc