Mapování Parquet
Mapování Parquet použijte k mapování příchozích dat na sloupce uvnitř tabulek, pokud je zdrojový soubor příjmu dat ve formátu Parquet.
Každý prvek v seznamu mapování definuje mapování pro konkrétní sloupec. Tyto prvky jsou vytvořeny ze tří vlastností: column
, datatype
a properties
. Další informace najdete v přehledu mapování dat.
Každý element mapování Parquet musí obsahovat některou z následujících volitelných vlastností:
Vlastnost | Typ | Description |
---|---|---|
Pole | string |
Název pole v záznamu Parquet. |
Cesta | string |
Pokud hodnota začíná $ , interpretuje se jako cesta k poli v dokumentu Parquet, které se stane obsahem sloupce v tabulce. Cesta, která označuje celý záznam Parquet, je $ . Pokud hodnota nezačíná $ na , interpretuje se jako konstantní hodnota. Cesty, které obsahují speciální znaky, by měly být uchycené jako ['Název vlastnosti']. Další informace najdete v tématu Syntaxe JSONPath. |
ConstValue | string |
Konstantní hodnota, která se má použít pro sloupec místo hodnoty uvnitř souboru Parquet. |
Transformace | string |
Transformace, která by se měla použít u obsahu s mapováním transformací. |
Poznámka
Pole a cesta se vzájemně vylučují.
Následující alternativy jsou ekvivalentní:
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Důležité
Pro příjem dat ve frontě:
- Pokud tabulka odkazovaná v mapování v databázi neexistuje, vytvoří se automaticky s ohledem na to, že jsou pro všechny sloupce zadané platné datové typy.
- Pokud sloupec odkazovaný v mapování v tabulce neexistuje, přidá se automaticky do tabulky jako poslední sloupec při prvním ingestování dat pro tento sloupec, pokud je pro sloupec zadaný platný datový typ. Pokud chcete do mapování přidat nové sloupce, použijte příkaz .alter ingestion mapping.
- Data jsou dávková pomocí vlastností příjmu dat. Čím více odlišných vlastností mapování příjmu dat se používá, například různé hodnoty ConstValue, tím více se příjem dat bude fragmentovat, což může vést ke snížení výkonu.
Převody typů Parquet
Komplexní podpora pro převod datových typů při ingestování nebo dotazování dat ze zdroje Parquet.
Následující tabulka obsahuje mapování typů polí Parquet a typů sloupců tabulky, na které se dají převést. První sloupec obsahuje typ Parquet a ostatní typy sloupců tabulky, na které se dají převést.
Poznámka
Pro typy Parquest DECIMAL je fyzický typ zadán v závorkách následujícím způsobem:
- I32: INT32 (32bitové celé číslo)
- I64: INT64 (64bitové celé číslo)
- FLBA: Pole bajtů s pevnou délkou
- BA: Bajtové pole
Typ Parquet | bool | int | long | real | decimal | datetime | timespan | řetězec | guid | dynamic |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESETINNÉ ČÍSLO (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESETINNÉ ČÍSLO (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
ČASOVÉ RAZÍTKO | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE (Datum) | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
ŘETĚZEC | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
SEZNAMU | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAPU | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Příklady
[
{"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": "$"}}
]
Mapování uvedené výše se serializuje jako řetězec JSON, pokud je k dispozici jako součást .ingest
příkazu pro správu.
.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\']"}},
]
```
)
Předem vytvořené mapování
Když je mapování předem vytvořené, odkazujte na mapování podle názvu v příkazu pro .ingest
správu.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Mapování identit
Použití mapování Parquet během příjmu dat bez definování schématu mapování (viz mapování identit).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro