Сопоставления приема

Сопоставления приема используются во время приема для сопоставления входящих данных со столбцами внутри таблиц.

Data Explorer поддерживает различные типы сопоставлений, как ориентированных на строки (CSV, JSON, AVRO и W3CLOGFILE), так и на основе столбцов (Parquet и ORC).

Сопоставления приема можно предварительно создать , на которые можно ссылаться из команды приема с помощью ingestionMappingReference параметров. Хотя прием возможен без указания сопоставления. Дополнительные сведения см. в разделе Сопоставление удостоверений.

Каждый элемент в списке сопоставления создается из трех полей:

Свойство Обязательно Описание
Столбец ✔️ Имя целевого столбца в таблице.
Datatype Тип данных, с помощью которого создается сопоставленный столбец, если он еще не существует в таблице.
Свойства Контейнер свойств, содержащий свойства, характерные для каждого сопоставления, как описано на странице каждого конкретного типа сопоставления.

Важно!

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

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

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

Прием возможен без указания ingestionMapping свойств или ingestionMappingReference . Данные будут сопоставлены с помощью сопоставления данных удостоверений, полученных из схемы таблицы. Схема таблицы останется прежней. format необходимо указать свойство . См. форматы приема.

Тип формата Формат Логика сопоставления
Табличные форматы данных с определенным порядком столбцов, например форматы с разделителями или однострочные форматы. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Все столбцы таблицы сопоставляются в соответствующем порядке со столбцами данных в порядке их отображения в источнике данных. Тип данных столбца берется из схемы таблицы.
Форматирует именованные столбцы или записи с именованными полями. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Все столбцы таблицы сопоставляются со столбцами данных или полями записей с одинаковыми именами (с учетом регистра). Тип данных столбца берется из схемы таблицы.

Предупреждение

Любое несоответствие схемы таблицы и структуры данных, таких как типы данных столбцов или полей, имена столбцов или полей или их число, может привести к получению пустых или неправильных данных.

Преобразования сопоставлений

Некоторые сопоставления форматов данных (Parquet, JSON и AVRO) поддерживают простые и полезные преобразования времени приема. Если сценарий требует более сложной обработки во время приема, используйте политику обновления, которая позволяет определять упрощенную обработку с помощью выражения KQL.

Преобразование с зависимостью от пути Описание Условия
PropertyBagArrayToDictionary Преобразует массив свойств JSON, например {events:[{"n1":"v1"},{"n2":"v2"}]}, в словарь и сериализует его в допустимый документ JSON, например {"n1":"v1","n2":"v2"}. Доступно для JSONтипов сопоставления , Parquetи AVROORC .
SourceLocation Имя артефакта хранилища, который предоставил данные, введите строку (например, поле BaseUri большого двоичного объекта). Доступно для CSVтипов сопоставления , JSON, Parquet, AVROи ORCW3CLOGFILE .
SourceLineNumber Смещение относительно этого артефакта хранилища, тип long (начиная с "1" и увеличивается для каждой новой записи). Доступно в типах JSONсопоставления , Parquet, AVROи ORCW3CLOGFILE .
DateTimeFromUnixSeconds; Преобразует число, представляющее unix-время (секунды с 1970-01-01) в строку даты и времени в формате UTC. Доступно для JSONтипов сопоставления , Parquetи AVROORC .
DateTimeFromUnixMilliseconds; Преобразует число, представляющее unix-время (миллисекунды с 1970-01-01), в строку даты и времени в формате UTC. Доступно для JSONтипов сопоставления , Parquetи AVROORC .
DateTimeFromUnixMicroseconds; Преобразует число, представляющее unix-время (микросекунд с 1970-01-01), в строку даты и времени UTC. Доступно для JSONтипов сопоставления , ParquetAVRO и ORC .
DateTimeFromUnixNanoseconds. Преобразует число, представляющее unix-время (наносекунды с 1970-01-01) в строку даты и времени в формате UTC. Доступно для JSONтипов сопоставления , ParquetAVRO и ORC .
DropMappedFields Сопоставляет объект в документе JSON со столбцом и удаляет все вложенные поля, на которые уже ссылаются другие сопоставления столбцов. Доступно для JSONтипов сопоставления , ParquetAVRO и ORC .
BytesAsBase64 Обрабатывает данные как массив байтов и преобразует их в строку в кодировке base64. Доступно для AVRO типа сопоставления. Для ApacheAvro формата тип схемы сопоставленного поля данных должен быть bytes или fixed Тип Avro. Для 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" } },
]

Данные, которые были в приеме, выглядят следующим образом:

Идентификатор Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==