You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 李航飞 <te...@163.com> on 2021/08/18 07:55:08 UTC

cumulate函数和比较函数连用报错

通过flinksql建立数据处理通道
SELECT window_start,window_end,SUM(price)

FROM TABLE(

CUMULATE(TABLE Bid,DESCRIPTOR(bidtime),INTERVAL '2' MINUTES,INTERVAL '10' MINUTES))

GROUP BY window_start,window_end;

大致语句如上,该语句通过 StreamTableEnvironment对象 env.sqlQuery(sql)执行成功,没有问题
关键一步是 StatementSet对象 sta.execute() 执行报错
java.lang.UnsupportedOperationException:
Currently Flink doesn't support individual window table-valued function CUMULATE(time_col=[ts], max_size=[10 min], step=[2 min]).
 Please use window table-valued function with aggregate together using window_start and window_end as group keys.
执行环境是flink1.13.1  去掉where条件可以正常执行,加上就不行。


Re:Re: Re: cumulate函数和比较函数连用报错

Posted by 李航飞 <te...@163.com>.
你好:
具体场景是对agg结果之前进行过滤,现在通过create view进行提取过滤了
现在我想通过DynameicTable的方式,以upsert写入redis里面




在 2021-08-20 10:31:18,"Caizhi Weng" <ts...@gmail.com> 写道:
>Hi!
>
>具体的条件是什么样的呢?理论上如果是和原本的 group by ... having ... 等价的语句应该是支持的。
>
>李航飞 <te...@163.com> 于2021年8月18日周三 下午4:34写道:
>
>> 哦哦,好的,谢谢你。比较函数不可以连用,简单的一些的条件(where a = '2')可以用,这个功能后续还会调整吗
>> 在 2021-08-18 16:21:20,"Caizhi Weng" <ts...@gmail.com> 写道:
>> >Hi!
>> >
>> >目前 window tvf 只能应用于 window agg 和 window top-n 两种场景。如果 where 条件是用来对 window
>> >agg 的结果进行过滤的,可以使用 having 而不是 where;若是对进入 window 之前的数据进行过滤的,可以 create view。
>> >
>> >李航飞 <te...@163.com> 于2021年8月18日周三 下午3:55写道:
>> >
>> >> 通过flinksql建立数据处理通道
>> >> SELECT window_start,window_end,SUM(price)
>> >>
>> >> FROM TABLE(
>> >>
>> >> CUMULATE(TABLE Bid,DESCRIPTOR(bidtime),INTERVAL '2' MINUTES,INTERVAL
>> '10'
>> >> MINUTES))
>> >>
>> >> GROUP BY window_start,window_end;
>> >>
>> >> 大致语句如上,该语句通过 StreamTableEnvironment对象 env.sqlQuery(sql)执行成功,没有问题
>> >> 关键一步是 StatementSet对象 sta.execute() 执行报错
>> >> java.lang.UnsupportedOperationException:
>> >> Currently Flink doesn't support individual window table-valued function
>> >> CUMULATE(time_col=[ts], max_size=[10 min], step=[2 min]).
>> >>  Please use window table-valued function with aggregate together using
>> >> window_start and window_end as group keys.
>> >> 执行环境是flink1.13.1  去掉where条件可以正常执行,加上就不行。
>> >>
>> >>
>>

Re: Re: cumulate函数和比较函数连用报错

Posted by Caizhi Weng <ts...@gmail.com>.
Hi!

具体的条件是什么样的呢?理论上如果是和原本的 group by ... having ... 等价的语句应该是支持的。

李航飞 <te...@163.com> 于2021年8月18日周三 下午4:34写道:

> 哦哦,好的,谢谢你。比较函数不可以连用,简单的一些的条件(where a = '2')可以用,这个功能后续还会调整吗
> 在 2021-08-18 16:21:20,"Caizhi Weng" <ts...@gmail.com> 写道:
> >Hi!
> >
> >目前 window tvf 只能应用于 window agg 和 window top-n 两种场景。如果 where 条件是用来对 window
> >agg 的结果进行过滤的,可以使用 having 而不是 where;若是对进入 window 之前的数据进行过滤的,可以 create view。
> >
> >李航飞 <te...@163.com> 于2021年8月18日周三 下午3:55写道:
> >
> >> 通过flinksql建立数据处理通道
> >> SELECT window_start,window_end,SUM(price)
> >>
> >> FROM TABLE(
> >>
> >> CUMULATE(TABLE Bid,DESCRIPTOR(bidtime),INTERVAL '2' MINUTES,INTERVAL
> '10'
> >> MINUTES))
> >>
> >> GROUP BY window_start,window_end;
> >>
> >> 大致语句如上,该语句通过 StreamTableEnvironment对象 env.sqlQuery(sql)执行成功,没有问题
> >> 关键一步是 StatementSet对象 sta.execute() 执行报错
> >> java.lang.UnsupportedOperationException:
> >> Currently Flink doesn't support individual window table-valued function
> >> CUMULATE(time_col=[ts], max_size=[10 min], step=[2 min]).
> >>  Please use window table-valued function with aggregate together using
> >> window_start and window_end as group keys.
> >> 执行环境是flink1.13.1  去掉where条件可以正常执行,加上就不行。
> >>
> >>
>

Re:Re: cumulate函数和比较函数连用报错

Posted by 李航飞 <te...@163.com>.
哦哦,好的,谢谢你。比较函数不可以连用,简单的一些的条件(where a = '2')可以用,这个功能后续还会调整吗
在 2021-08-18 16:21:20,"Caizhi Weng" <ts...@gmail.com> 写道:
>Hi!
>
>目前 window tvf 只能应用于 window agg 和 window top-n 两种场景。如果 where 条件是用来对 window
>agg 的结果进行过滤的,可以使用 having 而不是 where;若是对进入 window 之前的数据进行过滤的,可以 create view。
>
>李航飞 <te...@163.com> 于2021年8月18日周三 下午3:55写道:
>
>> 通过flinksql建立数据处理通道
>> SELECT window_start,window_end,SUM(price)
>>
>> FROM TABLE(
>>
>> CUMULATE(TABLE Bid,DESCRIPTOR(bidtime),INTERVAL '2' MINUTES,INTERVAL '10'
>> MINUTES))
>>
>> GROUP BY window_start,window_end;
>>
>> 大致语句如上,该语句通过 StreamTableEnvironment对象 env.sqlQuery(sql)执行成功,没有问题
>> 关键一步是 StatementSet对象 sta.execute() 执行报错
>> java.lang.UnsupportedOperationException:
>> Currently Flink doesn't support individual window table-valued function
>> CUMULATE(time_col=[ts], max_size=[10 min], step=[2 min]).
>>  Please use window table-valued function with aggregate together using
>> window_start and window_end as group keys.
>> 执行环境是flink1.13.1  去掉where条件可以正常执行,加上就不行。
>>
>>

Re: cumulate函数和比较函数连用报错

Posted by Caizhi Weng <ts...@gmail.com>.
Hi!

目前 window tvf 只能应用于 window agg 和 window top-n 两种场景。如果 where 条件是用来对 window
agg 的结果进行过滤的,可以使用 having 而不是 where;若是对进入 window 之前的数据进行过滤的,可以 create view。

李航飞 <te...@163.com> 于2021年8月18日周三 下午3:55写道:

> 通过flinksql建立数据处理通道
> SELECT window_start,window_end,SUM(price)
>
> FROM TABLE(
>
> CUMULATE(TABLE Bid,DESCRIPTOR(bidtime),INTERVAL '2' MINUTES,INTERVAL '10'
> MINUTES))
>
> GROUP BY window_start,window_end;
>
> 大致语句如上,该语句通过 StreamTableEnvironment对象 env.sqlQuery(sql)执行成功,没有问题
> 关键一步是 StatementSet对象 sta.execute() 执行报错
> java.lang.UnsupportedOperationException:
> Currently Flink doesn't support individual window table-valued function
> CUMULATE(time_col=[ts], max_size=[10 min], step=[2 min]).
>  Please use window table-valued function with aggregate together using
> window_start and window_end as group keys.
> 执行环境是flink1.13.1  去掉where条件可以正常执行,加上就不行。
>
>