MySQL?Flink实时流处理的核心技术之窗口机制(flink实时写入doris)真没想到

随心笔谈2年前发布 admin
210 0 0

文章摘要

这篇文章介绍了如何在时间序列数据中使用PostgreSQL的`tumble`函数创建滚动窗口,并结合`GROUP BY`语句进行数据处理。首先,文章详细描述了如何创建`source_table`,该表用于存储用户行为数据,包括用户ID、价格、时间戳以及自定义的滚动窗口时间范围。其次,文章解释了如何使用`tumble`函数来定义滚动窗口的大小,并通过`GROUP BY`语句对数据进行分组统计。最后,文章展示了如何在查询中提取每个滚动窗口的时间范围,并计算每个用户的PV(访问量)和总价格。这种方法可以有效地对时间序列数据进行聚合分析,帮助用户更好地理解数据趋势和行为模式。

#1.创建source表
CREATE TABLE source_table (
user_id STRING,
price BIGINT,
`timestamp` bigint,
row_time AS TO_TIMESTAMP(FROM_UNIXTIME(`timestamp`)),
watermark for row_time as row_time – interval ‘0’ second
) WITH (
‘connector’=’socket’,
‘hostname’=’node1’,
‘port’=’9999’,
‘format’=’csv’
);
#2.语法
tumble(事件时间列,窗口大小)
窗口大小是用户自定义的。比如30分钟、1小时等。
直接把tumble窗口放在group by语句后即可。
比如:tumble(row_time,interval ‘5’ second)
含义:定义一个5秒大小的滚动窗口。
#3.数据处理
select
user_id,
count(*) as pv,
sum(price) as sum_price,
UNIX_TIMESTAMP(CAST(tumble_start(row_time, interval ‘5’ second) AS STRING)) * 1000 as window_start,
UNIX_TIMESTAMP(CAST(tumble_end(row_time, interval ‘5’ second) AS STRING)) * 1000 as window_end
from source_table
group by
user_id,
tumble(row_time, interval ‘5’ second);

© 版权声明

相关文章