Partager via


Mappage JSON

S’applique à : ✅Microsoft Fabric✅Azure Data Explorer

Utilisez le mappage JSON pour mapper les données entrantes aux colonnes à l’intérieur des tables lorsque votre fichier source d’ingestion est au format JSON.

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. En savoir plus dans la vue d’ensemble des mappages de données.

Chaque élément de mappage JSON doit contenir l’une des propriétés facultatives suivantes :

Propriété Type Description
Chemin d’accès string Si la valeur commence par $ elle est interprétée comme le chemin d’accès JSON au champ du document JSON qui deviendra le contenu de la colonne dans la table. Chemin d’accès JSON qui indique l’intégralité du document est $. Si la valeur ne commence pas par $ elle est interprétée comme une valeur constante. Les chemins JSON qui incluent des caractères spéciaux doivent être placés dans une séquence d’échappement en tant que [« Nom de 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 JSON.
Transformation string Transformation qui doit être appliquée au contenu avec des transformations de mappage.

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.

Exemples

[
  {"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
  {"Column": "event_name",      "Properties": {"Path": "$.Event.Name"}},
  {"Column": "event_type",      "Properties": {"Path": "$.Event.Type"}},
  {"Column": "source_uri",      "Properties": {"Transform": "SourceLocation"}},
  {"Column": "source_line",     "Properties": {"Transform": "SourceLineNumber"}},
  {"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 = "json",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
        {"Column": "column_b", "Properties": {"Path": "$.Property"}},
        {"Column": "custom_column", "Properties": {"Path": "$.[\'Property 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="json",
        ingestionMappingReference = "Mapping_Name"
    )

Mappage d’identité

Utilisez le mappage JSON pendant l’ingestion sans définir de schéma de mappage (voir mappage d’identité).

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

Copie du mappage JSON

Vous pouvez copier le mappage JSON d’une table existante et créer une table avec le même mappage à l’aide du processus suivant :

  1. Exécutez la commande suivante sur la table dont vous souhaitez copier le mappage :

    .show table TABLENAME ingestion json mappings
    | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'")
    | project formatted_mapping
    
  2. Utilisez la sortie de la commande ci-dessus pour créer une table avec le même mappage :

    .create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD