inline_outer
table-waardegeneratorfunctie
Van toepassing op: Databricks SQL 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 input
NULL
wordt, wordt er voor elke NULL
een rij geproduceerd met column's.
Van toepassing op: Databricks Runtime 12.1 en eerder:
inline_outer
kan alleen in deSELECT
list worden geplaatst als de wortel van een expressie of na een LATERAL VIEW. Bij het plaatsen van de functie in deSELECT
list mag er geen andere generatorfunctie aanwezig zijn in dezelfdeSELECT
list of , anders wordt UNSUPPORTED_GENERATOR.MULTI_GENERATOR gegenereerd.Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger:
Aanroep van de LATERAL VIEW clausule of de
SELECT
list is verouderd. Roep in plaats daarvaninline_outer
aan als een table_reference.
Voorbeelden
Van toepassing op: 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: Databricks SQL 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