Сопоставление Parquet
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Используйте сопоставление Parquet, чтобы сопоставить входящие данные со столбцами в таблицах, когда исходный файл приема находится в формате Parquet.
Каждый элемент в списке сопоставлений определяет сопоставление для определенного столбца. Эти элементы создаются из трех свойств: column
, datatype
и properties
. Дополнительные сведения см. в обзоре сопоставлений данных.
Каждый элемент сопоставления Parquet должен содержать любой из следующих необязательных свойств:
Свойство | Type | Описание |
---|---|---|
Поле | string |
Имя поля в записи Parquet. |
Путь | string |
Если значение начинается с $ его интерпретации как путь к полю в документе Parquet, который станет содержимым столбца в таблице. Путь, обозначающий всю запись Parquet, — это $ . Если значение не начинается с его интерпретации как $ константное значение. Пути, содержащие специальные символы, должны быть экранированы как ['Имя свойства']. Дополнительные сведения см. в статье Синтаксис JSONPath. |
ConstValue | string |
Константное значение, используемое для столбца, а не некоторое значение внутри файла Parquet. |
Преобразование | string |
Преобразование, которое должно применяться к содержимому с преобразованиями сопоставления. |
Примечание.
Поле и путь являются взаимоисключающими.
Ниже приведены эквивалентные варианты.
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Внимание
Для приема в очереди:
- Если таблица, указанная в сопоставлении, не существует в базе данных, она создается автоматически, учитывая, что допустимые типы данных указаны для всех столбцов.
- Если столбец, на который ссылается сопоставление, не существует в таблице, он автоматически добавляется в таблицу в качестве последнего столбца при первом приеме данных для этого столбца, если для этого столбца указан допустимый тип данных. Чтобы добавить новые столбцы в сопоставление, используйте команду сопоставления .alter ingestion.
- Данные пакетируются с помощью свойств приема. Чем больше уникальных свойств сопоставления приема, таких как различные значения ConstValue, тем больше фрагментировано прием становится, что может привести к снижению производительности.
Преобразования типов Parquet
Полная поддержка предоставляется для преобразования типов данных при приеме или запросе данных из источника Parquet.
В следующей таблице представлено сопоставление типов полей Parquet и типов столбцов таблицы, в которые их можно преобразовать. Первый столбец содержит тип Parquet, а другие — типы столбцов таблицы, в которые их можно преобразовать.
Примечание.
Для типов Parquest DECIMAL физический тип указывается в скобках следующим образом:
- I32: INT32 (32-разрядное целое число)
- I64: INT64 (64-разрядное целое число)
- FLBA: массив байтов фиксированной длины
- BA: массив байтов
Тип Parquet | bool | INT | длинный | real | десятичное | datetime | timespan | строка | guid | по строкам |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
ДЕСЯТИЧНЫЙ (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
ДЕСЯТИЧНЫЙ (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
ДЕСЯТИЧНЫЙ (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
TIMESTAMP | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
LIST | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Примеры
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"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 = "parquet",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
{"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
]
```
)
Предварительно созданное сопоставление
При предварительном создании сопоставления сослаться на сопоставление по имени в команде .ingest
управления.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Сопоставление удостоверений
Используйте сопоставление Parquet во время приема без определения схемы сопоставления (см . сопоставление удостоверений).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)