union 運算子
取得兩個或以上的資料表並傳回這些資料表中的資料列。
語法
[ T|
] union
[ UnionParameters ] [kind=
outer
|inner
] [withsource=
ColumnName] [|true
isfuzzy=
false
] 數據表
深入瞭解 語法慣例。
注意
您可以使用 set 語句或透過用戶端要求屬性,best_effort
將要求屬性設定為 true
,藉此改變運算子的作業union
。 當此屬性設定為 true
時, union
運算符會忽略模糊解析和聯機失敗,以執行任何要「聯集」的子表達式,並在查詢狀態結果中產生警告。
參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
T | string |
輸入表格式表達式。 | |
UnionParameters | string |
名稱= 值形式的零個或多個空格分隔參數,可控制數據列比對作業和執行計劃的行為。 請參閱 支援的等位參數。 |
|
kind |
string |
inner 或 outer 。 inner 會導致結果具有所有輸入數據表通用的數據行子集。 outer 會導致結果具有任何輸入中發生的所有數據行。 輸入資料欄未定義的儲存格會設定為 null 。 預設為 outer 。使用 outer 時,結果會包含任何輸入中發生的所有數據行,每個名稱和類型都會有一個數據行。 這表示,如果數據行出現在多個數據表中,而且具有多個類型,則其結果中每個類型都有對應的數據行。 此數據行名稱後綴為 『_』,後面接著源數據行 類型。 |
|
withsource= ColumnName |
string |
如果指定,輸出會包含名為 ColumnName 的數據行,其值表示哪些源數據表已參與每個數據列。 如果查詢有效地參考來自多個資料庫的數據表,包括預設資料庫,則此數據行的值具有資料庫限定的數據表名稱。 如果參考多個叢集,叢集和資料庫限定性會出現在 值中。 | |
isfuzzy |
bool |
如果設定為 true ,則允許等位位的模糊解析。 聯集來源集會減少為一組數據表參考,這些參考存在於且可在分析查詢並準備執行時存取。 如果找到至少一個這類數據表,任何解析失敗會在查詢狀態結果中產生警告,但不會防止查詢執行。 如果未成功解決,查詢會傳回錯誤。 預設為 false 。isfuzzy=true 僅適用於 union 來源解析階段。 決定源數據表集之後,將不會隱藏可能的其他查詢失敗。 |
|
資料表 | string |
一或多個逗號分隔數據表參考、以括弧括住的查詢表達式,或以通配符指定的一組數據表。 例如,E* 會形成資料庫中所有資料表的聯集,其名稱以 E 開頭。 |
支援的等位參數
名稱 | 類型 | 必要 | Description |
---|---|---|---|
hint.concurrency |
int |
提示系統:union 運算子有多少個並行子查詢應該以平行方式執行。 默認值是叢集單一節點上的CPU核心數目, (2到16) 。 |
|
hint.spread |
int |
提示系統並行 union 子查詢執行應使用多少個節點。 預設值是 1。 |
名稱 | 類型 | 必要 | Description |
---|---|---|---|
T | string |
輸入表格式表達式。 | |
kind |
string |
inner 或 outer 。 inner 會導致結果具有所有輸入數據表通用的數據行子集。 outer 會導致結果具有任何輸入中發生的所有數據行。 輸入資料欄未定義的儲存格會設定為 null 。 預設為 outer 。使用 outer 時,結果會包含任何輸入中發生的所有數據行,每個名稱和類型都會有一個數據行。 這表示,如果數據行出現在多個數據表中,而且具有多個類型,則其結果中每個類型都有對應的數據行。 此數據行名稱後綴為 『_』,後面接著源數據行 類型。 |
|
withsource= ColumnName |
string |
如果指定,輸出會包含名為 ColumnName 的數據行,其值表示哪些源數據表已參與每個數據列。 如果查詢有效地參考來自多個資料庫的數據表,包括預設資料庫,則此數據行的值具有資料庫限定的數據表名稱。 如果參考多個叢集,叢集和資料庫限定性會出現在 值中。 | |
isfuzzy |
bool |
如果設定為 true ,則允許等位位的模糊解析。 聯集來源集會減少為一組數據表參考,這些參考存在於且可在分析查詢並準備執行時存取。 如果找到至少一個這類數據表,任何解析失敗會在查詢狀態結果中產生警告,但不會防止查詢執行。 如果未成功解決,查詢會傳回錯誤。 不過,在跨工作區和跨應用程式查詢中,如果找不到任何工作區或應用程式,查詢將會失敗。 預設為 false 。isfuzzy=true 僅適用於 union 來源解析階段。 決定源數據表集之後,將不會隱藏可能的其他查詢失敗。 |
|
資料表 | string |
一或多個逗號分隔數據表參考、以括弧括住的查詢表達式,或以通配符指定的一組數據表。 例如,E* 會形成資料庫中所有資料表的聯集,其名稱以 E 開頭。知道資料表的清單時,請避免使用萬用字元。 某些工作區包含非常大量的資料表,會導致執行效率不佳。 資料表也可能會隨著導致非預期結果的時間而增加。 |
注意
傳回
所含資料列數目和所有輸入資料表中的資料列數目一樣多的資料表。
範例
名稱或數據列中有字串的數據表
union K* | where * has "Kusto"
在名稱以 K
開頭的資料庫中所有資料表的資料列,而且其中的任何資料行包含 Kusto
這個字。
相異計數
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
過去一天已產生 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
輸出
計數 |
---|
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
輸出
計數 |
---|
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
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應