Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-24 文章 Leonard Xu
Hi Chenxuying 是想在计算列中使用udtf, 现在的计算列只支持udf, 不支持udtf, 目前还做不到的。 祝好, Leonard Xu > 在 2020年6月24日,18:06,Weixubin <18925434...@163.com> 写道: > > > > > 感谢 Leonard Xu 与 Jark 两位,已成功解决满足需求! > 对于 chenxuying 所提出的问题,我也很感兴趣。 > 由于使用UDF重复解析两遍,不知是否有更好的替代方法 > Thanks > Bin > > > > > > > > > > > > > >

回复: Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-24 文章 wangweigu...@stevegame.cn
根据你的需求描述,用Flink Table API和SQL是可以解决的! 发件人: Weixubin 发送时间: 2020-06-24 12:09 收件人: user-zh 主题: Re:Re: FlinkSQL 是否支持类似临时中间表的概念 感谢你提供了子查询的思路,不过经过试验后有点可惜,这似乎还是满足不了我们的需求。 我们的场景是从阿里云SLS读取消息。每条消息有一个字段是request_uri。 第一个数据处理过程就是将 request_uri 解析为多个属性(多列),存成一行,作为一条记录。 第二个数据处理过程就是将每条记录里的

Re:Re: Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-24 文章 chenxuying
你好,请问下,my_parse是个udf吧 然后有没有什么操作可以使用udtf解析出多个字段 , 这些字段直接就是source表的字段 , 然后选出时间字段定义 watermark , 类似如下 CREATE TABLE sourceTable( request_uri STRING, (column_1,column_2,heart_time) as udtf_parse(request_uri) )with(..); 哈哈,不知道有没有这样的语法 在 2020-06-24 12:24:46,"Jark Wu" 写道: >你可以在 DDL

Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-23 文章 Leonard Xu
Hello, 你的需求其实是要 抽取记录的字段定义watermark, 这个只能放到source 表的DDL中,view上也不支持的。 1.10里的计算列 + udf 应该就可以满足你的需求, 大概长这样: CREATE TABLE sourceTable ( request_uri STRING, ts as extractTsUdf(request_uri), WATERMARK FOR ts AS ts - INTERVAL '5' SECOND ) WITH ( .. ); select ... from ( select ts, T.* from

Re: Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-23 文章 Jark Wu
你可以在 DDL 中直接用计算列去从 request_uri 里获得 heart_time 哈,然后在这个计算列上定义 watermark 即可。 例如: CREATE TABLE sourceTable ( request_uri STRING, heart_time AS my_parse(request_uri), WATERMARK FOR heart_time AS heart_time - INTERVAL '1' SECOND ) WITH ( ... ); 虽然这会导致重复解析两遍。 Best, Jark On Wed, 24 Jun 2020

Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-23 文章 Leonard Xu
Hi 我的意思是你如果中间结果表如果要输出,那你就一个sink写到中间结果表(什么表根据你的需要),一个sink写到你的最终结果表,在这两个sink之前的`select * from sourceTable , LATERAL TABLE(ParseUriRow(request_uri)) as T( )….` 的这段sql是可以复用的,就和 VIEW的作用类似。 如果你不需要中间结果表,只是要最终的结果表,那你写个嵌套的sql就行了,里层是`select * from sourceTable , LATERAL TABLE(ParseUriRow(request_uri)) as

Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-22 文章 Leonard Xu
Hi, 是的,这个是在 FLINK 1.11 的版本里支持的,当前 FLINK 1.11代码已经冻结,正在测试中,最近应该快发布了,所以master 分支上的版本号为1.12-SNAPSHOT ,等1.11版本发布了就可以看到对应的文档。 回到这个问题,flink sql(blink planner) 支持 multiple-sinks 的, 在 1.10 版本也可以一个作业搞定。 把 ` select * from sourceTable , LATERAL TABLE(ParseUriRow(request_uri)) as T( )….` 这段 sql insert

Re: FlinkSQL 是否支持类似临时中间表的概念

2020-06-22 文章 Leonard Xu
Hi, > 在 2020年6月23日,10:49,Weixubin <18925434...@163.com> 写道: > > //这个时候我希望能够创建一张临时中间表 tempTable用来存放 对Source表中数据拆分为多列后的结果,类似于下面这样(Flink > 并不支持这么做) 看着描述应该是源数据中的一行拆成多行。这个需求是不是用 VIEW 就可以了[1]?Flink SQL 支持 VIEW 语法的[1]。 Best, Leonard Xu [1]