Поделиться через


Сопоставление JSON

Область применения: ✅Microsoft Fabric✅Azure Data Explorer

Используйте сопоставление JSON для сопоставления входящих данных со столбцами внутри таблиц, когда исходный файл приема находится в формате JSON.

Каждый элемент в списке сопоставлений определяет сопоставление для определенного столбца. Эти элементы создаются из трех свойств: column, datatypeи properties. Дополнительные сведения см. в обзоре сопоставлений данных.

Каждый элемент сопоставления JSON должен содержать любой из следующих необязательных свойств:

Свойство Type Описание
Путь string Если значение начинается с $ его интерпретации как путь JSON к полю в документе JSON, который станет содержимым столбца в таблице. Путь JSON, обозначающий весь документ $. Если значение не начинается с его интерпретации как $ константное значение. Пути JSON, содержащие специальные символы, должны быть представлены как ["Имя свойства"]. Дополнительные сведения см. в статье Синтаксис JSONPath.
ConstValue string Константное значение, используемое для столбца, а не для некоторого значения внутри JSON-файла.
Преобразование string Преобразование, которое должно применяться к содержимому с преобразованиями сопоставления.

Внимание

Для приема в очереди:

  • Если таблица, указанная в сопоставлении, не существует в базе данных, она создается автоматически, учитывая, что допустимые типы данных указаны для всех столбцов.
  • Если столбец, на который ссылается сопоставление, не существует в таблице, он автоматически добавляется в таблицу в качестве последнего столбца при первом приеме данных для этого столбца, если для этого столбца указан допустимый тип данных. Чтобы добавить новые столбцы в сопоставление, используйте команду сопоставления .alter ingestion.
  • Данные пакетируются с помощью свойств приема. Чем больше уникальных свойств сопоставления приема, таких как различные значения 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": "$"}}
]

Приведенное выше сопоставление сериализуется как строка JSON, когда она предоставляется в рамках .ingest команды управления.

.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"
    )

Сопоставление удостоверений

Используйте сопоставление JSON во время приема без определения схемы сопоставления (см . сопоставление удостоверений).

.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