Сопоставление AVRO
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Сопоставление AVRO позволяет сопоставить входящие данные со столбцами в таблицах, когда исходный файл приема находится в формате AVRO.
Каждый элемент в списке сопоставлений определяет сопоставление для определенного столбца. Эти элементы создаются из трех свойств: column
, datatype
и properties
. Дополнительные сведения см. в обзоре сопоставлений данных.
Каждый элемент сопоставления AVRO должен содержать любой из следующих необязательных свойств:
Свойство | Type | Описание |
---|---|---|
Поле | string |
Имя поля в записи AVRO. |
Путь | string |
Если значение начинается с $ его интерпретации как путь к полю в документе AVRO, который станет содержимым столбца в таблице. Путь, обозначающий всю запись $ AVRO. Если значение не начинается с его интерпретации как $ константное значение. Пути, содержащие специальные символы, должны быть экранированы как ['Имя свойства']. Дополнительные сведения см. в статье Синтаксис JSONPath. |
ConstValue | string |
Константное значение, которое будет использоваться для столбца вместо некоторого значения внутри AVRO-файла. |
Преобразование | string |
Преобразование, которое должно применяться к содержимому с преобразованиями сопоставления. |
Примечание.
Поле и путь являются взаимоисключающими.
Ниже приведены эквивалентные варианты.
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Внимание
Для приема в очереди:
- Если таблица, указанная в сопоставлении, не существует в базе данных, она создается автоматически, учитывая, что допустимые типы данных указаны для всех столбцов.
- Если столбец, на который ссылается сопоставление, не существует в таблице, он автоматически добавляется в таблицу в качестве последнего столбца при первом приеме данных для этого столбца, если для этого столбца указан допустимый тип данных. Чтобы добавить новые столбцы в сопоставление, используйте команду сопоставления .alter ingestion.
- Данные пакетируются с помощью свойств приема. Чем больше уникальных свойств сопоставления приема, таких как различные значения ConstValue, тем больше фрагментировано прием становится, что может привести к снижению производительности.
Примеры
[
{"Column": "event_timestamp", "Properties": {"Field": "Timestamp"}},
{"Column": "event_name", "Properties": {"Field": "Name"}},
{"Column": "event_type", "Properties": {"Field": "Type"}},
{"Column": "event_time", "Properties": {"Field": "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 = "AVRO",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Field": "Field1"}},
{"Column": "column_b", "Properties": {"Field": "$.[\'Field name with space\']"}}
]
```
)
Предварительно созданное сопоставление
При предварительном создании сопоставления сослаться на сопоставление по имени в команде .ingest
управления.
.ingest into Table123 (@"source1", @"source2")
with
(
format="AVRO",
ingestionMappingReference = "Mapping_Name"
)
Сопоставление удостоверений
Используйте сопоставление AVRO во время приема без определения схемы сопоставления (см . сопоставление удостоверений).
.ingest into Table123 (@"source1", @"source2")
with
(
format="AVRO"
)