explode
-Tabellenwert-Generator-Funktion
Gilt für: Databricks SQL Databricks Runtime
Gibt eine Reihe von Zeilen zurück, indem sie die Schachtelung von collection
aufheben.
In Databricks SQL und Databricks Runtime 13.3 LTS und höher unterstützt diese Funktion den Aufruf benannter Parameter.
Syntax
explode(collection)
Argumente
collection
: EinARRAY
- oderMAP
-Ausdruck.
Gibt zurück
Zeilen, die aus den Elementen des Arrays oder den Schlüsseln und Werten der Zuordnung bestehen.
Die Spalte, die von explode
eines Arrays erzeugt wird, heißt col
.
Die Spalten für eine Zuordnung heißen key
und value
.
Wenn collection
den Wert NULL
aufweist, werden keine Zeilen generiert.
Gilt für: Databricks Runtime 12.1 und früher:
explode
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 der LATERAL VIEW-Klausel oder der
SELECT
-Liste ist veraltet. Rufen Sie stattdessenexplode
als table_reference auf.
Beispiele
Gilt für: Databricks SQL Databricks Runtime 12.1 und früher:
> SELECT explode(array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
1 a Spark
2 b Spark
> SELECT explode(array(1, 2)), explode(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Gilt für: Databricks SQL Databricks Runtime 12.2 LTS und höher:
> SELECT elem, 'Spark' FROM explode(array(10, 20)) AS t(elem);
10 Spark
20 Spark
> SELECT num, val, 'Spark' FROM explode(map(1, 'a', 2, 'b')) AS t(num, val);
1 a Spark
2 b Spark
> SELECT * FROM explode(array(1, 2)), explode(array(3, 4));
1 3
1 4
2 3
2 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode(array(1, 2)) AS t, LATERAL explode(array(3 * t.col, 4 * t.col));
1 3
1 4
2 6
2 8