Créer une variable et filtrer la sortie - Cloud - 8.0

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

Version
Cloud
8.0
Language
Français
Product
Talend Cloud
Module
Data Shaping Language
Content
Création et développement
Last publication date
2023-11-23
Créez une variable pour calculer le prix total de chaque élément et utilisez-la pour filtrer votre sortie.

Procédure

  1. Sous la clause UNNEST dans la requête, utilisez le mot-clé LET pour créer une variable et attribuer à la variable une expression calculant le prix total d'un élément.
    Vous pouvez effectuer cette opération en multipliant l'élément price par l'élément qty : LET $total = toDecimal(qty * price)
  2. Ajoutez un élément total_price avec la valeur $total dans la clause SELECT.
    La clause SELECT doit ressembler à ceci :
    SELECT {
        c.name,
        c.rating,
        o.orderno,
        itemno,
        total_price = $total
    }
  3. Sous la clause LET, ajoutez une clause WHEREpour conserver les éléments ayant un prix total supérieur à 100 : WHERE $total > 1000.
  4. Sous la clause JOIN, ajoutez une autre clause WHERE pour conserver les client·es ayant une note supérieure à 650 : WHERE c.rating > 650.
  5. Pour retourner une sortie avec uniquement l'élément ayant le prix total le plus élevé, ajoutez la clause suivante après la clause SELECT : ORDER BY $total DESC LIMIT 1.
    Cela permet d'ordonner la sortie du total le plus élevé au total le moins élevé, ainsi que de conserver uniquement le premier résultat.

Résultats

La requête complète doit ressembler à ceci :
FROM order AS o
UNNEST o.items
LET $total = toDecimal(qty * price)
WHERE $total > 1000
JOIN customer AS c ON c.custid = o.custid
WHERE c.rating > 650
SELECT {
    c.name,
    c.rating,
    o.orderno,
    itemno,
    total_price = $total
} ORDER BY $total DESC LIMIT 1
Elle retourne le résultat suivant :
[
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1002,
		"itemno": 460,
		"total_price": 9594.05
	}
]