Mappages d’ingestion

Les mappages d’ingestion sont utilisés pendant l’ingestion pour mapper les données entrantes aux colonnes à l’intérieur des tables.

Data Explorer prend en charge différents types de mappages, orientés lignes (CSV, JSON, AVRO et W3CLOGFILE) et orientés colonnes (Parquet et ORC).

Les mappages d’ingestion peuvent être créés au préalable et peuvent être référencés à partir de la commande ingestion à l’aide de ingestionMappingReference paramètres. Bien que l’ingestion soit possible sans spécifier de mappage. Pour plus d’informations, consultez Mappage d’identités.

Chaque élément de la liste de mappage est construit à partir de trois champs :

Propriété Obligatoire Description
Colonne ✔️ Nom de la colonne cible dans la table.
Datatype Type de données avec lequel créer la colonne mappée s’il n’existe pas déjà dans la table.
Propriétés Property-bag contenant des propriétés spécifiques pour chaque mappage, comme décrit dans chaque page de type de mappage spécifique.

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.

Types de mappage pris en charge

Le tableau suivant définit les types de mappage à utiliser lors de l’ingestion ou de l’interrogation de données externes d’un format spécifique.

Format de données Type de mappage
CSV Mappage CSV
TSV Mappage CSV
TSVe Mappage CSV
PSV Mappage CSV
SCSV Mappage CSV
SOHsv Mappage CSV
TXT Mappage CSV
RAW Mappage CSV
JSON Mappage JSON
AVRO Mappage AVRO
APACHEAVRO Mappage AVRO
Parquet Mappage parquet
ORC Mappage ORC
W3CLOGFILE mappage W3CLOGFILE

Mappage d’identité

L’ingestion est possible sans spécifier de ingestionMapping propriétés ou ingestionMappingReference . Les données seront mappées à l’aide d’un mappage de données d’identité dérivé du schéma de la table. Le schéma de table reste le même. format la propriété doit être spécifiée. Consultez formats d’ingestion.

Type de format Format Logique de mappage
Formats de données tabulaires avec un ordre défini de colonnes, tels que les formats séparés par un délimiteur ou à une ligne. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Toutes les colonnes de table sont mappées dans leur ordre respectif aux colonnes de données afin qu’elles apparaissent dans la source de données. Le type de données de colonne est extrait du schéma de table.
Met en forme des colonnes nommées ou des enregistrements avec des champs nommés. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Toutes les colonnes de table sont mappées à des colonnes de données ou à des champs d’enregistrement portant le même nom (respectant la casse). Le type de données de colonne est extrait du schéma de table.

Avertissement

Toute incompatibilité entre le schéma de table et la structure des données, telles que les types de données de colonne ou de champ, les noms de colonnes ou de champs ou leur nombre, peut entraîner l’ingestion de données vides ou incorrectes.

Mappage des transformations

Certains mappages de format de données (Parquet, JSON et AVRO) prennent en charge des transformations simples et utiles au moment de l’ingestion. Lorsque le scénario nécessite un traitement plus complexe au moment de l’ingestion, utilisez la stratégie de mise à jour, qui permet de définir un traitement léger à l’aide de l’expression KQL.

Transformation dépendante du chemin Description Conditions
PropertyBagArrayToDictionary Transforme le tableau JSON de propriétés, telles que {events:[{"n1":"v1"},{"n2":"v2"}]}, en dictionnaire et le sérialise en document JSON valide, tel que {"n1":"v1","n2":"v2"}. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
SourceLocation Nom de l’artefact de stockage qui a fourni les données, type string (par exemple, le champ « BaseUri » de l’objet blob). Disponible pour CSVles types de mappage , JSONParquet, , AVROORC etW3CLOGFILE.
SourceLineNumber Décalage par rapport à cet artefact de stockage, type long (à partir de « 1 » et incrémentation par nouvel enregistrement). Disponible dans les types de JSONmappage , Parquet, AVROORC et W3CLOGFILE .
DateTimeFromUnixSeconds Convertit le nombre représentant l’heure unix (secondes depuis 1970-01-01) en chaîne datetime UTC. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
DateTimeFromUnixMilliseconds Convertit le nombre représentant l’heure unix (millisecondes depuis 1970-01-1970) en chaîne datetime UTC. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
DateTimeFromUnixMicroseconds Convertit le nombre représentant l’heure unix (microsecondes depuis 1970-01-01) en chaîne datetime UTC. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
DateTimeFromUnixNanoseconds Convertit le nombre représentant l’heure unix (nanosecondes depuis 1970-01-01) en chaîne datetime UTC. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
DropMappedFields Mappe un objet du document JSON à une colonne et supprime tous les champs imbriqués déjà référencés par d’autres mappages de colonnes. Disponible pour JSONles types de mappage , ParquetAVRO et ORC .
BytesAsBase64 Traite les données comme un tableau d’octets et les convertit en chaîne codée en base64. Disponible pour le AVRO type de mappage. Pour ApacheAvro le format, le type de schéma du champ de données mappé doit être bytes ou fixed avro. Pour Avro le format, le champ doit être un tableau contenant des valeurs d’octets de la plage [0-255]. null est ingéré si les données ne représentent pas un tableau d’octets valide.

Exemples de transformation de mappage

DropMappedFields Transformation:

Compte tenu du contenu JSON suivant :

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

Le mappage de données suivant mappe l’objet entier Props en colonne Props dynamique tout en excluant les colonnes déjà mappées (Props.EventName est déjà mappé dans la colonne EventName, il est donc exclu).

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

Les données ingérées se présentent comme suit :

Temps EventName Propriétés
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 Transformation

Compte tenu du contenu du fichier AVRO suivant :

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

Le mappage de données suivant mappe la colonne id deux fois, avec et sans la transformation.

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

Les données ingérées se présentent comme suit :

Id Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==