Filtrage des tableaux - Amazon Athena

Filtrage des tableaux

Créez un tableau à partir d'un ensemble de lignes si elles correspondent aux critères de filtre.

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

Cette requête renvoie :

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

Filtrez un tableau selon que l'un de ses éléments contient une valeur spécifique, telle que 2, comme dans cet exemple :

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)

Cette requête renvoie :

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

Utilisation de la fonction filter

filter(ARRAY [list_of_values], boolean_function)

Vous pouvez utiliser la fonction filter sur une expression ARRAY pour créer une nouvelle table qui est le sous-ensemble des éléments du tableau de la liste list_of_values pour lequel la fonction boolean_function est vraie. La fonction filter peut être utile dans les cas où vous ne pouvez pas utiliser la fonction UNNEST.

L'exemple suivant filtre les valeurs supérieures à zéro dans le tableau [1,0,5,-1].

SELECT filter(ARRAY [1,0,5,-1], x -> x>0)
Résultats

[1,5]

L'exemple suivant filtre les valeurs non nulles dans le tableau [-1, NULL, 10, NULL].

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

[-1,10]