inline_outer 表值生成器函数

适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime

将结构数组分解为一个具有 OUTER 语义的表。

语法

inline_outer(expr)

参数

  • expr:ARRAY < STRUCT > 表达式。

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

如果 exprNULL,则为每列生成包含 NULL 的单个行。

  • 适用于: 勾选“是” Databricks Runtime 12.1 及更早版本:

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

  • 适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 12.2 LTS 及更高版本:

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

示例

适用于: 勾选“是” Databricks Runtime 12.1 及更早版本:

> 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

适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 12.2 LTS 及更高版本:

> 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