Сопоставление 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 существующей таблицы и создать новую таблицу с тем же сопоставлением с помощью следующего процесса:
Выполните следующую команду в таблице, сопоставление которой необходимо скопировать:
.show table TABLENAME ingestion json mappings | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'") | project formatted_mapping
Используйте выходные данные приведенной выше команды, чтобы создать новую таблицу с таким же сопоставлением:
.create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD