海陵区建设局网站,江苏网站建设流程,网站开发语言哪一种好些,京东企业门户Window TopN 定义#xff08;⽀持 Streaming#xff09;#xff1a; Window TopN 是特殊的 TopN#xff0c;返回结果是每⼀个窗⼝内的 N 个最⼩值或者最⼤值。
应⽤场景#xff1a; TopN 会出现中间结果#xff0c;出现回撤数据#xff0c;Window TopN 不会出现回撤数据…Window TopN 定义⽀持 Streaming Window TopN 是特殊的 TopN返回结果是每⼀个窗⼝内的 N 个最⼩值或者最⼤值。
应⽤场景 TopN 会出现中间结果出现回撤数据Window TopN 不会出现回撤数据因为 Window TopN 是在窗⼝结束时输出最终结果不会产⽣中间结果。
注意 因为是窗⼝上⾯的操作 Window TopN 在窗⼝结束时会⾃动把 State 清除。
SQL 语法标准
SELECT [column_list]
FROM (SELECT [column_list],ROW_NUMBER() OVER (PARTITION BY window_start, window_end [, col_key1...]ORDER BY col1 [asc|desc][, col2 [asc|desc]...]) AS rownumFROM table_name) -- windowing TVF
WHERE rownum N [AND conditions]实际案例 取当前这⼀分钟的搜索关键词下的搜索热度前 10 名的词条数据。
输⼊表字段-- 字段名 备注
-- key 搜索关键词
-- name 搜索热度名称
-- search_cnt 热搜消费热度⽐如 3000
-- timestamp 消费词条时间戳
CREATE TABLE source_table (name STRING NOT NULL,search_cnt BIGINT NOT NULL,key STRING NOT NULL,row_time timestamp(3),WATERMARK FOR row_time AS row_time
) WITH (connector filesystem, path file:///Users/hhx/Desktop/source_table.csv,format csv
);A,100,a,2021-11-01 00:01:00
B,200,b,2021-11-01 00:01:00
C,300,c,2021-11-01 00:01:00
D,400,d,2021-11-01 00:01:00
A,200,a,2021-11-01 00:01:05
B,300,b,2021-11-01 00:01:05
C,400,c,2021-11-01 00:01:05
D,500,d,2021-11-01 00:01:05
A,300,a,2021-11-01 00:02:00
B,400,b,2021-11-01 00:02:00
C,500,c,2021-11-01 00:02:00
D,600,d,2021-11-01 00:02:00-- 输出表字段
-- 字段名 备注
-- key 搜索关键词
-- name 搜索热度名称
-- search_cnt 热搜消费热度⽐如 3000
-- window_start 窗⼝开始时间戳
-- window_end 窗⼝结束时间戳
CREATE TABLE sink_table (key BIGINT,name BIGINT,search_cnt BIGINT,window_start TIMESTAMP(3),window_end TIMESTAMP(3)
) WITH (...
);INSERT INTO sink_table
SELECT key, name, search_cnt, window_start, window_end
FROM (SELECT key, name, search_cnt, window_start, window_end, ROW_NUMBER() OVER (PARTITION BY window_start, window_end, keyORDER BY search_cnt desc) AS rownumFROM (SELECT window_start, window_end, key, name, max(search_cnt) as search_cnt-- window tvf 写法FROM TABLE(TUMBLE(TABLE source_table, DESCRIPTOR(row_time), INTERVAL 1 MINUTE))GROUP BY window_start, window_end, key, name)
)
WHERE rownum 2;输出结果 SQL 转换为算子
数据源 数据源即最新的词条下⾯的搜索词的搜索热度数据消费到 Kafka 后将数据按照窗⼝聚合的 key 通过 hash 分发策略发送到下游窗⼝聚合算⼦。窗⼝聚合算⼦ 进⾏窗⼝聚合计算随着时间的推进将窗⼝聚合结果计算完成发往下游窗⼝排序算⼦。窗⼝排序算⼦ 这个算⼦其实也是⼀个窗⼝算⼦只不过这个窗⼝算⼦为每个 Key 维护了⼀个 TopN 的榜单数据接受到上游发送的窗⼝结果数据进⾏排序随着时间的推进窗⼝的结束将排序的结果输出到下游数据汇算⼦。数据汇 接收到上游的数据之后然后输出到外部存储引擎中。