Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Databricks SQL
Databricks Runtime
Gibt Zeilen durch Entschachtelung des Arrays mit Nummerierung der Positionen unter Verwendung der OUTER
-Semantik zurück.
In Databricks SQL sowie Databricks Runtime 16.1 und höher unterstützt diese Funktion den Aufruf benannter Parameter.
Syntax
posexplode_outer(collection)
Argumente
collection
: Ein ARRAY- oder MAP-Ausdruck.
Gibt zurück
Eine Reihe von Zeilen, die aus der Position und den Elementen des Arrays oder den Schlüsseln und Werten der Zuordnung bestehen.
Die durch den Befehl posexplode_outer
von einem Array erzeugten Spalten heißen pos
und col
.
Die Spalten für eine Zuordnung heißen pos
, key
und value
.
Wenn collection
NULL
ist, wird eine einzelne Zeile mit NULL-Werten für die ARRAY- oder MAP-Werte generiert.
Gilt für:
Databricks Runtime 12.1 und höher:
posexplode_outer
kann nur in derSELECT
-Liste als Stamm eines Ausdrucks oder nach einer LATERAL VIEW-Klausel platziert werden. Beim Platzieren der Funktion in derSELECT
-Liste darf keine andere Generatorfunktion in derselbenSELECT
-Liste oder vorhanden sein, da ansonsten die Fehlermeldung UNSUPPORTED_GENERATOR.MULTI_GENERATOR ausgelöst wird.Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher:
Der Aufruf über die LATERAL VIEW-Klausel oder
SELECT
-Liste ist veraltet. Rufen Sie stattdessenposexplode_outer
als table_reference auf.
Beispiele
Gilt für: Databricks Runtime 12.1 und höher:
> SELECT posexplode_outer(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode_outer(array(1, 2)), posexplode_outer(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Gilt für: Databricks SQL
Databricks Runtime 12.2 LTS und höher:
> SELECT pos, col FROM posexplode_outer(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode_outer(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, posexplode_outer(array(3, 4)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 3
1 2 1 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, LATERAL posexplode_outer(array(3 * p1.col, 4 * p1.col)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 6
1 2 1 8