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

Scinder une boucle dans une map DSQL

Availability-noteBêta
Mappez plusieurs boucles à une seule boucle.

Avant de commencer

  • Vous avez créé des structures d'entrée et de sortie. Vous pouvez utiliser les échantillons JSON ci-dessous pour créer vos structures.

Pourquoi et quand exécuter cette tâche

Dans cet exemple, vous allez créer une map DSQL pour extraire des données de deux boucles différentes du même fichier JSON et les mapper à une seule boucle dans la sortie. Les données d'entrée ressemblent à ceci :
{
    "bicycles": [
        {
            "make": "MBIKE",
            "description": "27.5 inch electric mountain bike",
            "color": "blue",
            "price": 899.99
        },
        {
            "make": "EBIKE",
            "description": "Electric hybrid bike",
            "color": "grey/green",
            "price": 999.99
        },
        {
            "make": "WBIKE",
            "description": "Women's road bike",
            "color": "white",
            "price": 299.99
        }
    ],
    "scooters": [
        {
            "make": "ESCOOT",
            "description": "Camou electric scooter",
            "color": "black",
            "price": 749
        },
        {
            "make": "EVSCOOT",
            "description": "Folding electric velocity+ scooter",
            "color": "black",
            "price": 599.99
        },
        {
            "make": "KSCOOT",
            "description": "24 volt kid scooter",
            "color": "white",
            "price": 299.99
        }
    ]
}
La structure de sortie ressemble à ceci :
{
    "items": [
        {
            "make": "",
            "description": "",
            "price": ""
        }
    ]
}

Procédure

  1. Créez une DSQL Map (Map DSQL) et ajoutez les structures d'entrée et de sortie.
    Un premier mapping entre les éléments racine est automatiquement créé. Vous pouvez voir l'expression Data Shaping Query Language correspondante dans l'élément racine de la structure de sortie.
  2. Cliquez-droit sur l'élément items dans la structure de sortie et cliquez sur Split (Scinder).

    Cela crée une boucle identique. Cela est nécessaire pour mapper les éléments d'entrée bicycles et scooters. Même si la structure de la map affiche deux boucles items différentes après la scission, la sortie contiendra un seul tableau items avec le contenu des deux boucles.

    Cette modification est appliquée uniquement dans la map et n'est pas propagée à la structure même. Si vous cliquez-droit sur la nouvelle boucle et que vous sélectionnez Go to Structure Element (Se rendre à l'élément de structure) pour ouvrir la structure, vous pouvez voir qu'elle n'a pas été modifiée.

  3. Glissez-déposez l'élément d'entrée bicycles sur la boucle items et l'élément bicycles sur la seconde boucle.
    Note InformationsConseil : Si nécessaire, vous pouvez déplacer ou supprimer un élément scindé en cliquant-droit dessus et en sélectionnant Move Up (Monter), Move Down (Descendre) ou Delete (Supprimer).

Résultats

Votre map est configurée. Vous pouvez utiliser la fonction Test Run (Exécution de test) pour consulter les résultats. Dans cet exemple, le résultat suivant est retourné :
{
   "items":[
      {
         "make":"MBIKE",
         "description":"27.5 inch electric mountain bike",
         "price":"899.99"
      },
      {
         "make":"EBIKE",
         "description":"Electric hybrid bike",
         "price":"999.99"
      },
      {
         "make":"WBIKE",
         "description":"Women's road bike",
         "price":"299.99"
      },
      {
         "make":"ESCOOT",
         "description":"Camou electric scooter",
         "price":"749.0"
      },
      {
         "make":"EVSCOOT",
         "description":"Folding electric velocity+ scooter",
         "price":"599.99"
      },
      {
         "make":"KSCOOT",
         "description":"24 volt kid scooter",
         "price":"299.99"
      }
   ]
}
Vous pouvez également consulter la vue DSQL Script (Script DSQL) pour voir comment cela est géré avec Data Shaping Query Language et l'utilisation de la clause UNION ALL. Pour plus d'informations, consultez le Guide de référence de Talend Data Shaping Language. Dans cet exemple, le script suivant est généré :
FROM itemsbycategory
SELECT {
   items = (
      FROM bicycles
      SELECT {
         make = make,
         description = description,
         price = price
      }
      UNION ALL
      FROM scooters
      SELECT {
         make = make,
         description = description,
         price = price
      }
   )
}

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.