全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
流计算

滑动窗口

更新时间:2018-01-18 16:38:59

滑动窗口分配器将元素分配到固定长度的窗口中,与滚动窗口类似,窗口的大小由窗口大小参数来配置,另一个窗口滑动参数控制滑动窗口开始的频率。因此,滑动窗口如果滑动参数小于滚动参数的话,窗口是可以重叠的,在这种情况下元素会被分配到多个窗口中。例如,你有10分钟的窗口和5分钟的滑动,那么每个窗口中5分钟的窗口里包含着上个10分钟产生的数据,如下图所示:

滑窗

语法:

  1. HOPdateTimeslidesize

注意:

在使用窗口函数时,一定要配置Event Time或Processing Time,

详情请参阅:窗口函数

案例一:

  1. SELECT product,
  2. SUM(amount)
  3. FROM orders
  4. GROUP BY Hop(rowtime, interval '1' hour, interval '1' day),
  5. product;

案例二:

测试数据

a(varchar) b(bigint) c(TIMESTAMP)
test1 1 1506823820000
test2 1 1506823850000
test1 1 1506823810000
test2 1 1506823840000
test2 1 1506823870000
test1 1 1506823830000
test2 1 1506823860000

SQL案例

  1. CREATE TABLE datahub_stream (
  2. a varchar,
  3. b BIGINT,
  4. c TIMESTAMP,
  5. d AS PROCTIME()
  6. ) WITH (
  7. type='datahub',
  8. endPoint='http://dh-cn-hangzhou.aliyuncs.com',
  9. project='blink_test',
  10. topic='window_count',
  11. accessId='LTAIYtafPsXXXX',
  12. accessKey='gUqyVwfkK2vfJI7jF90QLXXXXk'
  13. );
  14. CREATE TABLE rds_output (
  15. a varchar,
  16. b TIMESTAMP,
  17. cnt BIGINT,
  18. PRIMARY KEY(a)
  19. )with(
  20. type = 'rds',
  21. url='jdbc:mysql://rm-bp1gz4k20XXXXX.mysql.rds.aliyuncs.com:3306/XXXXX',
  22. tableName='window_rds',
  23. userName='XXXX',
  24. password='XXXX'
  25. );
  26. CREATE VIEW rds_view AS
  27. SELECT a,
  28. CAST(HOP_START(d, interval '5' second, interval '30' second) AS TIMESTAMP) AS cc,
  29. sum(b) AS cnt
  30. FROM datahub_stream
  31. GROUP BY HOP(d, interval '5' second, interval '30' second),a;
  32. INSERT INTO rds_output
  33. SELECT
  34. a,
  35. cc,
  36. cnt
  37. FROM rds_view
  38. WHERE cnt=4

测试结果

a(varchar) b (TIMESTAMP) cnt (BIGINT)
test2 2017-11-06 16:54:10 4
本文导读目录