Filtern von Arrays - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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] | +--------------+

Die Funktion filter

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]