Sdílet prostřednictvím


Mapování Parquet

Platí pro: ✅Microsoft FabricAzure Data Explorer

Mapování Parquet slouží 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 určitý sloupec. Tyto prvky jsou tvořeny ze tří vlastností: column, datatypea properties. Další informace najdete v přehledu mapování dat.

Každý element mapování Parquet musí obsahovat jednu z následujících volitelných vlastností:

Vlastnost Type Popis
Pole string Název pole v záznamu Parquet.
Cesta string Pokud se hodnota začne $ interpretovat 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 ní, je interpretována jako konstantní hodnota. Cesty, které obsahují speciální znaky, by měly být uchycené jako ['Název vlastnosti']. Další informace najdete v syntaxi 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 transformacemi mapování

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é

Příjem dat ve frontě:

  • Pokud tabulka odkazovaná v mapování v databázi neexistuje, vytvoří se automaticky vzhledem k tomu, že platné datové typy jsou zadány pro všechny sloupce.
  • 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, protože je pro sloupec zadaný platný datový typ. Pokud chcete do mapování přidat nové sloupce, použijte příkaz .alter ingestion mapping.
  • Data se dávková pomocí vlastností příjmu dat. Čím více jedinečných vlastností mapování příjmu dat, jako jsou různé hodnoty ConstValue, tím více fragmentovaný příjem dat se stane, což může vést ke snížení výkonu.

Převody typů Parquet

Komplexní podpora je poskytována 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 typy sloupců tabulky, na které lze převést. První sloupec uvádí typ Parquet a ostatní zobrazují typy sloupců tabulky, na které se dají převést.

Poznámka:

U typů 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 s pevnou délkou bajtu
  • BA: Bajtová matice
Typ Parquet bool int long real decimal datetime timespan string guid dynamic
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEOVSKÝ ✔️ ✔️ ✔️
DECIMAL (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (FLBA) ✔️ ✔️ ✔️ ✔️
DECIMAL (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
ČASOVÉ RAZÍTKO ✔️ ✔️
DATE ✔️ ✔️
STRING ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UUID ✔️ ✔️
JSON ✔️ ✔️
SEZNAM ✔️
MAPA ✔️
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": "$"}}
]

Výše uvedené mapování je serializováno 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í

Při předběžném vytvoření mapování namapujte podle názvu v .ingest příkazu pro správu.

.ingest into Table123 (@"source1", @"source2")
  with
  (
      format="parquet",
      ingestionMappingReference = "Mapping_Name"
  )

Mapování identit

Mapování Parquet můžete použít během příjmu dat bez definování schématu mapování (viz mapování identit).

.ingest into Table123 (@"source1", @"source2")
  with
  (
    format="parquet"
  )