麻烦问一下FlinkSQL在定义数据源的时候已经生成Watermark了,但是创建视图再进行window查询的时候,报错:Window aggregate can only be defined over a time attribute column, but TIMESTAMP(3) encountered.,感觉像是创建视图之后,watermark信息丢失了。怎么办?
bid表rowtime字段选错了,没选原表中定义watermark那个字段 ,此回答整理自钉群“【①群】Apache Flink China社区”
这个问题可能是由于在创建视图时,FlinkSQL没有正确地处理Watermark信息。你可以尝试以下方法来解决这个问题:
WATERMARK FOR
子句来实现这一点。例如:CREATE VIEW your_view_name AS
SELECT
your_columns,
WATERMARK FOR your_timestamp_column AS your_watermark_expression
FROM your_source_table;
your_timestamp_column
,那么你可以使用如下的窗口查询:SELECT
your_aggregate_function(your_column) OVER (
PARTITION BY your_partition_column
ORDER BY your_timestamp_column
RANGE BETWEEN your_range_interval AND your_slide_interval
)
FROM your_view_name;
CREATE TABLE your_view_name (
your_columns,
WATERMARK FOR your_timestamp_column AS your_watermark_expression
) WITH (
'connector' = '...', -- 使用与源表相同的连接器
'format' = '...', -- 使用与源表相同的格式
...
);
INSERT INTO your_view_name
SELECT * FROM your_source_table;
SELECT
your_aggregate_function(your_column) OVER (
PARTITION BY your_partition_column
ORDER BY your_timestamp_column
RANGE BETWEEN your_range_interval AND your_slide_interval
)
FROM your_view_name;
希望这些建议能帮助你解决问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。