Utiliser la clause GROUP BY - Cloud

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

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

La clause GROUP BY est utilisée pour regrouper les résultats d'une clause précédente en se basant sur une expression.

La clause GROUP BY peut être suivie d'une expression simple ou conditionnelle. Vous pouvez également définir un alias utilisant le mot-clé AS :
GROUP BY expression AS identifier

Après le regroupement, seule l'expression de regroupement peut être référencée dans la requête courante. Les éléments hors regroupement peuvent être référencés uniquement comme arguments dans les fonctions d'agrégation.

Par exemple, avec les données d'entrée suivantes :
{
   "customers":[
      {
         "firstName":"John",
         "lastName": "Smith",
         "orders":[
            {
               "order_id":"abc-12345",
               "items":[
                  {
                     "item_id":"97516848-jiargn",
                     "quantity":2
                  }
               ]
            }
         ]
      },
      {
         "firstName":"Jane",
         "lastName": "Doe",
         "orders":[
            {
               "order_id":"def-12345",
               "items":[
                  {
                     "item_id":"97516848-kftesn",
                     "quantity":3
                  },
                  {
                     "item_id":"96946848-metasb",
                     "quantity":1
                  }
               ]
            }
         ]
      }
   ]
}
Vous pouvez utiliser la clause GROUP BY pour regrouper les résultats par order_id et utiliser la fonction sum pour obtenir la somme de tous les éléments dans l'ordre :
FROM customers UNNEST orders UNNEST items
GROUP BY order_id AS id
SELECT {
    id,
    total_items = sum(quantity)
}
Cette requête retourne le résultat suivant :
[
	{
		"id": "abc-12345",
		"total_items": 2
	},
	{
		"id": "def-12345",
		"total_items": 4
	}
]