函数:INLINE

INLINE(expr)

功能描述

INLINE
INLINE
函数用于将数组中的结构体元素展开成多行数据。输入参数
expr
expr
array<struct<T1, T2, ... Tn>>
array<struct<T1, T2, ... Tn>>
类型,展开后的每一列对应结构体元素中的一个字段。如果未指定列名,展开后的列名将与结构体字段名相同。
INLINE
INLINE
函数可以直接使用,也可以与
LATERAL VIEW
LATERAL VIEW
搭配使用以实现更复杂的数据处理。

参数说明

  • expr
    expr
    : 输入的数组表达式,类型为
    array<struct<T1, T2, ... Tn>>
    array<struct<T1, T2, ... Tn>>

返回结果

  • 返回类型:根据输入参数
    expr
    expr
    进行类型推导,得到
    (T1, T2, ... Tn)
    (T1, T2, ... Tn)
    类型的数据。

使用示例

示例 1:简单的 INLINE 展开

SELECT INLINE(array(struct(1, 'x'), struct(2, 'y'))); +------+------+ | col1 | col2 | +------+------+ | 1 | x | | 2 | y | +------+------+

示例 2:与 LATERAL VIEW 搭配使用

SELECT word, s1, s2 FROM VALUES ('hello') AS vt(word) LATERAL VIEW INLINE(array(struct('a', 0), struct('b', 1))) lv AS s1, s2; +-------+----+----+ | word | s1 | s2 | +-------+----+----+ | hello | a | 0 | | hello | b | 1 | +-------+----+----+

示例 3:结构体字段包含 NULL 值

结构体字段中的

NULL
NULL
值会原样展开:

SELECT INLINE(array(named_struct('a', 1, 'b', NULL), named_struct('a', NULL, 'b', 3))); +------+------+ | a | b | +------+------+ | 1 | | | | 3 | +------+------+

注意事项

  • 使用
    INLINE
    INLINE
    函数时,请确保输入的数组元素类型为结构体类型。传入空数组(
    array()
    array()
    )会报错,因为无法推断结构体字段类型。
  • 在与
    LATERAL VIEW
    LATERAL VIEW
    搭配使用时,注意为展开后的数据指定别名,以便后续操作使用。

联系我们
预约咨询
微信咨询
电话咨询