Filtro de matrices - Amazon Athena

Filtro de matrices

Cree una matriz a partir de una colección de filas si coinciden con los criterios de filtro.

WITH dataset AS ( SELECT ARRAY[1,2,3,4,5] AS items ) SELECT array_agg(i) AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE i > 3

Esta consulta devuelve:

+-------------+ | array_items | +-------------+ | [4, 5] | +-------------+

Filtre una matriz basándose en si uno de sus elementos contiene un valor específico, como 2, 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 ) SELECT i AS array_items FROM dataset CROSS JOIN UNNEST(items) AS t(i) WHERE contains(i, 2)

Esta consulta devuelve:

+--------------+ | array_items | +--------------+ | [1, 2, 3, 4] | +--------------+

La función de filter

filter(ARRAY [list_of_values], boolean_function)

Puede utilizar la función filter en una expresión ARRAY para crear una nueva matriz que sea el subconjunto de los elementos de la list_of_values (lista de valores) para la cual el valor de boolean_function es true (verdadero). La función filter puede ser útil cuando no se pueda utilizar la función UNNEST.

En el siguiente ejemplo se filtran los valores mayores que cero de la matriz [1,0,5,-1].

SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
Resultados

[1,5]

En el siguiente ejemplo se filtran los valores no nulos en la matriz [-1, NULL, 10, NULL].

SELECT filter(ARRAY [-1, NULL, 10, NULL], q -> q IS NOT NULL)
Resultados

[-1,10]