Mapping Parquet
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati
Usare il mapping Parquet per eseguire il mapping dei dati in ingresso alle colonne all'interno di tabelle quando il file di origine di inserimento è in formato Parquet.
Ogni elemento nell'elenco di mapping definisce il mapping per una colonna specifica. Questi elementi vengono costruiti da tre proprietà: column
, datatype
e properties
. Altre informazioni sono disponibili nella panoramica dei mapping dei dati.
Ogni elemento di mapping Parquet deve contenere una delle proprietà facoltative seguenti:
Proprietà | Type | Descrizione |
---|---|---|
Campo | string |
Nome del campo nel record Parquet. |
Percorso | string |
Se il valore inizia con $ viene interpretato come percorso del campo nel documento Parquet che diventerà il contenuto della colonna nella tabella. Il percorso che indica l'intero record Parquet è $ . Se il valore non inizia con $ viene interpretato come valore costante. I percorsi che includono caratteri speciali devono essere preceduti da caratteri di escape come ['Nome proprietà']. Per altre informazioni, vedere sintassi JSONPath. |
ConstValue | string |
Valore costante da usare per una colonna invece di un valore all'interno del file Parquet. |
Trasformazione | string |
Trasformazione che deve essere applicata al contenuto con trasformazioni di mapping. |
Nota
Field e Path si escludono a vicenda.
Le alternative seguenti sono equivalenti:
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Importante
Per l'inserimento in coda:
- Se la tabella a cui viene fatto riferimento nel mapping non esiste nel database, viene creata automaticamente, dato che per tutte le colonne vengono specificati tipi di dati validi.
- Se una colonna a cui si fa riferimento nel mapping non esiste nella tabella, viene aggiunta automaticamente alla tabella come ultima colonna alla prima inserimento dei dati per tale colonna, dato che per la colonna viene specificato un tipo di dati valido. Per aggiungere nuove colonne a un mapping, usare il comando di mapping dell'inserimento con estensione alter.
- I dati vengono inseriti in batch usando le proprietà di inserimento. Le proprietà di mapping di inserimento più distinte usate, ad esempio valori ConstValue diversi, diventano più frammentate l'inserimento, il che può causare una riduzione delle prestazioni.
Conversioni dei tipi Parquet
Il supporto completo viene fornito per la conversione dei tipi di dati durante l'inserimento o l'esecuzione di query sui dati da un'origine Parquet.
La tabella seguente fornisce un mapping dei tipi di campo Parquet e i tipi di colonna di tabella in cui possono essere convertiti. La prima colonna elenca il tipo Parquet e le altre mostrano i tipi di colonna della tabella in cui possono essere convertiti.
Nota
Per i tipi DECIMALst Diost, il tipo fisico viene specificato tra parentesi, come indicato di seguito:
- I32: INT32 (intero a 32 bit)
- I64: INT64 (intero a 64 bit)
- FLBA: matrice di byte a lunghezza fissa
- BA: Matrice di byte
Tipo Parquet | bool | int | long | real | decimale | datetime | timespan | string | guid | dynamic |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
TIMESTAMP | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
INSERZIONE | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Esempi
[
{"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": "$"}}
]
Il mapping precedente viene serializzato come stringa JSON quando viene fornito come parte del .ingest
comando di gestione.
.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\']"}},
]
```
)
Mapping già creato
Quando il mapping viene creato in modo preliminare, fare riferimento al mapping in base al .ingest
nome nel comando di gestione.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Mapping di identità
Usare il mapping Parquet durante l'inserimento senza definire uno schema di mapping (vedere Mapping delle identità).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)