5 Prétraitement CSV vers JSON

Aperçu

Dans cette étape de prétraitement, il est possible de convertir les données du fichier CSV au format JSON. Il est pris en charge dans :

  • éléments (prototypes d'éléments)
  • règles de découverte de bas niveau

Configuration

Pour configurer une étape de prétraitement CSV vers JSON :

  • Accédez à l'onglet Prétraitement dans la configuration de l'élément/la règle de découverte
  • Cliquez sur Ajouter
  • Sélectionnez l'option CSV vers JSON

Le premier paramètre permet de définir un délimiteur personnalisé. Notez que si la première ligne de l'entrée CSV commence par "Sep=" et est suivie d'un seul caractère UTF-8, ce caractère sera utilisé comme délimiteur si le premier paramètre n'est pas défini. Si le premier paramètre n'est pas défini et qu'un délimiteur n'est pas extrait de la ligne "Sep=", une virgule est utilisée comme séparateur.

Le deuxième paramètre optionnel permet de définir un symbole de citation.

Si la case Avec ligne d'en-tête est cochée, les valeurs de la ligne d'en-tête seront interprétées comme des noms de colonne (voir Traitement des en-têtes pour plus d'informations).

Si la case Personnalisé en cas d'échec est cochée, l'élément ne deviendra pas non pris en charge en cas d'échec d'une étape de prétraitement. De plus, des options personnalisées de gestion des erreurs peuvent être définies : ignorer la valeur, définir une valeur spécifiée ou définir un message d'erreur spécifié.

Traitement d'en-tête

La ligne d'en-tête du fichier CSV peut être traitée de deux manières différentes :

  • Si la case Avec ligne d'en-tête est cochée, les valeurs de la ligne d'en-tête sont interprétées comme des noms de colonne. Dans ce cas, les noms de colonne doivent être uniques et la ligne de données ne doit pas contenir plus de colonnes que la ligne d'en-tête ;
  • Si la case Avec ligne d'en-tête n'est pas cochée, la ligne d'en-tête est interprétée comme des données. Les noms de colonnes sont générés automatiquement (1,2,3,4...)

Exemple de fichier CSV :

Nr,Item name,Key,Qty
       1,active agent item,agent.hostname,33
       "2","passive agent item","agent.version","44"
       3,"active,passive agent items",agent.ping,55

Un guillemet dans un champ entre guillemets dans l'entrée doit être échappé en le faisant précéder d'un autre guillemet.

Traitement de la ligne d'en-tête

Sortie JSON lorsqu'une ligne d'en-tête est attendue :

[
          {
             "Nr":"1",
             "Item name":"active agent item",
             "Key":"agent.hostname",
             "Qty":"33"
          },
          {
             "Nr":"2",
             "Item name":"passive agent item",
             "Key":"agent.version",
             "Qty":"44"
          },
          {
             "Nr":"3",
             "Item name":"active,passive agent items",
             "Key":"agent.ping",
             "Qty":"55"
          }
       ]

Pas de traitement de ligne d'en-tête

Sortie JSON lorsqu'une ligne d'en-tête n'est pas attendue :

[
          {
             "1":"Nr",
             "2":"Item name",
             "3":"Key"
             "4":"Qty"
          },
          {
             "1":"1",
             "2":"active agent item",
             "3":"agent.hostname"
             "4":"33"
          },
          {
             "1":"2",
             "2":"passive agent item",
             "3":"agent.version"
             "4":"44"
          },
          {
             "1":"3",
             "2":"active,passive agent items",
             "3":"agent.ping"
             "4":"55"
          }
       ]