Filtern von Arrays - Amazon Athena

Filtern von Arrays

Erstellen Sie ein Array aus einer Reihe von Zeilen, die den Filterkriterien entsprechen.

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

Diese Abfrage gibt Folgendes zurück:

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

Filtern Sie ein Array basierend darauf, ob Elemente einen bestimmten Wert (z. B. 2) enthalten, wie in diesem Beispiel:

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)

Diese Abfrage gibt Folgendes zurück:

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

Funktion filter verwenden

filter(ARRAY [list_of_values], boolean_function)

Sie können die filter-Funktion auf einem ARRAY-Ausdruck verwenden, um ein neues Array zu erstellen, das die Teilmenge der Elemente in list_of_values (Werteliste) ist, für die boolean_function (Boolesche Funktion) „true“ (wahr) ist. Die Funktion filter kann nützlich sein, wenn Sie die Funktion UNNEST nicht verwenden können.

Im folgenden Beispiel wird im Array [1,0,5,-1] nach Werten größer als Null gefiltert.

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

[1,5]

Im folgenden Beispiel wird im Array [-1, NULL, 10, NULL] nach Werten ungleich Null gefiltert.

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

[-1,10]