首页 > 解决方案 > 如何使用 Flink 1.9 LAST_VALUE?

问题描述

我正在尝试使用 Flink 的 1.9 LAST_VALUE。与阿里巴巴文档不同,它不接受 ORDER 的第二个参数,也不喜欢 OVER(...) 子句。所以,我不确定,如何输入 LAST_VALUE 一个标准?

我希望如果您将处理设置为“事件时间”,last_value 将返回基于事件时间的最新值,而是返回读取的最新值?

标签: sqlapache-flinkolap

解决方案


该功能LAST_VALUE仅在 Flink 上运行 SQL 时由 Blink Planner 支持。需要通过以下方式显式激活 Blink 规划器的使用

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.java.StreamTableEnvironment;

StreamExecutionEnvironment bsEnv = StreamExecutionEnvironment.getExecutionEnvironment();
EnvironmentSettings bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
StreamTableEnvironment bsTableEnv = StreamTableEnvironment.create(bsEnv, bsSettings);

只有这样,您才能运行包含该LAST_VALUE函数的 SQL 查询。


推荐阅读