explode_outer-Tabellenwert-Generator-Funktion

Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime

Gibt Zeilen zurück, indem die Schachtelung von collection mithilfe von äußerer Semantik aufgehoben wird.

In Databricks SQL und Databricks Runtime 13.3 und höher unterstützt diese Funktion benannten Parameteraufruf.

Syntax

explode_outer(collection)

Argumente

  • collection: Ein ARRAY- oder MAP-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_outer eines Arrays erzeugt wird, heißt col. Die Spalten für eine Zuordnung heißen key und value.

Wenn collectionNULL ist, wird eine einzelne Zeile mit NULL-Werten für das Array- oder die Zuordnungswerte generiert.

  • Gilt für:check marked yes Databricks Runtime 12.1 und früher:

    explode_outer kann nur in der SELECT-Liste als Stamm eines Ausdrucks oder nach einer LATERAL VIEW-Klausel platziert werden. Beim Platzieren der Funktion in der SELECT-Liste darf keine andere Generatorfunktion in derselben SELECT-Liste oder vorhanden sein, da ansonsten die Fehlermeldung UNSUPPORTED_GENERATOR.MULTI_GENERATOR ausgelöst wird.

  • :Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 und höher:

    Der Aufruf der LATERAL VIEW-Klausel oder der SELECT-Liste ist veraltet. Rufen Sie stattdessen explode_outer als table_reference auf.

Beispiele

Gilt für:check marked yes Databricks Runtime 12.1 und früher:

> SELECT explode_outer(array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

> SELECT explode_outer(collection => array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

> SELECT explode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 1   a   Spark
 2   b   Spark

> SELECT explode_outer(cast(NULL AS array<int>)), 'Spark';
 NULL   Spark

> SELECT explode_outer(array(1, 2)), explode_outer(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

:Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 und höher:

> SELECT elem, 'Spark' FROM explode_outer(array(10, 20)) AS t(elem);
 10 Spark
 20 Spark

> SELECT num, val, 'Spark' FROM explode_outer(map(1, 'a', 2, 'b')) AS t(num, val);
 1   a   Spark
 2   b   Spark

> SELECT * FROM explode_outer(array(1, 2)), explode_outer(array(3, 4));
 1   3
 1   4
 2   3
 2   4

> SELECT * FROM explode_outer(cast(NULL AS array<int>));
 NULL

-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode_outer(array(1, 2)) AS t, LATERAL explode_outer(array(3 * t.col, 4 * t.col));
 1   3
 1   4
 2   6
 2   8