开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请教下 last_value()是不支持上面写法吗,那怎么过滤null

3277问.png

展开
收起
游客3oewgrzrf6o5c 2022-08-18 16:18:16 432 0
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在Flink中,last_value()函数用于返回分组内最后一行的某个字段的值,可以用于实现滑动窗口内某个字段的累计计算。如果您使用last_value()函数时出现错误,可能是由于函数的使用方式不正确或者Flink版本不支持该函数。

    根据您提供的SQL语句,似乎缺少了OVER子句中的窗口定义,导致last_value()函数无法正常使用。您可以尝试修改SQL语句,为OVER子句添加窗口定义,例如:

    sql_more Copy SELECT userId, last_value(price) OVER ( PARTITION BY userId ORDER BY row_time RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW ) AS last_price FROM source_table; 在这个示例中,我们为last_value()函数的OVER子句添加了窗口定义,指定了分区键、排序键和窗口大小。其中,PARTITION BY子句指定了分区键为userId,ORDER BY子句指定了排序键为row_time,RANGE BETWEEN子句指定了窗口大小为1小时。

    需要注意的是,last_value()函数的使用方式取决于您的具体业务需求和Flink版本。如果您使用的是较早的Flink版本

    2023-06-18 08:05:17
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载