Parquet 매핑
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
Parquet 매핑을 사용하여 수집 원본 파일이 Parquet 형식인 경우 들어오는 데이터를 테이블 내의 열에 매핑합니다.
매핑 목록의 각 요소는 특정 열에 대한 매핑을 정의합니다. 이러한 요소는 세 가지 column
속성인 , datatype
및 properties
.에서 생성됩니다. 데이터 매핑 개요에 대해 자세히 알아봅니다.
각 Parquet 매핑 요소에는 다음 선택적 속성 중 하나가 포함되어야 합니다.
속성 | Type | 설명 |
---|---|---|
필드 | string |
Parquet 레코드의 필드 이름입니다. |
Path | string |
값이 시작 $ 되면 테이블의 열 내용이 될 Parquet 문서의 필드 경로로 해석됩니다. 전체 Parquet 레코드를 나타내는 경로는 .입니다 $ . 값이 시작 $ 되지 않으면 상수 값으로 해석됩니다. 특수 문자를 포함하는 경로는 ['속성 이름']으로 이스케이프되어야 합니다. 자세한 내용은 JSONPath 구문을 참조하세요. |
ConstValue | string |
Parquet 파일 내의 일부 값 대신 열에 사용할 상수 값입니다. |
변환 | string |
매핑 변환을 사용하여 콘텐츠 에 적용해야 하는 변환입니다. |
참고 항목
필드와 경로는 함께 사용할 수 없습니다.
다음 대안은 동일합니다.
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Important
대기 중인 수집의 경우:
- 매핑에서 참조되는 테이블이 데이터베이스에 없는 경우 모든 열에 대해 유효한 데이터 형식이 지정되어 있으면 자동으로 만들어집니다.
- 매핑에서 참조되는 열이 테이블에 없는 경우 열에 대해 유효한 데이터 형식이 지정된 경우 해당 열에 대한 데이터를 처음 수집할 때 마지막 열로 테이블에 자동으로 추가됩니다. 매핑에 새 열을 추가하려면 .alter 수집 매핑 명령을 사용합니다.
- 데이터는 수집 속성을 사용하여 일괄 처리됩니다. 다른 ConstValue 값과 같이 사용되는 고유 수집 매핑 속성이 많을수록 수집이 조각화되어 성능이 저하될 수 있습니다.
Parquet 형식 변환
Parquet 원본에서 데이터를 수집하거나 쿼리할 때 데이터 형식을 변환하기 위한 포괄적인 지원이 제공됩니다.
다음 표에서는 Parquet 필드 형식과 변환할 수 있는 테이블 열 형식의 매핑을 제공합니다. 첫 번째 열에는 Parquet 형식이 나열되고 다른 열에는 변환할 수 있는 테이블 열 형식이 표시됩니다.
참고 항목
Parquest DECIMAL 형식의 경우 물리적 형식은 다음과 같이 괄호로 지정됩니다.
- I32: INT32(32비트 정수)
- I64: INT64(64비트 정수)
- FLBA: 고정 길이 바이트 배열
- BA: 바이트 배열
Parquet 형식 | bool | int | long | real | decimal | 날짜/시간 | timespan | string | guid | dynamic |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL(I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL(I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL(FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL(BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
TIMESTAMP | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
범용 고유 식별자 (UUID) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
명단 등록 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
예제
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"Column": "event_time", "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
{"Column": "full_record", "Properties": {"Path": "$"}}
]
위의 매핑은 관리 명령의 .ingest
일부로 제공되는 경우 JSON 문자열로 직렬화됩니다.
.ingest into Table123 (@"source1", @"source2")
with
(
format = "parquet",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
{"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
]
```
)
미리 만든 매핑
매핑이 미리 만들어지면 관리 명령에서 이름으로 매핑을 .ingest
참조합니다.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
ID 매핑
매핑 스키마를 정의하지 않고 수집 중에 Parquet 매핑을 사용합니다(ID 매핑 참조).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)