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 siguiente ejemplo:
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] |
+--------------+
Uso de la función 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]