적용 대상: ✅Microsoft Fabric✅Azure Data Explorer
수집 매핑은 수집하는 동안 테이블 내의 열에 들어오는 데이터를 매핑하는 데 사용됩니다.
데이터 탐색기는 행 지향(CSV, JSON, AVRO 및 W3CLOGFILE) 및 열 지향(Parquet 및 ORC) 등 다양한 유형의 매핑을 지원합니다.
수집 매핑은 수집 명령에서 정의하거나 ingestionMappingReference 매개 변수를 사용하여 수집 명령에서 미리 생성된 참조할 수 있습니다. 매핑을 지정하지 않고도 수집이 가능합니다. 자세한 내용은 ID 매핑을 참조 하세요.
매핑 목록의 각 요소는 다음 세 개의 필드에서 생성됩니다.
| 속성 | 필수 | 설명 |
|---|---|---|
| Column | ✔️ | 테이블의 대상 열 이름입니다. |
| Datatype | 매핑된 열이 테이블에 없는 경우 매핑된 열을 만들 데이터 형식입니다. | |
| 속성 | 각 특정 매핑 유형 페이지에 설명된 대로 각 매핑에 특정한 속성을 포함하는 속성 모음입니다. |
Important
대기 중인 수집의 경우:
- 매핑에서 참조되는 테이블이 데이터베이스에 없는 경우 모든 열에 대해 유효한 데이터 형식이 지정되어 있으면 자동으로 만들어집니다.
- 매핑에서 참조되는 열이 테이블에 없는 경우 열에 대해 유효한 데이터 형식이 지정된 경우 해당 열에 대한 데이터를 처음 수집할 때 마지막 열로 테이블에 자동으로 추가됩니다. 매핑에 새 열을 추가하려면 .alter 수집 매핑 명령을 사용합니다.
- 데이터는 수집 속성을 사용하여 일괄 처리됩니다. 다른 ConstValue 값과 같이 사용되는 고유 수집 매핑 속성이 많을수록 수집이 조각화되어 성능이 저하될 수 있습니다.
지원되는 매핑 형식
다음 표에서는 특정 형식의 외부 데이터를 수집하거나 쿼리할 때 사용할 매핑 형식을 정의합니다.
| 데이터 형식 | 매핑 유형 |
|---|---|
| CSV | CSV 매핑 |
| TSV | CSV 매핑 |
| TSVe | CSV 매핑 |
| PSV | CSV 매핑 |
| SCSV | CSV 매핑 |
| SOHsv | CSV 매핑 |
| TXT | CSV 매핑 |
| RAW | CSV 매핑 |
| JSON | JSON 매핑 |
| AVRO | AVRO 매핑 |
| APACHEAVRO | AVRO 매핑 |
| Parquet | Parquet 매핑 |
| ORC | ORC 매핑 |
| W3CLOGFILE | W3CLOGFILE 매핑 |
수집 매핑 예제
다음 예제에서는 다음 스키마와 함께 RawEvents 테이블을 사용합니다.
.create table RawEvents (timestamp: datetime, deviceId: guid, messageId: guid, temperature: decimal, humidity: decimal)
간단한 매핑
다음 예제에서는 수집 명령에서 매핑이 정의되는 수집을 보여줍니다. 이 명령은 URL에서 RawEvents 테이블로 JSON 파일을 수집합니다. 매핑은 JSON 파일의 각 필드에 대한 경로를 지정합니다.
.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json')
with (
format = "json",
ingestionMapping =
```
[
{"column":"timestamp","Properties":{"path":"$.timestamp"}},
{"column":"deviceId","Properties":{"path":"$.deviceId"}},
{"column":"messageId","Properties":{"path":"$.messageId"}},
{"column":"temperature","Properties":{"path":"$.temperature"}},
{"column":"humidity","Properties":{"path":"$.humidity"}}
]
```
)
ingestionMappingReference 사용하여 매핑
미리 생성된 매핑을 사용하여 동일한 JSON 파일을 매핑하려면 다음 명령을 사용하여 RawEventMapping 수집 매핑 참조를 만듭니다.
.create table RawEvents ingestion json mapping 'RawEventMapping'
```
[
{"column":"timestamp","Properties":{"path":"$.timestamp"}},
{"column":"deviceId","Properties":{"path":"$.deviceId"}},
{"column":"messageId","Properties":{"path":"$.messageId"}},
{"column":"temperature","Properties":{"path":"$.temperature"}},
{"column":"humidity","Properties":{"path":"$.humidity"}}
]
```
다음 명령을 사용하여 RawEventMapping 수집 매핑 참조를 사용하여 JSON 파일을 수집합니다.
.ingest into table RawEvents ('https://kustosamplefiles.blob.core.windows.net/jsonsamplefiles/simple.json')
with (
format="json",
ingestionMappingReference="RawEventMapping"
)
ID 매핑
수집은 지정하거나 ingestionMapping 속성을 지정 ingestionMappingReference 하지 않고도 가능합니다. 데이터는 테이블의 스키마에서 파생된 ID 데이터 매핑을 사용하여 매핑됩니다. 테이블 스키마는 동일하게 유지됩니다.
format 속성을 지정해야 합니다. 수집 형식을 참조 하세요.
| 형식 유형 | 형식 | 매핑 논리 |
|---|---|---|
| 구분 기호로 구분된 형식 또는 한 줄 형식과 같이 정의된 열 순서가 있는 테이블 형식 데이터 형식입니다. | CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw | 모든 테이블 열은 데이터 원본에 표시되는 순서대로 해당 순서대로 데이터 열에 매핑됩니다. 열 데이터 형식은 테이블 스키마에서 가져옵니다. |
| 명명된 필드가 있는 명명된 열 또는 레코드가 있는 형식입니다. | JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE | 모든 테이블 열은 이름이 같은 데이터 열 또는 레코드 필드에 매핑됩니다(대/소문자 구분). 열 데이터 형식은 테이블 스키마에서 가져옵니다. |
Warning
테이블 스키마와 데이터 구조(예: 열 또는 필드 데이터 형식, 열 또는 필드 이름 또는 해당 번호)가 일치하지 않으면 데이터가 비어 있거나 잘못된 수집될 수 있습니다.
매핑 변환
일부 데이터 형식 매핑(Parquet, JSON 및 AVRO)은 간단하고 유용한 수집 시간 변환을 지원합니다. 시나리오에서 수집 시 더 복잡한 처리가 필요한 경우 KQL 식을 사용하여 간단한 처리를 정의할 수 있는 업데이트 정책을 사용합니다.
| 경로-의존적 변환 | 설명 | 조건 |
|---|---|---|
| PropertyBagArrayToDictionary | 속성의 JSON 배열(예: {events:[{"n1":"v1"},{"n2":"v2"}]}사전)을 사전으로 변환하고 유효한 JSON 문서(예: JSON 문서)로 {"n1":"v1","n2":"v2"}serialize합니다. |
, JSON및 ParquetAVRO 매핑 형식에 ORC사용할 수 있습니다. |
| SourceLocation | 데이터를 제공한 스토리지 아티팩트의 이름, 문자열을 입력합니다(예: Blob의 "BaseUri" 필드). | , CSV, JSON, ParquetAVRO및 ORC 매핑 형식에 W3CLOGFILE사용할 수 있습니다. |
| SourceLineNumber | 해당 스토리지 아티팩트를 기준으로 오프셋을 지정하고 long을 입력합니다('1'로 시작하고 새 레코드당 증가). | , CSV, JSON, ParquetAVRO및 ORC 매핑 형식에 W3CLOGFILE사용할 수 있습니다. |
| DateTimeFromUnixSeconds | unix-time(1970-01-01 이후 초)을 나타내는 숫자를 UTC 날짜/시간 문자열로 변환합니다. | , CSV, JSONParquet및 AVRO 매핑 형식에 ORC사용할 수 있습니다. |
| DateTimeFromUnixMilliseconds | unix-time(1970-01-01 이후 밀리초)을 나타내는 숫자를 UTC 날짜/시간 문자열로 변환합니다. | , CSV, JSONParquet및 AVRO 매핑 형식에 ORC사용할 수 있습니다. |
| DateTimeFromUnixMicroseconds | unix-time(1970-01-01 이후의 마이크로초)을 나타내는 숫자를 UTC 날짜/시간 문자열로 변환합니다. | , CSV, JSONParquet및 AVRO 매핑 형식에 ORC사용할 수 있습니다. |
| DateTimeFromUnixNanoseconds | unix-time(1970-01-01 이후의 나노초)을 나타내는 숫자를 UTC 날짜/시간 문자열로 변환합니다. | , CSV, JSONParquet및 AVRO 매핑 형식에 ORC사용할 수 있습니다. |
| DropMappedFields | JSON 문서의 개체를 열에 매핑하고 다른 열 매핑에서 이미 참조한 중첩된 필드를 제거합니다. | , JSON및 ParquetAVRO 매핑 형식에 ORC사용할 수 있습니다. |
| BytesAsBase64 | 데이터를 바이트 배열로 처리하고 base64로 인코딩된 문자열로 변환합니다. | 매핑 형식에 AVRO 사용할 수 있습니다. 형식의 경우 ApacheAvro 매핑된 데이터 필드의 스키마 형식은 bytes Avro fixed 형식이어야 합니다. 형식의 경우 Avro 필드는 [0-255] 범위의 바이트 값을 포함하는 배열이어야 합니다.
null 는 데이터가 유효한 바이트 배열을 나타내지 않는 경우 수집됩니다. |
매핑 변환 예제
DropMappedFields 변형:
다음 JSON 콘텐츠가 제공됩니다.
{
"Time": "2012-01-15T10:45",
"Props": {
"EventName": "CustomEvent",
"Revenue": 0.456
}
}
다음 데이터 매핑은 이미 매핑된 열을 제외하는 동안 전체 Props 개체를 동적 열 Props 에 매핑합니다(Props.EventName 이미 열 EventName에 매핑되어 있으므로 제외됨).
[
{ "Column": "Time", "Properties": { "Path": "$.Time" } },
{ "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
{ "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]
수집된 데이터는 다음과 같습니다.
| Time | EventName | 속성 |
|---|---|---|
2012-01-15T10:45 |
CustomEvent |
{"Revenue": 0.456} |
BytesAsBase64 변형
다음 AVRO 파일 콘텐츠가 제공됩니다.
{
"Time": "2012-01-15T10:45",
"Props": {
"id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
}
}
다음 데이터 매핑은 변환 유무에 관계없이 ID 열을 두 번 매핑합니다.
[
{ "Column": "ID", "Properties": { "Path": "$.props.id" } },
{ "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]
수집된 데이터는 다음과 같습니다.
| ID | Base64EncodedId |
|---|---|
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] |
44MiXBxbQUiGigmFMy1oNA== |