如何用flink sql写,3h,7h,1d内pv,uv
2021/8/24 19:38:05
本文主要是介绍如何用flink sql写,3h,7h,1d内pv,uv,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一个同学在群里问的这个问题,刚好好久没写过window 的sql了,玩一玩
手上没有环境,一起从简了
使用 datagen 生成数据,id 随机生成,最小值
输出直接到 console 窗口
-- flink window tvf calc pv&uv create table if not exists datagen_source ( id int ,name string ,sex string ,age int ,birthday string ,proc_time as proctime() ) with ( 'connector' = 'datagen' ,'rows-per-second' = '10000' ,'fields.id.kind' = 'random' ,'fields.id.min' = '1' ,'fields.id.max' = '2000000' ); create table if not exists print_sink( start_time string ,end_time string ,pv bigint ,uv bigint ) with ( 'connector' = 'print' ); insert into print_sink select date_format(window_start, 'HH:mm:ss') , date_format(window_end, 'HH:mm:ss') , count(id) , count(distinct id) FROM TABLE( TUMBLE(TABLE datagen_source, DESCRIPTOR(proc_time), INTERVAL '10' SECOND )) GROUP BY window_start, window_end union all select date_format(window_start, 'HH:mm:ss') , date_format(window_end, 'HH:mm:ss') , count(id) , count(distinct id) FROM TABLE( TUMBLE(TABLE datagen_source, DESCRIPTOR(proc_time), INTERVAL '20' SECOND )) GROUP BY window_start, window_end union all select date_format(window_start, 'HH:mm:ss') , date_format(window_end, 'HH:mm:ss') , count(id) , count(distinct id) FROM TABLE( TUMBLE(TABLE datagen_source, DESCRIPTOR(proc_time), INTERVAL '30' SECOND )) GROUP BY window_start, window_end ;
查看结果:
+I[10:45:00, 10:45:20, 20000, 19900] # 20 s +I[10:45:10, 10:45:20, 20000, 19913] # 10 s +I[10:45:00, 10:45:30, 120000, 116420] # 30 s +I[10:45:20, 10:45:30, 100000, 97497] +I[10:45:30, 10:45:40, 100000, 97558] +I[10:45:20, 10:45:40, 200000, 190314]
流图:
功能倒是实现了,有点麻烦的是,现在 SQL api 没有 trigger,不能中途输出计算结果,几分钟的窗口结束的时候输出数据还可以,小时、天的窗口,要窗口结束才输出一次结果,那还不如跑离线
注: Window TVF 支持 GROUPING SETS、ROLLUP、CUBE
欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文
这篇关于如何用flink sql写,3h,7h,1d内pv,uv的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能