Mappage Parquet
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer
Utilisez le mappage Parquet pour mapper les données entrantes aux colonnes à l’intérieur des tables lorsque votre fichier source d’ingestion est au format Parquet.
Chaque élément de la liste de mappage définit le mappage pour une colonne spécifique. Ces éléments sont construits à partir de trois propriétés : column
, datatype
et properties
. En savoir plus dans la vue d’ensemble des mappages de données.
Chaque élément de mappage Parquet doit contenir l’une des propriétés facultatives suivantes :
Propriété | Type | Description |
---|---|---|
Champ | string |
Nom du champ dans l’enregistrement Parquet. |
Chemin d’accès | string |
Si la valeur commence par $ elle est interprétée comme le chemin d’accès au champ dans le document Parquet qui deviendra le contenu de la colonne dans la table. Le chemin qui indique l’intégralité de l’enregistrement Parquet est $ . Si la valeur ne commence pas par $ elle est interprétée comme une valeur constante. Les chemins d’accès qui incluent des caractères spéciaux doivent être échappés en tant que ['Nom de la propriété']. Pour plus d’informations, consultez Syntaxe de JSONPath. |
ConstValue | string |
Valeur constante à utiliser pour une colonne au lieu d’une valeur dans le fichier Parquet. |
Transformation | string |
Transformation qui doit être appliquée au contenu avec des transformations de mappage. |
Remarque
Le champ et le chemin d’accès s’excluent mutuellement.
Les alternatives suivantes sont équivalentes :
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Important
Pour l’ingestion mise en file d’attente :
- Si la table référencée dans le mappage n’existe pas dans la base de données, elle est créée automatiquement, étant donné que les types de données valides sont spécifiés pour toutes les colonnes.
- Si une colonne référencée dans le mappage n’existe pas dans la table, elle est ajoutée automatiquement à la table en tant que dernière colonne lors de la première réception des données pour cette colonne, étant donné qu’un type de données valide est spécifié pour la colonne. Pour ajouter de nouvelles colonnes à un mappage, utilisez la commande de mappage .alter ingestion.
- Les données sont traitées par lots à l’aide de propriétés d’ingestion. Les propriétés de mappage d’ingestion plus distinctes utilisées, telles que différentes valeurs ConstValue, sont plus fragmentées l’ingestion devient, ce qui peut entraîner une dégradation des performances.
Conversions de types Parquet
Une prise en charge complète est fournie pour convertir des types de données lorsque vous ingestion ou interrogez des données à partir d’une source Parquet.
Le tableau suivant fournit un mappage des types de champs Parquet et les types de colonnes de table auxquels ils peuvent être convertis. La première colonne répertorie le type Parquet, et les autres affichent les types de colonnes de table auxquels ils peuvent être convertis.
Remarque
Pour les types DECIMAL Parquest, le type physique est spécifié entre parenthèses, comme suit :
- I32 : INT32 (entier 32 bits)
- I64 : INT64 (entier 64 bits)
- FLBA : tableau d’octets de longueur fixe
- BA : Tableau d’octets
Type Parquet | bool | int | long | real | decimal | DATETIME | intervalle de temps | string | guid | dynamic |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DÉCIMAL (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DÉCIMAL (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DÉCIMAL (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
timestamp | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
Liste | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Exemples
[
{"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": "$"}}
]
Le mappage ci-dessus est sérialisé sous forme de chaîne JSON lorsqu’il est fourni dans le cadre de la .ingest
commande de gestion.
.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\']"}},
]
```
)
Mappage précréé
Lorsque le mappage est précréé, référencez le mappage par nom dans la .ingest
commande de gestion.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Mappage d’identité
Utilisez le mappage Parquet pendant l’ingestion sans définir de schéma de mappage (voir mappage d’identité).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)