Utiliser la clause GROUP AS - 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 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 une collection 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 cette collection 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
					}
				]
			}
		]
	}
]