bag_unpack 플러그 인
플러그 인은 bag_unpack
각 속성 모음 최상위 슬롯을 열로 처리하여 형식 dynamic
의 단일 열의 압축을 풉니다. 플러그 인은 연산자를 사용하여 호출됩니다 evaluate
.
Syntax
T|
evaluate
bag_unpack(
열 [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
구문 규칙에 대해 자세히 알아보세요.
매개 변수
이름 | 형식 | 필수 | 설명 |
---|---|---|---|
T | string |
✔️ | 열의 열을 압축 해제할 테이블 형식 입력입니다. |
열 | dynamic |
✔️ | 압축을 풀 T 의 열입니다. |
OutputColumnPrefix | string |
플러그 인에서 생성된 모든 열에 추가할 공통 접두사입니다. | |
columnsConflict | string |
열 충돌 해결의 방향입니다. 유효한 값은error - 쿼리에서 오류를 생성합니다(기본값).replace_source - 원본 열이 대체됨keep_source - 원본 열이 유지됩니다. |
|
ignoredProperties | dynamic |
무시할 모음 속성의 선택적 집합입니다. } | |
OutputSchema | 플러그 인 출력의 예상 열 bag_unpack 에 대한 이름 및 형식입니다. 예상 스키마를 지정하면 먼저 실제 쿼리를 실행하여 스키마를 탐색할 필요가 없도록 쿼리 실행이 최적화됩니다. 구문 정보는 출력 스키마 구문을 참조하세요. |
출력 스키마 구문
(
Columnname:
ColumnType [,
...] )
입력 테이블의 모든 열을 플러그 인 출력에 추가하려면 다음과 같이 와일드카드 *
를 첫 번째 매개 변수로 사용합니다.
(
*
,
Columnname:
ColumnType [,
...] )
반환
플러그 인은 bag_unpack
T(테이블 형식 입력)만큼의 레코드가 있는 테이블을 반환합니다. 테이블의 스키마는 다음과 같이 수정된 테이블 형식 입력의 스키마와 동일합니다.
- 지정된 입력 열(열)이 제거됩니다.
- 스키마는 T의 최상위 속성 모음 값에 고유한 슬롯이 있는 만큼 많은 열로 확장됩니다. 각 열의 이름은 선택적으로 OutputColumnPrefix 접두사로 지정된 각 슬롯의 이름에 해당합니다. 동일한 슬롯의 모든 값에 동일한 형식이 있는 경우 해당 형식은 슬롯의 형식이거나
dynamic
형식에서 값이 다른 경우 입니다.
참고
OutputSchema를 지정하지 않으면 플러그 인의 출력 스키마는 입력 데이터 값에 따라 달라집니다. 따라서 다른 데이터 입력을 사용하여 플러그 인을 여러 차례 실행하면 다른 출력 스키마가 생성됩니다.
참고
플러그 인에 대한 입력 데이터는 출력 스키마가 테이블 형식 스키마에 대한 모든 규칙을 따르도록 해야 합니다. 특히 다음 사항에 주의하십시오.
출력 열 이름은 테이블 형식 입력 T의 기존 열과 같을 수 없습니다. 단, 압축을 풉니다(열)가 아니면 이름이 같은 두 개의 열이 생성되기 때문에 출력 열 이름은 테이블 형식 입력 T의 기존 열과 같을 수 없습니다.
OutputColumnPrefix 접두사인 모든 슬롯 이름은 유효한 엔터티 이름이어야 하며 식별자 명명 규칙을 따라야 합니다.
예제
가방 확장
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
출력
Age | Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmine |
OutputColumnPrefix를 사용하여 모음 확장
모음을 확장하고 옵션을 사용하여 OutputColumnPrefix
접두사 'Property_'로 시작하는 열 이름을 생성합니다.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
출력
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmine |
columnsConflict를 사용하여 모음 확장
모음을 확장하고 옵션을 사용하여 columnsConflict
연산자가 생성 bag_unpack()
한 기존 열과 열 간의 충돌을 resolve.
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Use new name
출력
Age | Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmine |
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old name
출력
Age | Name |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
ignoredProperties를 사용하여 모음 확장
모음을 확장하고 옵션을 사용하여 ignoredProperties
속성 모음의 특정 속성을 무시합니다.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20, "Address": "Address-1" }),
dynamic({"Name": "Dave", "Age":40, "Address": "Address-2"}),
dynamic({"Name": "Jasmine", "Age":30, "Address": "Address-3"}),
]
// Ignore 'Age' and 'Address' properties
| evaluate bag_unpack(d, ignoredProperties=dynamic(['Address', 'Age']))
출력
Name |
---|
John |
Dave |
Jasmine |
쿼리 정의 OutputSchema를 사용하여 모음 확장
모음을 확장하고 옵션을 사용하여 OutputSchema
실제 쿼리를 실행하기 전에 다양한 최적화를 평가할 수 있습니다.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d) : (Name:string, Age:long)
출력
Name | Age |
---|---|
John | 20 |
Dave | 40 |
Jasmine | 30 |
모음을 확장하고 옵션을 사용하여 OutputSchema
실제 쿼리를 실행하기 전에 다양한 최적화를 평가할 수 있습니다. 와일드카드 *
를 사용하여 입력 테이블의 모든 열을 반환합니다.
datatable(d:dynamic, Description: string)
[
dynamic({"Name": "John", "Age":20}), "Student",
dynamic({"Name": "Dave", "Age":40}), "Teacher",
dynamic({"Name": "Jasmine", "Age":30}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)
출력
Description | Name | Age |
---|---|---|
학생 | John | 20 |
교사 | Dave | 40 |
학생 | Jasmine | 30 |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기