Utilisation des fonctions d’agrégation avec des tableaux - Amazon Athena

Utilisation des fonctions d’agrégation avec des tableaux

  • Pour ajouter des valeurs figurant dans un tableau, utilisez SUM, comme dans l'exemple suivant.

  • Pour regrouper plusieurs lignes dans un tableau, utilisez array_agg. Pour plus d’informations, consultez Création de tableaux à partir de sous-requêtes.

Note

ORDER BYLa commande est prise en charge pour les fonctions d'agrégation à partir de la version 2 du moteur Athena.

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, sum(val) AS total FROM item, UNNEST(array_items) AS t(val) GROUP BY array_items;

Dans la dernière instruction SELECT, au lieu d'utiliser sum() et UNNEST, vous pouvez utiliser reduce() pour réduire le temps de traitement et le transfert de données, comme dans l'exemple suivant.

WITH dataset AS ( SELECT ARRAY [ ARRAY[1,2,3,4], ARRAY[5,6,7,8], ARRAY[9,0] ] AS items ), item AS ( SELECT i AS array_items FROM dataset, UNNEST(items) AS t(i) ) SELECT array_items, reduce(array_items, 0 , (s, x) -> s + x, s -> s) AS total FROM item;

La requête renvoie les résultats suivants. L'ordre des résultats renvoyés n'est pas garanti.

+----------------------+ | array_items | total | +----------------------+ | [1, 2, 3, 4] | 10 | | [5, 6, 7, 8] | 26 | | [9, 0] | 9 | +----------------------+