Utiliser la clause SELECT - Cloud

Guide de référence de Talend Data Shaping Language

Version
Cloud
Language
Français
Product
Talend Cloud
Module
Data Shaping Language
Content
Création et développement

La clause SELECT est utilisée pour définir les éléments à retourner comme résultat d'une requête.

Le mot-clé SELECT peut être suivi par :
  • Une expression simple ou conditionnelle pour retourner une valeur unique, un enregistrement ou un tableau :
    SELECT expression          
  • Un bloc pour retourner des paires clé-valeur. Vous pouvez utiliser un identifiant simple ou une expression d'attribution pour créer une nouvelle clé :
    SELECT {
    	identifier,
    	identifier = expression
    }
    L'expression utilisée comme valeur peut être une expression simple ou conditionnelle.
  • Une sous-requête entre parenthèses pour retourner un résultat imbriqué comme résultat de la requête parente :
    SELECT (
       FROM identifier1
       SELECT {
          identifier2,
          identifier3
       }
    )
  • Les identifiants, suivis par des sous-requêtes entre parenthèses, pour retourner le résultat de plusieurs requêtes en un enregistrement :
    SELECT {
    	identifier1 = (query1),
    	identifier2 = (query2)
    }
Remarque : Lorsque vous utilisez un seul identifiant, il référence un élément dans l'entrée. Le nom du champ de sortie sera le même que le nom du champ d'entrée.
Avec une sous-requête produisant une collection, vous pouvez spécifier un index afin de retourner un élément spécifique depuis la collection. L'index doit être entre crochets après la parenthèse fermante de la sous-requête :
SELECT ( FROM identifier1 SELECT { identifier2 } )[index]
Par exemple, avec les données d'entrée suivantes :
{
	"customers": [
		{
			"firstName": "John",
			"lastName": "Smith",
			"address": {
				"street": "690 River St.",
				"city": "Hanover, MA",
				"zipcode": "02340"
			},
			"orders": [
				{
					"order_id": "abc-12345",
					"items": [
						{
							"item_id": "97516848-jiargn",
							"quantity": 2
						}
					]
				}
			]
		},
		{
			"firstName": "Jane",
			"lastName": "Doe",
			"address": {
				"street": "420 Green St.",
				"city": "Boston, MA",
				"zipcode": "02115"
			},
			"orders": [
				{
					"order_id": "def-12345",
					"items": [
						{
							"item_id": "97516848-kftesn",
							"quantity": 3
						},
						{
							"item_id": "96946848-metasb",
							"quantity": 1
						}
					]
				}
			]
		}
	]
}
Vous pouvez utiliser une clause SELECT avec deux requêtes imbriquées pour retourner un enregistrement contenant une collection de noms de client·es et le premier élément dans la collection d'identifiants d'éléments :
SELECT {
 customers = (
  FROM customers AS c 
  SELECT { 
   name = concatWith(" ", c.firstName, c.lastName),
   c.address
  }
 ),
 items = (
  FROM customers AS c UNNEST c.orders AS o UNNEST o.items AS i 
  SELECT {i.item_id}
 )[0]
}
Cette requête retourne le résultat suivant :
{
	"customers": [
		{
			"name": "John Smith",
			"address": {
				"street": "690 River St.",
				"city": "Hanover, MA",
				"zipcode": "02340"
			}
		},
		{
			"name": "Jane Doe",
			"address": {
				"street": "420 Green St.",
				"city": "Boston, MA",
				"zipcode": "02115"
			}
		}
	],
	"items": {
		"item_id": "97516848-jiargn"
	}
}