Uso de funciones de agregación con matrices
-
Para añadir valores dentro de una matriz, utilice
SUM
, como en el ejemplo siguiente. -
Para agregar varias filas de una misma matriz, utilice
array_agg
. Para obtener información, consulte Creación de matrices a partir de subconsultas.
ORDER BY
es compatible con funciones de agregación que comienzan en la versión 2 del motor 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;
En la última instrucción SELECT
, en lugar de utilizar sum()
y UNNEST
, puede utilizar reduce()
para reducir el tiempo de procesamiento y la transferencia de datos, como en el ejemplo siguiente.
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;
Ambas consultas devuelven los siguientes resultados. El orden de los resultados devueltos no está garantizado.
+----------------------+
| array_items | total |
+----------------------+
| [1, 2, 3, 4] | 10 |
| [5, 6, 7, 8] | 26 |
| [9, 0] | 9 |
+----------------------+