lookup 演算子
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
ディメンション テーブル内で検索された値を使用して、ファクト テーブルの列を拡張します。
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
ここでは、各ペア (CommonColumn
、Col
) を元のテーブルから、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
Conditions
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
LeftTable | string |
✔️ | 参照の基礎となるテーブルまたは表形式の式。 $left と示されます。 |
RightTable | string |
✔️ | ファクト テーブル内の新しい列を "設定" するために使用されるテーブルまたは表形式の式。 $right と示されます。 |
属性 | string |
✔️ | LeftTable の行と RightTable の行との照合方法を記述する 1 つ以上の規則のコンマ区切りのリスト。 複数のルールは、and 論理演算子を使用して評価されます。 「ルール」を参照してください。 |
kind |
string |
RightTable で一致しない LeftTable 内の行を処理する方法を決定します。 既定では、leftouter が使用されます。これは、これらのすべての行が、演算子によって追加された 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
場合、左と右の一致する行の組み合わせごとに出力に行があります。
例
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 | スティーブ | Ballmer | steveb |
5 | Tim | Cook | timc |