Compartilhar via


inline Função geradora com valor de tabela

Aplica-se a:marca de seleção positiva SQL do Databricks marca de seleção positiva Runtime do Databricks

Explode uma matriz de estruturas em uma tabela.

No Databricks SQL e no Databricks Runtime 16.1 e versões superiores, essa função dá suporte à invocação de parâmetro nomeado.

Sintaxe

inline(input)

Argumentos

  • input: uma expressão ARRAY<STRUCT>.

Retornos

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

Se input for NULL, nenhuma linha será produzida.

  • Aplica-se a:verificação marcada como sim Databricks Runtime 12.1 e versões anteriores:

    inline só pode ser colocado na lista SELECT como a raiz de uma expressão ou seguindo um LATERAL VIEW. Ao colocar a função na lista SELECT, não deve haver nenhuma outra função de gerador na mesma lista SELECT ou um UNSUPPORTED_GENERATOR. MULTI_GENERATOR será gerado.

  • Aplica-se a:verificação marcada como simSQL do Databricks verificação marcada como sim Databricks Runtime 12.2 LTS e superior:

    A invocação da cláusula LATERAL VIEW ou da lista SELECT é obsoleta. Em vez disso, invoque inline como uma table_reference.

Exemplos

Aplica-se a:verificação marcada como sim Databricks Runtime 12.1 e versões anteriores:

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

> SELECT inline(array(struct(1, 'a'), struct(1, 'b'))),
         inline(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:verificação marcada como simSQL do Databricks verificação marcada como sim Databricks Runtime 12.2 LTS e superior:

> SELECT i.*, 'Spark SQL'
    FROM inline(array(struct(1, 'a'), struct(2, 'b'))) AS i;
 1  a Spark SQL
 2  b Spark SQL

> SELECT i1.*, i2.*, 'Spark SQL'
   FROM  inline(array(struct(1, 'a'), struct(1, 'b'))) AS i1,
         inline(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