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


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

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

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

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

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

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

Внимание

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

  • Если таблица, указанная в сопоставлении, не существует в базе данных, она создается автоматически, учитывая, что допустимые типы данных указаны для всех столбцов.
  • Если столбец, на который ссылается сопоставление, не существует в таблице, он автоматически добавляется в таблицу в качестве последнего столбца при первом приеме данных для этого столбца, если для этого столбца указан допустимый тип данных. Чтобы добавить новые столбцы в сопоставление, используйте команду сопоставления .alter ingestion.
  • Данные пакетируются с помощью свойств приема. Чем больше уникальных свойств сопоставления приема, таких как различные значения ConstValue, тем больше фрагментировано прием становится, что может привести к снижению производительности.

Поддерживаемые типы сопоставлений

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

Формат данных Тип сопоставления
CSV Сопоставление CSV
TSV Сопоставление CSV
TSVe Сопоставление CSV
PSV Сопоставление CSV
SCSV Сопоставление CSV
SOHsv Сопоставление CSV
TXT Сопоставление CSV
НЕОБРАБОТАННЫЕ Сопоставление 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.

Преобразование зависимостей пути Description Условия
PropertyBagArrayToDictionary Преобразует массив свойств JSON, например {events:[{"n1":"v1"},{"n2":"v2"}]}в словарь и сериализует его в допустимый документ JSON, например {"n1":"v1","n2":"v2"}. Доступно для JSONтипов , AVROParquetи ORC сопоставлений.
SourceLocation Имя артефакта хранилища, предоставляющего данные, строку типа (например, поле BaseUri большого двоичного объекта). Доступно для CSVтипов , JSONи AVROParquetORCW3CLOGFILE сопоставлений.
SourceLineNumber Смещение относительно артефакта хранилища, тип long (начиная с "1" и добавок для каждой новой записи). Доступно для CSVтипов , JSONи AVROParquetORCW3CLOGFILE сопоставлений.
DateTimeFromUnixSeconds; Преобразует число, представляющее unix-время (секунды с 1970-01-01) в строку даты и времени UTC. Доступно для JSONтипов , AVROParquetи ORC сопоставлений.
DateTimeFromUnixMilliseconds; Преобразует число, представляющее unix-time (миллисекунда с 1970-01-01) в строку даты и времени UTC. Доступно для JSONтипов , AVROParquetи ORC сопоставлений.
DateTimeFromUnixMicroseconds; Преобразует число, представляющее unix-time (микросекунд с 1970-01-01) в строку datetime в формате UTC. Доступно для JSONтипов , AVROParquetи ORC сопоставлений.
DateTimeFromUnixNanoseconds. Преобразует число, представляющее unix-time (nanoseconds с 1970-01-01) в строку datetime в формате UTC. Доступно для JSONтипов , AVROParquetи ORC сопоставлений.
DropMappedFields Сопоставляет объект в документе JSON с столбцом и удаляет все вложенные поля, на которые уже ссылается другие сопоставления столбцов. Доступно для JSONтипов , AVROParquetи 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" } },
]

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

Время 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]
    }
}

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

[
    { "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==