友友们请教个Flink CDC 问题,主键id设置的是年月(yyyyMM)但是有计算日活跃dau,目前因为主键原因日活跃dau是累加的,怎么能让日活跃dau计算每天的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
针对您使用Flink CDC处理数据并计算日活跃用户数(DAU)时遇到的问题,其中主键设置为年月格式(yyyyMM),导致DAU计算出现累加现象,我们可以采取以下策略进行调整以确保每天的DAU能够正确计算:
调整主键设计:
yyyyMMdd或甚至是包含时间戳的格式,确保每天的记录都能作为独立的行存在。这样,每次插入都是基于当天的新记录,便于准确统计日活跃用户。采用事件时间(event time):
使用窗口聚合:
假设您正在使用SQL API编写Flink作业,可以参考以下示例代码调整您的计算逻辑:
SELECT
DATE_FORMAT(TUMBLE_START(event_time, INTERVAL '1' DAY), 'yyyyMMdd') AS date,
COUNT(DISTINCT user_id) AS dau
FROM
your_source_table
GROUP BY
TUMBLE(event_time, INTERVAL '1' DAY)
这段代码首先通过TUMBLE_START函数和一天的窗口间隔定义了每天的开始时间,并将其格式化为yyyyMMdd格式作为日期列。然后,对每个窗口内的user_id进行去重计数,得到每天的日活跃用户数(DAU)。
通过上述调整,您可以有效地解决日活跃用户数累加计算的问题,实现每日独立且准确的DAU统计。