Utiliser la clause GROUP AS - 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

La clause GROUP AS est utilisée pour créer un alias pour les groupes générés par une clause GROUP BY, pour pouvoir les référencer plus tard dans la requête.

Le mot-clé GROUP AS doit être suivi par un alias devant être unique au sein de la requête.
GROUP AS alias
Par exemple, avec les données d'entrée suivantes :
{
   "orders":[
      {
         "customer":"John Smith",
         "order_id":"abc-12345",
         "items":[
            {
               "item_id":"97516848-jiargn",
               "quantity":2
            }
         ]
      },
      {
         "customer":"Jane Doe",
         "order_id":"def-12345",
         "items":[
            {
               "item_id":"97516848-kftesn",
               "quantity":3
            },
            {
               "item_id":"96946848-metasb",
               "quantity":1
            }
         ]
      },
      {
         "customer":"Jane Doe",
         "order_id":"ghi-69875",
         "items":[
            {
               "item_id":"81516886-kfoaen",
               "quantity":2
            },
            {
               "item_id":"68946852-oasbsb",
               "quantity":4
            }
         ]
      }
   ]
}
Vous pouvez utiliser la clause GROUP BY pour grouper les résultats par customer et utiliser la clause GROUP AS pour créer un tableau d'éléments customer_orders, qui contiendra toutes les commandes d'un·e même client·e. Vous pouvez ensuite référencer des objets de ce tableau dans la requête.
FROM orders
GROUP BY customer
GROUP AS customer_orders
SELECT {
      customer_orders
}
Cette requête retourne le résultat suivant :
[
	{
		"customer_orders": [
			{
				"customer": "Jane Doe",
				"order_id": "def-12345",
				"items": [
					{
						"item_id": "97516848-kftesn",
						"quantity": 3
					},
					{
						"item_id": "96946848-metasb",
						"quantity": 1
					}
				]
			},
			{
				"customer": "Jane Doe",
				"order_id": "ghi-69875",
				"items": [
					{
						"item_id": "81516886-kfoaen",
						"quantity": 2
					},
					{
						"item_id": "68946852-oasbsb",
						"quantity": 4
					}
				]
			}
		]
	},
	{
		"customer_orders": [
			{
				"customer": "John Smith",
				"order_id": "abc-12345",
				"items": [
					{
						"item_id": "97516848-jiargn",
						"quantity": 2
					}
				]
			}
		]
	}
]