다음을 통해 공유


JSON 매핑

적용 대상: ✅Microsoft Fabric✅Azure Data Explorer

수집 원본 파일이 JSON 형식인 경우 JSON 매핑을 사용하여 들어오는 데이터를 테이블 내의 열에 매핑합니다.

매핑 목록의 각 요소는 특정 열에 대한 매핑을 정의합니다. 이러한 요소는 세 가지 column속성인 , datatypeproperties.에서 생성됩니다. 데이터 매핑 개요대해 자세히 알아봅니다.

각 JSON 매핑 요소에는 다음 선택적 속성 중 하나가 포함되어야 합니다.

속성 Type 설명
Path string 값으로 시작하는 $ 경우 테이블의 열 내용이 될 JSON 문서의 필드에 대한 JSON 경로로 해석됩니다. 전체 문서를 나타내는 JSON 경로는 .입니다 $. 값이 시작 $ 되지 않으면 상수 값으로 해석됩니다. 특수 문자를 포함하는 JSON 경로는 ['속성 이름']으로 이스케이프되어야 합니다. 자세한 내용은 JSONPath 구문을 참조하세요.
ConstValue string JSON 파일 내의 일부 값 대신 열에 사용할 상수 값입니다.
변환 string 매핑 변환을 사용하여 콘텐츠 에 적용해야 하는 변환입니다.

Important

대기 중인 수집의 경우:

  • 매핑에서 참조되는 테이블이 데이터베이스에 없는 경우 모든 열에 대해 유효한 데이터 형식이 지정되어 있으면 자동으로 만들어집니다.
  • 매핑에서 참조되는 열이 테이블에 없는 경우 열에 대해 유효한 데이터 형식이 지정된 경우 해당 열에 대한 데이터를 처음 수집할 때 마지막 열로 테이블에 자동으로 추가됩니다. 매핑에 새 열을 추가하려면 .alter 수집 매핑 명령을 사용합니다.
  • 데이터는 수집 속성을 사용하여 일괄 처리됩니다. 다른 ConstValue 값과 같이 사용되는 고유 수집 매핑 속성이 많을수록 수집이 조각화되어 성능이 저하될 수 있습니다.

예제

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "source_uri",      "Properties": {"Transform": "SourceLocation"}},
  {"Column": "source_line",     "Properties": {"Transform": "SourceLineNumber"}},
  {"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 = "json",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
        {"Column": "column_b", "Properties": {"Path": "$.Property"}},
        {"Column": "custom_column", "Properties": {"Path": "$.[\'Property name with space\']"}}
      ]
      ```
  )

미리 만든 매핑

매핑이 미리 만들어지면 관리 명령에서 이름으로 매핑을 .ingest 참조합니다.

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json",
        ingestionMappingReference = "Mapping_Name"
    )

ID 매핑

매핑 스키마를 정의하지 않고 수집하는 동안 JSON 매핑을 사용합니다(ID 매핑 참조).

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="json"
    )

JSON 매핑 복사

다음 프로세스를 사용하여 기존 테이블의 JSON 매핑을 복사하고 동일한 매핑으로 새 테이블을 만들 수 있습니다.

  1. 복사하려는 매핑이 있는 테이블에서 다음 명령을 실행합니다.

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. 위의 명령의 출력을 사용하여 동일한 매핑을 사용하여 새 테이블을 만듭니다.

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD