union 연산자
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
두 개 이상의 테이블을 사용하며 모든 행을 반환합니다.
구문
[ T |
] union
[ UnionParameters ] [kind=
|inner
outer
] [withsource=
ColumnName] [ ] Tablesisfuzzy=
true
|false
[ T |
] union
[ ]|outer
inner
kind=
[withsource=
ColumnName] [isfuzzy=
|true
false
] Tables
구문 규칙에 대해 자세히 알아봅니다.
참고 항목
set 문을 사용하거나 클라이언트 요청 속성을 통해 요청 속성을 설정하여 best_effort
true
연산자의 작업을 union
변경할 수 있습니다. 이 속성을 설정 true
하면 연산자는 union
유사 항목 확인 및 연결 실패를 무시하고 "unioned"인 하위 식을 실행하고 쿼리 상태 결과에 경고를 생성합니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
T | string |
입력 테이블 형식 식입니다. | |
UnionParameters | string |
행 일치 작업 및 실행 계획의 동작을 제어하는 이름 = 값 형식의 공백으로 구분된 매개 변수가 0개 이상입니다. 지원되는 공용 구조체 매개 변수를 참조하세요. |
|
kind |
string |
inner 또는 outer 중 하나입니다. inner 에서는 결과가 모든 입력 테이블에 공통적인 열의 하위 집합을 갖도록 합니다. outer 는 결과에 입력에서 발생하는 모든 열을 갖도록 합니다. 입력 행에 의해 정의되지 않은 셀은 .로 null 설정됩니다. 기본값은 outer 입니다.결과에 outer 는 입력에서 발생하는 모든 열, 각 이름 및 형식 발생에 대해 하나의 열이 있습니다. 즉, 열이 여러 테이블에 표시되고 여러 형식이 있는 경우 공용 구조체 결과의 각 형식에 해당하는 열이 있습니다. 이 열 이름에는 '_'와 원본 열 형식이 접미사가 붙습니다. |
|
withsource= ColumnName |
string |
지정한 경우 출력에는 각 행에 기여한 원본 테이블을 나타내는 ColumnName이라는 열이 포함됩니다. 쿼리가 기본 데이터베이스를 포함하여 둘 이상의 데이터베이스에서 테이블을 효과적으로 참조하는 경우 이 열의 값에는 데이터베이스로 한정된 테이블 이름이 있습니다. 클러스터 및 데이터베이스 자격은 둘 이상의 클러스터를 참조하는 경우 값에 있습니다. | |
isfuzzy |
bool |
로 true 설정하면 공용 구조체 다리의 유사 해상도를 허용합니다. 공용 구조체 원본 집합은 쿼리를 분석하고 실행을 준비하는 동안 현재 존재하고 액세스할 수 있는 테이블 참조 집합으로 축소됩니다. 이러한 테이블이 하나 이상 발견되면 확인 실패가 쿼리 상태 결과에 경고를 생성하지만 쿼리 실행을 방지하지는 않습니다. 해결에 성공하지 못한 경우 쿼리는 오류를 반환합니다. 기본값은 false 입니다.isfuzzy=true 는 원본 확인 단계에만 적용됩니다 union . 원본 테이블 집합이 결정되면 추가 쿼리 실패가 표시되지 않습니다. |
|
테이블 | string |
하나 이상의 쉼표로 구분된 테이블 참조, 괄호로 묶인 쿼리 식 또는 와일드카드로 지정된 테이블 집합입니다. 예를 들어 E* 이름이 시작되는 E 데이터베이스에 있는 모든 테이블의 합합을 형성합니다. |
지원되는 공용 구조체 매개 변수
속성 | Type | 필수 | 설명 |
---|---|---|---|
hint.concurrency |
int |
병렬로 실행해야 하는 연산자의 동시 하위 쿼리 수를 union 시스템에 암시합니다. 기본값은 클러스터의 단일 노드에 있는 CPU 코어 수(2~16)입니다. |
|
hint.spread |
int |
동시 union 하위 쿼리 실행에서 사용해야 하는 노드 수를 시스템에 암시합니다. 기본값은 1입니다. |
속성 | Type | 필수 | 설명 |
---|---|---|---|
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
키워드로 특성이 지정된 경우 범위에 let 문을 포함할view
수 있습니다.- 범위에는
union
함수가 포함되지 않습니다. 함수를 포함하려면 키워드를 사용하여 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)
전날에 Query
이벤트 또는 Command
이벤트를 생성한 고유 사용자 수입니다. 결과에서 'SourceTable' 열은 "쿼리" 또는 "명령"을 나타냅니다.
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 |
받은 열 x
의 접미사가 _long
결과 스키마에 이미 있으므로 x_long
열 이름이 중복되지 않고 새 열이 생성 View_1
됩니다.x_long1