Usar funções de agregação com matrizes - Amazon Athena

Usar funções de agregação com matrizes

  • Para adicionar valores dentro de uma matriz, use SUM, como no exemplo a seguir.

  • Para agregar várias linhas dentro de uma matriz, use array_agg. Para ter mais informações, consulte Criar matrizes com base em subconsultas.

nota

Desde o mecanismo do Athena versão 2, ORDER BY é permitido em funções de agregação.

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;

Na última instrução do SELECT, em vez de usar sum() e UNNEST, você pode usar reduce() para reduzir o tempo de processamento e a transferência de dados, como no exemplo a seguir.

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;

As consultas retornam os seguintes resultados. A ordem de resultados obtidos não é garantida.

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