Accéder au contenu principal Passer au contenu complémentaire

Utiliser une map dans un Job d'intégration de données

Créez un Job pour convertir un fichier JSON en un fichier CSV.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, vous avec un fichier JSON contenant des informations clients, notamment des tableaux des différentes types de numéros de téléphone. L'objectif est de le convertir en un fichier CSV simple avec une colonne pour chaque information. Vous pouvez utiliser l'échantillon JSON suivant en entrée :
{
   "customers":[
      {
         "firstName":"John",
         "lastName":"Smith",
         "age":25,
         "address":{
            "streetAddress":"21 2nd Street",
            "city":"New York",
            "state":"NY",
            "postalCode":"10021"
         },
         "phoneNumber":[
            {
               "type":"home",
               "number":"202-555-0109"
            },
            {
               "type":"mobile",
               "number":"202-555-0181"
            }
         ]
      },
      {
         "firstName":"Jane",
         "lastName":"Doe",
         "age":31,
         "address":{
            "streetAddress":"19 4th Street",
            "city":"New York",
            "state":"NY",
            "postalCode":"10021"
         },
         "phoneNumber":[
            {
               "type":"home",
               "number":"202-555-0178"
            },
            {
               "type":"mobile",
               "number":"202-555-0123"
            },
            {
               "type":"work",
               "number":"202-555-0163"
            }
         ]
      }
   ]
}

Créer la structure d'entrée pour votre Job d'intégration de données

Créez une structure JSON basée sur un document échantillon à utiliser en entrée pour votre mapping.

Before you begin

Vous avez un fichier JSON à utiliser en entrée. Vous pouvez utiliser l'échantillon fourni ci-dessus.

About this task

Créer des structures dans l'éditeur Hierarchical Mapper est particulièrement utile lors de la gestion de nombreux fichiers avec imbrication de plusieurs niveaux. Vous pouvez les créer directement depuis le nœud Metadata de votre Repository dans la perspective Integration ou depuis l'onglet Data Mapper dans la perspective Mapping.

Pour plus d'informations, consultez Travailler avec des structures.

Procedure

  1. Développez le nœud Hierarchical Mapper, cliquez-droit sur Structure et sélectionnez New > Structure.
  2. Dans l'assistant qui s'ouvre, sélectionnez Import a structure definition et cliquez sur Next (Suivant).
  3. Sélectionnez JSON Sample Document et cliquez sur Next.
  4. Sélectionnez le fichier à utiliser :
    • Sélectionnez une ressource existante dans votre espace de travail.
    • Importez un fichier local.
    • Saisissez l'URL du fichier.
  5. Cliquez sur Next.
  6. Sélectionnez un dossier et saisissez le nom de la nouvelle structure, puis cliquez sur Next (Suivant).
  7. Cliquez sur Finish.

Results

Votre structure est créée et s'ouvre dans l'éditeur. Dans l'onglet Document, vous pouvez voir vos données d'échantillon. Les différents éléments sont mis en valeur lorsque vous cliquez dessus dans la structure.
Structure "customers_data_json" avec l'élément "phoneNumber" sélectionné.

Créer le Job d'intégration de données

Créez un Job simple avec un tFileInputRaw, un tHMap et un tFileOutputDelimited.

Procedure

  1. Dans la perspective Integration, cliquez-droit sur le nœud Job Designs et cliquez sur Create Standard Job.
  2. Saisissez un nom (Name), un objectif (Purpose) et une Description pour votre Job, puis cliquez sur Finish (Terminer).
  3. Ajoutez les composants suivants dans l'espace de modélisation graphique et reliez-les à l'aide de liens Row > Main :
    • un tFileInputRaw
    • un tHMap
    • un tFileOutputDelimited.
    Votre Job doit ressembler à ceci :
    Job Standard dans l'espace de modélisation graphique.
  4. Double-cliquez sur le tFileInputRaw pour ouvrir ses propriétés et cliquez sur le bouton ... à gauche du champ Filename afin de sélectionner votre fichier JSON d'entrée.
  5. Double-cliquez sur le tFileOutputDelimited et saisissez le chemin d'accès au fichier de sortie dans le champ File Name.
  6. Optional: Paramétrez les autres propriétés du composant, selon vos besoins.
  7. Cliquez sur le bouton ... à droite de Edit schema afin de créer le schéma pour votre fichier de sortie.
  8. Dans le schéma Input, cliquez sur le bouton + pour ajouter les colonnes suivantes :
    • firstName
    • lastName
    • age
    • streetAddress
    • city
    • state
    • postalCode
    • homePhoneNumber
    • mobilePhoneNumber
    • workPhoneNumber
  9. Cliquez sur le bouton Copy all of the columns from input schema to output schema (Copier toutes les colonnes du schéma d'entrée dans le schéma de sortie) afin de copier les colonnes dans le schéma Output de sortie, puis cliquez sur OK.
    Schéma du tFileOutputDelimited.
  10. Cliquez sur OK pour fermer l'éditeur du schéma.
  11. Double-cliquez sur le tHMap et suivez l'assistant pour générer la map.
    1. Dans la première étape, sélectionnez Select an existing hierarchical mapper structure, puis cliquez sur Next.
    2. Sélectionnez la structure créée dans Créer la structure d'entrée pour votre Job d'intégration de données et cliquez sur Next (Suivant), puis à nouveau sur Next (Suivant).
    3. Dans la seconde étape, sélectionnez Generate hierarchical mapper structure based on the schema et cliquez sur Next.
    4. Cliquez sur Finish.

Results

La map est générée. Elle utilise la structure d'entrée précédemment créée et génère une structure de sortie à partir du schéma défini dans les composants tFileOutputDelimited. Vous pouvez à présent mapper les éléments.

Mapper les éléments pour votre Job d'intégration de données

Configurez la map générée dans la procédure précédente.

Procedure

  1. Glissez l'élément d'entrée customers sur l'élément de sortie row.

    Les éléments firstName, lastName et age sont automatiquement mappés et une fonction SimpleLoop avec une référence à l'élément d'entrée customers est ajoutée dans l'onglet Loop sur l'élément de sortie row.

    L'expression de boucle indique que la map doit produire une ligne dans la sortie pour chaque itération de l'élément customers dans l'entrée. Pour plus d'informations, consultez Expressions Loop (de boucle).
    Expressions de boucles de l'entrée vers la sortie.
  2. Glissez-déposez les éléments d'entrée streetAddress, city, state et postalCode dans les éléments de sortie correspondants.
  3. Glissez-déposez une expression AgConcat sur l'élément de sortie homePhoneNumber.
  4. Glissez l'élément d'entrée number sur la fonction AgConcat.
    Cela est requis car il y a plusieurs éléments number pour chaque customers et vous devez créer une seule sortie depuis ceux-ci.
    Une expression d'itération utilisant la boucle d'entrée phoneNumber est générée.
  5. Glissez-déposez une fonction Equal sur l'argument Filter de la fonction SimpleLoop.
  6. Glissez l'élément d'entrée type sur l'argument First Value.
  7. Glissez-déposez une fonction Constant sur l'argument Second Value, puis double-cliquez dessus et saisissez home dans le champ Value et cliquez sur OK.
    Ce filtre vous permet de spécifier que l'élément homePhoneNumber doit retourner la valeur de l'élément d'entrée number dans les itérations où la valeur de type est égale à home.
  8. Cliquez-droit sur la fonction AgConcat et sélectionnez Copy pour copier l'expression entière.
  9. Cliquez-droit sur la sortie mobilePhoneNumber et sélectionnez Paste.
    L'expression AgConcat est copiée dans l'onglet Value de l'élément mobilePhoneNumber.
  10. Cliquez-droit sur AgConcat et cliquez sur Expand All pour voir l'expression complète, puis double-cliquez sur la fonction Constant et modifiez la valeur à mobile.
  11. Répétez les étapes précédentes pour copier l'expression AgConcat dans l'élément de sortie workPhoneNumber et modifiez la valeur de l'expression Constant à work.
  12. Sauvegardez votre map.

Results

Vos éléments sont à présent mappés.
Vous pouvez utiliser l'option Test Run pour tester la sortie et retournez à votre Job pour l'exécuter. La sortie doit ressembler à ceci, avec les données d'entrée d'échantillon :
John,Smith,25,21 2nd Street,New York,NY,10021,202-555-0109,202-555-0181,
Jane,Doe,31,19 4th Street,New York,NY,10021,202-555-0178,202-555-0123,202-555-0163

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.