explode_outer generatorfunctie met tabelwaarde

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

Retourneert een set rijen door nesten op te collection heffen met behulp van buitenste semantiek.

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

Syntaxis

explode_outer(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_outer een matrix wordt geproduceerd, heeft de naam col. De kolommen voor een kaart worden aangeroepen key en value.

Als collection één NULL rij met NULLs voor de matrix- of kaartwaarden wordt geproduceerd.

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

    explode_outer 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_outer aan als een table_reference.

Voorbeelden

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

> 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

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_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