6 Array Expansion
对于输入的包含数组列的单行数据,返回给定数组中每个元素的新行,拆分后的数据除解析数组元素外,其他元素与原始行数据一致。
select
order_id,
order_tag,
tag
from tbl_order_source cross join unnest(order_tag) as t(tag)
;
特征:
- 输入数据可以是Append或者Upsert
- 输出数据可以是Append或者Upsert
7 Table Function
将表与表函数的结果联接。左侧(外部)表的每一行都与表函数的相应调用产生的所有行相连接。用户自定义表函数必须在使用前注册。
对于是inner join,如果表函数调用返回一个空结果,那么左表的这行数据将不会输出。对于left join,如果表函数调用返回了一个空结果,则保留相应的行,并用空值填充未关联到的结果。当前,针对 lateral table 的 left outer join 需要 ON 子句中有一个固定的 TRUE 连接条件。
select
order_id,
order_tag,
tag
from tbl_order_source
left join lateral table(table_func(order_tag)) t(tag) on true
;
特征:
- 输入数据可以是Append或者Upsert
- 输出数据可以是Append或者Upsert