Delen via


explode table-waardegeneratorfunctie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Retourneert een set aantal rijen door het nesten van collectionongedaan te maken.

In Databricks SQL en Databricks Runtime 13.3 LTS en hoger ondersteunt deze functie benoemde parametertoeroepen.

Syntaxis

explode(collection)

Argumenten

  • collection: Een ARRAY of MAP expressie.

Retouren

Een set rijen die bestaan uit de elementen van de matrix of de sleutels en values van de kaart. De column geproduceerd door explode van een matrix heeft de naam col. De columns voor een kaart worden key en valuegenaamd.

Als collection er NULL geen rijen worden geproduceerd. Als u één rij wilt retourneren met NULLs voor de matrix of kaart values gebruikt u de functie explode_outer().

  • Van toepassing op:vinkje als ja aan Databricks Runtime 12.1 en eerder:

    explode kan alleen in de SELECTlist worden geplaatst als de wortel van een expressie of achter een LATERAL VIEW. Bij het plaatsen van de functie in de SELECTlist mag er geen andere generatorfunctie aanwezig zijn in dezelfde SELECTlist of , anders wordt UNSUPPORTED_GENERATOR.MULTI_GENERATOR gegenereerd.

  • Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger:

    Aanroep van de LATERAL VIEW clausule of de SELECTlist is verouderd. Roep in plaats daarvan explode aan als een table_reference.

Voorbeelden

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.1 en eerder:

> 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

-- The difference between explode() and explode_outer() is that explode_outer() returns NULL if the array is NULL.
> SELECT explode_outer(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10   Spark
 20   Spark
 NULL Spark

> SELECT explode(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10 Spark
 20 Spark

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger:

> 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