lookup 演算子
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
ディメンション テーブル内で検索された値を使用して、ファクト テーブルの列を拡張します。
たとえば、次のクエリを実行すると、FactTable
($left
) を DimensionTable
($right
) のデータで拡張するテーブルが作成されます。 ルックアップは、FactTable
の各ペア (CommonColumn
、 Col1
) と、DimensionTable
内の各ペア (CommonColumn
、 Col2
) と一致します。 ファクト テーブルとディメンション テーブルの違いについては、ファクト テーブルとディメンション テーブルを参照してください。
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 内の行を処理する方法を決定します。 既定では、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
列の一致する値に基づいて、FactTable
と DimTable
の間で左外部結合を実行する方法を示しています。
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 |
関連するコンテンツ
- ブロードキャスト参加
- leftouter 結合 を
する - 内部結合 を
する - 結合演算子 を
する