union 演算子

複数のテーブルを受け取り、それらすべてのテーブルの行を返します。

構文

[ T| ] union [ UnionParameters ] [kind=|outerinner] [withsource=ColumnName] [isfuzzy=|truefalse] Tables

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

注意

演算子のunion操作は、set ステートメントまたはクライアント要求プロパティをbest_effort使用して、request プロパティを にtrue設定することで変更できます。 このプロパティが に true設定されている場合、 union 演算子はあいまい解決と接続エラーを無視して、"unioned" であるサブ式のいずれかを実行し、クエリ状態の結果に警告を生成します。

パラメーター

名前 必須 説明
T string 表形式の入力式。
UnionParameters string 行の照合操作と実行プランの動作を制御する、スペースで区切られた "名前 = 値" の形式の 0 個以上のパラメーター。 サポートされている共用体パラメーターを参照してください。
kind string inner または outer のいずれかです。 inner 結果には、すべての入力テーブルに共通する列のサブセットが含まれます。 outer を指定すると、いずれかの入力で発生するすべての列が結果に表示されます。 入力行で定義されていないセルは に null設定されます。 既定値は、outer です。

では outer、結果には、いずれかの入力で発生するすべての列が含まれます。名前と型の出現ごとに 1 列です。 つまり、1 つの列が複数のテーブルに表示され、複数の型を持つ場合は、共用体の結果の各型に対応する列が含まれます。 この列名の後には、'_' の後に元の列 の型が付きます。
withsource=Columnname string 指定した場合、出力には ColumnName という名前の列が含まれます。この列の値は、各行にどのソース テーブルが関与したかを示します。 クエリが既定のデータベースを含む複数のデータベースのテーブルを効果的に参照する場合、この列の値はデータベースで修飾されたテーブル名になります。 複数のクラスター が参照されている場合、値にはクラスターとデータベースの修飾が存在します。
isfuzzy bool を に設定すると true、和集合脚のあいまい解決が許可されます。 共用体ソースのセットは、クエリの分析と実行の準備中に存在し、その時点でアクセス可能なテーブル参照のセットに縮小されます。 このようなテーブルが少なくとも 1 つ見つかった場合、解決エラーが発生すると、クエリの状態の結果に警告が表示されますが、クエリの実行は妨げられません。 解決に成功しなかった場合、クエリはエラーを返します。 既定値は、false です。

isfuzzy=trueunion のソース解決フェーズにのみ適用されます。 ソース テーブルのセットが決定されると、追加のクエリ エラーが発生する可能性は抑制されません。
テーブル string 1 つ以上のコンマ区切りのテーブル参照、かっこで囲まれたクエリ式、またはワイルドカードで指定されたテーブルのセット。 たとえば、E* を使用すると、名前が E で始まるデータベース内のすべてのテーブルの和集合が形成されます。

サポートされている共用体パラメーター

名前 必須 説明
hint.concurrency int 並列で実行する必要がある union 演算子の同時サブクエリ数をシステムに示します。 既定値は、クラスターの単一ノード上の CPU コアの数です (2 から 16)。
hint.spread int union サブクエリの同時実行に使用されるノード数をシステムに示します。 既定値は 1 です。
名前 必須 説明
T string 表形式の入力式。
kind string inner または outer のいずれかです。 inner 結果には、すべての入力テーブルに共通する列のサブセットが含まれます。 outer を指定すると、いずれかの入力で発生するすべての列が結果に表示されます。 入力行で定義されていないセルは に null設定されます。 既定では、 outerです。

では outer、結果には、いずれかの入力で発生するすべての列が含まれます。名前と型の出現ごとに 1 列です。 つまり、1 つの列が複数のテーブルに表示され、複数の型を持つ場合は、共用体の結果の各型に対応する列が含まれます。 この列名の後には、'_' の後に元の列 の型が付きます。
withsource=Columnname string 指定した場合、出力には ColumnName という名前の列が含まれます。この列の値は、各行にどのソース テーブルが関与したかを示します。 クエリが既定のデータベースを含む複数のデータベースのテーブルを効果的に参照する場合、この列の値はデータベースで修飾されたテーブル名になります。 複数のクラスター が参照されている場合、値にはクラスターとデータベースの修飾が存在します。
isfuzzy bool を に設定すると true、和集合脚のあいまい解決が許可されます。 共用体ソースのセットは、クエリの分析と実行の準備中に存在し、その時点でアクセス可能なテーブル参照のセットに縮小されます。 このようなテーブルが少なくとも 1 つ見つかった場合、解決エラーが発生すると、クエリの状態の結果に警告が表示されますが、クエリの実行は妨げられません。 解決に成功しなかった場合、クエリはエラーを返します。 ただし、ワークスペース間クエリとアプリ間クエリで、ワークスペースまたはアプリのいずれかが見つからない場合、クエリは失敗します。 既定値は、false です。

isfuzzy=trueunion のソース解決フェーズにのみ適用されます。 ソース テーブルのセットが決定されると、追加のクエリ エラーが発生する可能性は抑制されません。
テーブル string 1 つ以上のコンマ区切りのテーブル参照、かっこで囲まれたクエリ式、またはワイルドカードで指定されたテーブルのセット。 たとえば、E* を使用すると、名前が E で始まるデータベース内のすべてのテーブルの和集合が形成されます。

テーブルのリストが分かっている場合は、ワイルドカードを使用しないでください。 ワークスペースに、非効率的な実行につながる膨大な数のテーブルが含まれている場合もあります。 時間の経過とともにテーブルが追加され、予想外の結果につながる可能性もあります。

注意

  • スコープにはunion、キーワード (keyword)で属性付けされている場合は let ステートメントview含めることができます。
  • スコープにはunion関数は含まれません。 関数を含めるには、キーワード (keyword)を使用して let ステートメントview定義します。
  • 共用体の脚が出現する順序は保証されませんが、各脚に演算子がある場合は order by 、各脚が並べ替えられます。

戻り値

すべての入力テーブルに存在する行と同数の行を含むテーブル。

名前または列に文字列が含まれるテーブル

union K* | where * has "Kusto"

データベース内のすべてのテーブルの行のうち、名前が K で始まり、いずれかの列に Kusto という単語が含まれている行。

個別のカウント

union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)

過去 1 日で Query イベントまたは Command イベントを発生させた個別のユーザーの数。 結果の "SourceTable" 列は "Query" または "Command" を指します。

Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer 
   (Command | where Timestamp > ago(1d))
| summarize dcount(UserId)

より効率的なこのバージョンでも同じ結果が生成されます。 和集合を作成する前に各テーブルをフィルター処理します。

isfuzzy=true の使用

// Using union isfuzzy=true to access non-existing view:                                     
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true
(View_1 | where x > 0), 
(View_2 | where x > 0),
(View_3 | where x > 0)
| count 

出力

Count
2

クエリの状態の監視 - 次の警告が返されました: Failed to resolve entity 'View_3'

// Using union isfuzzy=true and wildcard access:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true View*, SomeView*, OtherView*
| count 

出力

Count
3

クエリの状態の監視 - 次の警告が返されました: Failed to resolve entity 'SomeView*'

ソース列の種類が一致しません

let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2

出力

TableName x_long x_int
View_1 1
View_2 2
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
let View_3 = view () { print x_long=3 };
union withsource=TableName View_1, View_2, View_3 

出力

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

View_1 の列 x はサフィックス _long を受け取りました。また、x_long という名前の列が結果スキーマに既に存在するため、列名が重複除去され、新しい列 x_long1 が生成されました。