看代码应该是支持复合类型的,你可以试下。

hua mulan <deadwi...@outlook.com> 于2020年7月8日周三 下午8:34写道:

> 我试了下 Array里是基本元素可以CROSS JOIN
> UNNEST直接解开。如果Array里是Row、POJO、Tuple这种复合类型我就只能UDTF了是吧。
>
> 来自 Outlook<http://aka.ms/weboutlook>
>
> ________________________________
> 发件人: Benchao Li <libenc...@apache.org>
> 发送时间: 2020年7月6日 22:35
> 收件人: user-zh <user-zh@flink.apache.org>
> 主题: Re: Flink SQL复杂JSON解析
>
> 我理解最佳实践是第一种,先读出来array,再用table function展开成多行。
> 实际上把array转成多行是Flink 内置支持的,可以参考[1]的”Expanding arrays into a relation“部分
>
> [1]
>
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/sql/queries.html#joins
>
> 王 outlook <deadwi...@outlook.com> 于2020年7月6日周一 下午9:29写道:
>
> > 像如下这种JSON输入,
> >
> > {
> >   "id": 1,
> >   "many_names": [
> >     {"name": "foo"},
> >     {"name": "bar"}
> >   ]
> > }
> >
> > 输出表两行  id 1, name foo  |  id 1, name bar
> >
> > 最佳实践是从Kafka读到后,调用TableFunction这个UDTF转出多行?
> > 还是Flink SQL有更方便的操作,从Source读出来就能把数组展开。
> >
> >
> > 来自 Outlook<http://aka.ms/weboutlook>
> >
>
>
> --
>
> Best,
> Benchao Li
>


-- 

Best,
Benchao Li

回复