Share via


Mappage Parquet

Utilisez le mappage Parquet pour mapper les données entrantes à des colonnes à l’intérieur de 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, datatypeet properties. Pour plus d’informations, consultez 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 d’accès qui désigne l’enregistrement Parquet entier 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 placés dans une séquence d’échappement 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 à l’intérieur du fichier Parquet.
Transformation string Transformation qui doit être appliquée au contenu avec des transformations de mappage.

Notes

Champ et 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 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 des 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 automatiquement ajoutée à la table en tant que dernière colonne lors de la première ingestion de 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 d’ingestion .alter.
  • Les données sont traitées par lots à l’aide des propriétés d’ingestion. Plus des propriétés de mappage d’ingestion distinctes sont utilisées, telles que des valeurs ConstValue différentes, plus l’ingestion devient fragmentée, ce qui peut entraîner une dégradation des performances.

Conversions de type Parquet

Une prise en charge complète est fournie pour la conversion des types de données lorsque vous ingérez ou interrogez des données à partir d’une source Parquet.

Le tableau suivant fournit un mappage des types de champs Parquet et des types de colonnes de table vers lesquels ils peuvent être convertis. La première colonne répertorie le type Parquet, tandis que les autres affichent les types de colonnes de table vers lesquels elles peuvent être converties.

Notes

Pour les types Parquest DECIMAL, 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 Décimal DATETIME intervalle de temps string guid dynamique
INT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
INT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT8 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT16 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UINT64 ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT32 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
FLOAT64 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
BOOLEAN ✔️ ✔️ ✔️
DECIMAL (I32) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (I64) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
DECIMAL (FLBA) ✔️ ✔️ ✔️ ✔️
DÉCIMAL (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é en tant que 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 son 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"
  )