mv-expand 연산자
다중 값 동적 배열 또는 속성 모음을 여러 레코드로 확장합니다.
mv-expand
는 summarize
... make-list()
및 make-series
와 같이 여러 값을 단일 동적 유형의 배열 또는 속성 모음으로 압축하는 집계 연산자의 반대라고 설명할 수 있습니다.
(스칼라) 배열 또는 속성 모음의 각 요소는 연산자의 출력에 새 레코드를 생성합니다. 확장되지 않은 입력의 모든 열은 출력의 모든 레코드에 복제됩니다.
Syntax
T|mv-expand
[kind=
(bag
| array
)] [with_itemindex=
IndexColumnName] ColumnName [to typeof(
Typename)
] [,
ColumnName ...] [limit
Rowlimit]
T|mv-expand
[kind=
(bag
array
| )] [Name=
] ArrayExpression [to typeof(
Typename)
] [,
[Name=
] ArrayExpression [to typeof(
Typename)
] ...] [limit
Rowlimit]
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | 형식 | 필수 | Description |
---|---|---|---|
ColumnName, ArrayExpression | string |
✔️ | 열 참조 또는 배열 또는 속성 모음을 포함하는 형식 dynamic 의 값이 있는 스칼라 식입니다. 배열 또는 속성 모음의 개별 최상위 요소는 여러 레코드로 확장됩니다.ArrayExpression이 사용되고 Name이 입력 열 이름과 같지 않으면 확장된 값이 출력의 새 열로 확장됩니다. 그렇지 않으면 기존 ColumnName이 대체됩니다. |
이름 | string |
새 열의 이름입니다. | |
Typename | string |
✔️ | 연산자가 생성한 열의 형식이 되는 배열 요소의 기본 형식을 mv-expand 나타냅니다. 형식 적용 작업은 캐스트 전용이며, 구문 분석 또는 형식 변환을 포함하지 않습니다. 선언된 형식을 준수하지 않는 배열 요소는 값이 됩니다 null . |
RowLimit | int |
각 원래 행에서 생성된 최대 행 수입니다. 기본값은 2147483647입니다. mvexpand 는 mv-expand 연산자의 레거시 형식 및 사용되지 않는 형식입니다. 레거시 버전의 기본 행 제한은 128입니다. |
|
IndexColumnName | string |
가 지정된 경우 with_itemindex 출력에는 원래 확장된 컬렉션에 있는 항목의 0부터 시작하는 인덱스가 포함된 IndexColumnName 이라는 다른 열이 포함됩니다. |
반환
입력의 각 레코드에 대해 연산자는 다음과 같은 방식으로 결정된 대로 0개, 1개 또는 많은 레코드를 출력에 반환합니다.
확장되지 않은 입력 열이 원래 값과 함께 출력에 나타납니다. 단일 입력 레코드를 여러 출력 레코드로 확장하면 값은 모든 레코드에 복제됩니다.
확장되는 각 ColumnName 또는 ArrayExpression 에 대해 확장 모드에 설명된 대로 각 값에 대해 출력 레코드 수가 결정됩니다. 각 입력 레코드에 대해 최대 출력 레코드 수가 계산됩니다. 모든 배열 또는 속성 모음이 "병렬"로 확장되어 누락된 값(있는 경우)은 null 값으로 대체됩니다. 요소는 원래 배열/모음에 표시되는 순서대로 행으로 확장됩니다.
동적 값이 null이면 해당 값(null)에 대해 단일 레코드가 생성됩니다. 동적 값이 빈 배열 또는 속성 모음인 경우 해당 값에 대한 레코드가 생성되지 않습니다. 그렇지 않으면, 동적 값에 요소가 있으므로 많은 레코드가 생성됩니다.
to typeof()
절을 사용하여 명시적으로 입력하지 않는 한 확장 열은 dynamic
유형입니다.
확장 모드
속성 모음 확장의 두 가지 모드가 지원됩니다.
kind=bag
또는bagexpansion=bag
: 속성 모음이 단일 항목 속성 모음으로 확장됩니다. 이 모드가 기본 모드입니다.kind=array
또는bagexpansion=array
: 속성 모음이 두 요소로 이루어진[
key,
value]
배열 구조로 확장되며 키 및 값에 대한 균일한 액세스가 가능합니다. 이 모드에서는 예를 들어 속성 이름에 대해 고유한 카운트 집계를 실행할 수도 있습니다.
예제
단일 열 - 배열 확장
datatable (a: int, b: dynamic)
[
1, dynamic([10, 20]),
2, dynamic(['a', 'b'])
]
| mv-expand b
출력
a | b |
---|---|
1 | 10 |
1 | 20 |
2 | a |
2 | b |
단일 열 - 모음 확장
단일 열의 간단한 확장:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand b
출력
a | b |
---|---|
1 | {"prop1": "a1"} |
1 | {"prop2": "b1"} |
2 | {"prop1": "a2"} |
2 | {"prop2": "b2"} |
단일 열 - 키-값 쌍으로 모음 확장
키-값 쌍으로 간단한 모음 확장:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand kind=array b
| extend key = b[0], val=b[1]
출력
a | b | key | 발 |
---|---|---|---|
1 | ["prop1","a1"] | prop1 | a1 |
1 | ["prop2","b1"] | prop2 | b1 |
2 | ["prop1","a2"] | prop1 | a2 |
2 | ["prop2","b2"] | prop2 | B2 |
두 개의 열 압축
두 열을 확장하면 먼저 해당 열을 '압축'한 다음, 확장합니다.
datatable (a: int, b: dynamic, c: dynamic)[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 4, 3])
]
| mv-expand b, c
출력
a | b | c |
---|---|---|
1 | {"prop1":"a"} | 5 |
1 | {"prop2":"b"} | 4 |
1 | 3 |
두 열의 데카르트 곱
두 열을 확장하는 카티전 곱을 가져오려면 다음 열을 차례로 확장합니다.
datatable (a: int, b: dynamic, c: dynamic)
[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 6])
]
| mv-expand b
| mv-expand c
출력
a | b | c |
---|---|---|
1 | { "prop1": "a"} | 5 |
1 | { "prop1": "a"} | 6 |
1 | { "prop2": "b"} | 5 |
1 | { "prop2": "b"} | 6 |
출력 변환
mv-expand의 출력을 특정 형식(기본값: 동적)으로 강제하려면 to typeof
를 사용합니다.
datatable (a: string, b: dynamic, c: dynamic)[
"Constant", dynamic([1, 2, 3, 4]), dynamic([6, 7, 8, 9])
]
| mv-expand b, c to typeof(int)
| getschema
출력
ColumnName | ColumnOrdinal | DateType | ColumnType |
---|---|---|---|
a | 0 | System.String | string |
b | 1 | System.Object | dynamic |
c | 2 | System.Int32 | int |
b
열은 dynamic
으로 반환되고 c
열은 int
로 반환됩니다.
With_itemindex 사용
with_itemindex
를 사용하여 배열 확장:
range x from 1 to 4 step 1
| summarize x = make_list(x)
| mv-expand with_itemindex=Index x
출력
x | 인덱스 |
---|---|
1 | 0 |
2 | 1 |
3 | 2 |
4 | 3 |
관련 콘텐츠
- 자세한 예제는 시간에 따른 라이브 활동의 차트 수를 참조하세요.
- mv-apply 연산자.
- mv-expand 연산자의 반대는 요약 make_list()를 참조하세요.
- 속성 모음 키를 사용하여 동적 JSON 개체를 열로 확장하려면 bag_unpack() 플러그 인을 참조하세요.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기