explode generatorfunctie met tabelwaarde

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

Retourneert een set rijen door het nesten op te heffen collection.

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 waarden van de kaart. De kolom die door explode een matrix wordt geproduceerd, heeft de naam col. De kolommen voor een kaart worden aangeroepen key en value.

Als collection er NULL geen rijen worden geproduceerd.

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

    explode kan alleen in de SELECT lijst worden geplaatst als hoofdmap van een expressie of na een LATERALE WEERGAVE. Wanneer u de functie in de SELECT lijst plaatst, mag er geen andere generatorfunctie in dezelfde SELECT lijst of UNSUPPORTED_GENERATOR zijn. MULTI_GENERATOR wordt opgevoed.

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

    Aanroep vanuit de COMPONENT LATERAL VIEW of de SELECT lijst is afgeschaft. 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

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