Dela via


Parquet-mappning

Använd Parquet-mappning för att mappa inkommande data till kolumner i tabeller när källfilen för inmatning är i Parquet-format.

Varje element i mappningslistan definierar mappningen för en specifik kolumn. Dessa element konstrueras från tre egenskaper: column, datatypeoch properties. Läs mer i översikten över datamappningar.

Varje Parquet-mappningselement måste innehålla någon av följande valfria egenskaper:

Egenskap Typ Description
Fält string Namnet på fältet i Parquet-posten.
Sökväg string Om värdet börjar med $ tolkas det som sökvägen till fältet i Parquet-dokumentet som blir innehållet i kolumnen i tabellen. Sökvägen som anger hela Parquet-posten är $. Om värdet inte börjar med $ tolkas det som ett konstant värde. Sökvägar som innehåller specialtecken bör vara undantagna som ['Egenskapsnamn']. Mer information finns i JSONPath-syntax.
ConstValue string Det konstanta värde som ska användas för en kolumn i stället för något värde i Parquet-filen.
Transformering string Transformering som ska tillämpas på innehållet med mappningstransformeringar.

Anteckning

Fält och sökväg utesluter varandra.

Följande alternativ är likvärdiga:

[
  {"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
  {"Column": "event_name", "Properties": {"Field": "EventName"}}
]

Viktigt

För köad inmatning:

  • Om tabellen som refereras i mappningen inte finns i databasen skapas den automatiskt, med tanke på att giltiga datatyper har angetts för alla kolumner.
  • Om en kolumn som refereras i mappningen inte finns i tabellen läggs den automatiskt till i tabellen som den sista kolumnen första gången data matas in för den kolumnen, givet att en giltig datatyp har angetts för kolumnen. Om du vill lägga till nya kolumner i en mappning använder du kommandot .alter ingestion mapping.
  • Data batchas med hjälp av inmatningsegenskaper. Ju mer distinkta egenskaper för inmatningsmappning som används, till exempel olika ConstValue-värden, desto mer fragmenterad blir inmatningen, vilket kan leda till prestandaförsämring.

Parquet-typkonverteringar

Omfattande stöd ges för att konvertera datatyper när du matar in eller frågar efter data från en Parquet-källa.

Följande tabell innehåller en mappning av Parquet-fälttyper och de tabellkolumntyper som de kan konverteras till. Den första kolumnen visar Parquet-typen och de andra visar de tabellkolumntyper som de kan konverteras till.

Anteckning

För Parquest DECIMAL-typer anges den fysiska typen inom parentes, enligt följande:

  • I32: INT32 (32-bitars heltal)
  • I64: INT64 (64-bitars heltal)
  • FLBA: Bytematris med fast längd
  • BA: Bytematris
Parquet-typ boolesk int long real decimal datetime tidsintervall sträng guid dynamisk
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEAN ✔️ ✔️ ✔️
DECIMAL (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (FLBA) ✔️ ✔️ ✔️ ✔️
DECIMAL (BA) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
TIMESTAMP ✔️ ✔️
DATE ✔️ ✔️
STRÄNG ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UUID ✔️ ✔️
JSON ✔️ ✔️
LISTA ✔️
KARTA ✔️
STRUCT ✔️

Exempel

[
  {"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": "$"}}
]

Mappningen ovan serialiseras som en JSON-sträng när den tillhandahålls som en del av .ingest hanteringskommandot.

.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\']"}},
    ]
    ```
  )

Förskapad mappning

När mappningen har skapats i förväg refererar du till mappningen efter namn i hanteringskommandot .ingest .

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

Identitetsmappning

Använd Parquet-mappning under inmatning utan att definiera ett mappningsschema (se identitetsmappning).

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