Compartir a través de


inline_outer (función de generador con valores de tabla)

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Expande una matriz de estructuras en una tabla con semántica OUTER.

En Databricks SQL y Databricks Runtime 16.1 y versiones posteriores, esta función admite la invocación de parámetros con nombre.

Sintaxis

inline_outer(input)

Argumentos

  • input: expresión ARRAY < STRUCT >.

Conjunto de filas compuestas por los campos de los elementos de estructura de la matriz input. Las columnas generadas por inline son los nombres de los campos.

Si input es NULL, se genera una sola fila con NULLs para cada columna.

  • Se aplica a check marked yesDatabricks Runtime 12.1 y versiones anteriores:

    inline_outer solo se puede colocar en la lista de SELECT como raíz de una expresión o después de un LATERAL VIEW. Al colocar la función en la lista SELECT, no debe haber ninguna otra función generadora en la misma lista SELECT o se genera UNSUPPORTED_GENERATOR. MULTI_GENERATOR.

  • Se aplica acasilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores:

    La invocación de la cláusula LATERAL VIEW o la lista de SELECT está en desuso. En su lugar, invoca inline_outer como un table_reference.

Ejemplos

Se aplica a check marked yesDatabricks Runtime 12.1 y versiones anteriores:

> 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

Se aplica acasilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores:

> 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