inline_outer função geradora com valor de tabela

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Explode uma matriz de estruturas em uma tabela com OUTER semântica.

Sintaxe

inline_outer(expr)

Argumentos

  • expr: Uma expressão ARRAY < STRUCT > .

Um conjunto de linhas composto pelos campos nos elementos struct da matriz expr. As colunas produzidas por inline são os nomes dos campos.

Se expr é NULL uma única linha com NULLs para cada coluna é produzida.

  • Aplica-se a:Marque Sim Databricks Runtime 12.1 e anteriores:

    inline_outersó pode ser colocado na SELECT lista como a raiz de uma expressão ou seguindo uma VISÃO LATERAL. Ao colocar a função na lista, SELECT não deve haver outra função geradora na mesma SELECT lista ou UNSUPPORTED_GENERATOR. MULTI_GENERATOR é levantada.

  • Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior:

    A invocação da cláusula LATERAL VIEW ou da SELECT lista foi preterida. Em vez disso, invoque inline_outer como um table_reference.

Exemplos

Aplica-se a:Marque Sim Databricks Runtime 12.1 e 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

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior:

> 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