Delen via


inline_outer table-waardegeneratorfunctie

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

Explodeert een matrix van structs in een table met OUTER semantiek.

In Databricks Runtime 16.1 en hoger ondersteunt deze functie het aanroepen van benoemde parameters .

Syntaxis

inline_outer(input)

Argumenten

  • input: Een MATRIX-STRUCT-expressie <> .

Een set aantal rijen die bestaan uit de velden van de structuurelementen in de array input. De velden columns die door inline worden geproduceerd, zijn de namen van de velden.

Als inputNULL wordt, wordt er voor elke NULL een rij geproduceerd met column's.

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

    inline_outer kan alleen in de SELECTlist worden geplaatst als de wortel van een expressie of na 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 inline_outer aan als een table_reference.

Voorbeelden

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

> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b'))), 'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL

> SELECT inline_outer(array(struct(1, 'a'), struct(1, 'b'))),
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))),
         'Spark SQL';
 1  a Spark SQL
 2  b Spark SQL
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 i.*, 'Spark SQL'
    FROM inline_outer(array(struct(1, 'a'), struct(2, 'b'))) AS i;
 1  a Spark SQL
 2  b Spark SQL

> SELECT i1.*, i2.*, 'Spark SQL'
   FROM  inline_outer(array(struct(1, 'a'), struct(1, 'b'))) AS i1,
         inline_outer(array(struct('c', 1.0), struct('d', 2.0))) AS i2;
 1      a       c       1.0     Spark SQL
 1      b       c       1.0     Spark SQL
 1      a       d       2.0     Spark SQL
 1      b       d       2.0     Spark SQL