bag_unpack 플러그 인
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
플러그 인은 bag_unpack
각 속성 모음 최상위 슬롯을 열로 처리하여 단일 형식 dynamic
열의 압축을 풉니다. 플러그 인은 연산자를 사용하여 호출됩니다 evaluate
.
구문
T |
bag_unpack(
evaluate
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
구문 규칙에 대해 자세히 알아봅니다.
매개 변수
이름 | Type | 필수 | 설명 |
---|---|---|---|
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 접두사로 사용되는 모든 슬롯 이름은 유효한 엔터티 이름이어야 하며 식별자 명명 규칙을 따라야 합니다.
Null 값은 무시됩니다.
예제
가방 확장
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
출력
나이 | 속성 |
---|---|
20 | John |
40 | Dave |
30 | 재 스민 |
OutputColumnPrefix를 사용하여 모음 확장
모음을 확장하고 'Property_' 접두사로 시작하는 열 이름을 생성하는 옵션을 사용합니다 OutputColumnPrefix
.
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 | 재 스민 |
columnsConflict를 사용하여 모음 확장
모음을 확장하고 이 columnsConflict
옵션을 사용하여 연산자가 생성 bag_unpack()
한 기존 열과 열 간의 충돌을 해결합니다.
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
출력
나이 | 속성 |
---|---|
20 | John |
40 | Dave |
30 | 재 스민 |
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
출력
나이 | 속성 |
---|---|
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']))
출력
속성 |
---|
John |
Dave |
재 스민 |
쿼리 정의 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)
출력
속성 | 나이 |
---|---|
John | 20 |
Dave | 40 |
재 스민 | 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)
출력
설명 | 이름 | 나이 |
---|---|---|
학생 | John | 20 |
교사 | Dave | 40 |
학생 | 재 스민 | 30 |