inline 表值生成器函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

将结构数组分解为一个表。

语法

inline(expr)

自变量

  • expr:一个 ARRAY<STRUCT> 表达式。

返回

由数组 expr 的结构元素中的字段组成的行集。 inline 生成的列是字段的名称。

如果 exprNULL,则不会生成任何行。

  • 适用于:check marked yes Databricks Runtime 12.1 及更低版本:

    inline 只能作为表达式的根或跟在 LATERAL VIEW 之后放入 SELECT 列表中。 将该函数放入 SELECT 列表中时,同一个 SELECT 列表中不得有其他生成器函数,否则会引发 UNSUPPORTED_GENERATOR.MULTI_GENERATOR

  • 适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 及更高版本:

    LATERAL VIEW 子句SELECT 列表调用的语法已弃用。 请改为将 inline 作为 table_reference 调用。

示例

适用于:check marked yes Databricks Runtime 12.1 及更低版本:

> 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

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 及更高版本:

> 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