다음을 통해 공유


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