GitHubContribute in GitHub: オンラインでの編集

ルックアップ演算子

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

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

ここで、結果は、前者の表の各ペア (CommonColumnCol) を、後者の表の各ペア (CommonColumn1Col2) とともに検索することによって、 DimensionTable ( $rightによって参照される) のデータで FactTable ($left) を拡張する表です。 ファクト表とディメンション表の違いについては、 ファクト表とディメンション表を参照してください。

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

  • 結果は、結合操作の基礎となる $right 表の列を繰り返しません。
  • サポートされるルックアップは、 leftouterinnerの 2 種類のみです。 leftouter がデフォルトです。
  • パフォーマンスの観点から、システムはデフォルトで、 $left 表は大きい (ファクト) 表、 $right 表は小さい (ディメンション) 表であると想定します。 これは、 join 演算子によって使用される想定とはまったく反対のものです。
  • lookup オペレーターは、 $right 表を $left 表に自動的にブロードキャストします (基本的には、 hint.broadcast が指定された場合と同様に動作します)。 これにより、 $right 表のサイズが制限されることに注意してください。

ルックアップの右側のサイズが数十 MB を超える場合、クエリーは失敗します。

以下の照会を実行して、右側のサイズ (バイト単位) を見積もることができます。

rightSide
| summarize sum(estimate_data_size(*))

構文

LeftTable | lookup [kind = (leftouter|inner)] ( RightTable ) on 属性

引数

  • LeftTable: ルックアップの基礎となるテーブルまたは表形式の式。 $leftとして示されます。

  • RightTable: ファクト表の新しい列に「データを取り込む」ために使用される表または表形式の式。 $rightとして示されます。

  • 属性: LeftTable の行が RightTableの行とどのように一致するかを記述する 1 つ以上の規則のコンマ区切りリスト。 複数の規則は、 and 論理演算子を使用して評価されます。 ルールは、以下のいずれかになります。

ルールの種類 構文 述部
名前による等価 ColumnName where LeftTable.ColumnName == RightTable.ColumnName
値による等価 $left.LeftColumn == $right.RightColumn where $left.LeftColumn == $right.*RightColumn

「値による等価」の場合、列名は、 $left および $right 表記で示される適用可能な所有者表で修飾 しなければなりません

  • kind: RightTableに一致するものがない LeftTable 内の行を処理する方法に関するオプションの命令。 デフォルトでは、 leftouter が使用されます。これは、演算子によって追加された RightTable 列の欠落値に使用される NULL 値を使用して、これらのすべての行が出力に表示されることを意味します。 inner を使用すると、そのような行は出力から省略されます。 (その他の種類の結合は、 lookup 演算子ではサポートされません。)

返品

以下を含む表:

  • マッチング・キーを含む、2 つの表のそれぞれの列ごとに 1 つの列。 名前の競合がある場合、右側の列は自動的に名前変更されます。

  • 入力表の間の一致ごとに 1 行。 一致とは、一方の表から選択された行のうち、すべての on フィールドに他方の表の行と同じ値を持つ行のことです。

  • 属性 (ルックアップ・キー) は、出力表に 1 回だけ表示されます。

  • kind 指定なし、 kind=leftouter

    一致するものがない場合でも、内部一致に加えて、左側 (および/または右側) のすべての行に 1 つの行があります。 その場合、一致しない出力セルにはヌルが含まれます。

  • kind=inner

    左右の一致する行の組み合わせごとに 1 行が出力されます。

events_all
    | project
        event_uuid,
        data_source_id,
        original_time
    | where original_time > ago(24h) and isnotempty(data_source_id)
    | lookup datasources on $left.data_source_id == $right.data_source_id
    | summarize EventCount=count_distinct(event_uuid) by DataSourceName=data_source_name
    | order by EventCount desc
    | take 10
    

結果

datasourceName EventCount
Cisco ACE Firewall@ test.abc.acd 112346
test-UseCase0lookupDataSource 9123
MicroStWindows@Test3 123