Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Fonction de générateur table
S’applique à :
Databricks SQL
Databricks Runtime
Éclate un tableau de structs dans une table avec la sémantique OUTER.
Dans Databricks SQL et Databricks Runtime 16.1 et versions ultérieures, cette fonction prend en charge l’appel de paramètre nommé.
Syntaxe
inline_outer(input)
Arguments
-
input: expression ARRAY < STRUCT >.
Un ensemble de lignes composé de champs dans les éléments struct du tableau input.
Les colonnes générées par inline sont les noms des champs.
Si input est NULL, une seule ligne avec NULL est générée pour chaque colonne.
S’applique à :
Databricks Runtime 12.1 et versions précédentes :inline_outerpeut uniquement être placé dans la listeSELECTen tant que racine d’une expression ou à la suite d’un LATERAL VIEW. Lorsque vous placez la fonction dans la listeSELECT, il ne doit pas y avoir une autre fonction de générateur dans la même listeSELECTsinon UNSUPPORTED_GENERATOR.MULTI_GENERATOR est déclenché.S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :L'invocation à partir de la clause LATERAL VIEW ou de la liste
SELECTest déconseillée. En lieu et place, appelezinline_outeren tant que table_reference.
Exemples
S’applique à :
Databricks Runtime 12.1 et versions précédentes :
> 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
S’applique à :
Databricks SQL
Databricks Runtime 12.2 LTS et versions ultérieures :
> 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