다음을 통해 공유


bag_unpack 플러그 인

플러그 인은 bag_unpack 각 속성 모음 최상위 슬롯을 열로 처리하여 형식 dynamic의 단일 열의 압축을 풉니다. 플러그 인은 연산자를 사용하여 호출됩니다 evaluate .

Syntax

T|evaluatebag_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_unpackT(테이블 형식 입력)만큼의 레코드가 있는 테이블을 반환합니다. 테이블의 스키마는 다음과 같이 수정된 테이블 형식 입력의 스키마와 동일합니다.

  • 지정된 입력 열()이 제거됩니다.
  • 스키마는 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