窗口函数

百度流式计算 BSC

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品优势
    • 应用场景
    • 产品功能
    • 核心概念
    • 概述
  • 快速入门
    • 开通服务
    • 开发作业
  • 典型实践
    • CDN 日志提取中转(ETL)
    • API 日志调用统计
    • CDN 接口日志聚合统计
    • 物联网设备实时报警统计(流表Join)
    • 物设备报警情况实时统计
    • 物联网设备实时监控预警
  • 操作指南
    • 多用户访问控制
    • 作业运维
    • 扩展内置函数
    • 编辑作业
    • 模板管理
    • 新增作业
    • 资源管理
  • API参考
    • 接口概述
    • 通用说明
    • 公共头
    • 模板相关接口
    • 模型定义
    • 服务域名
    • 请求返回格式
    • 作业实例相关接口
    • 作业相关接口
    • 资源相关接口
  • 常见问题
    • 一般问题
  • 自定义JAR作业
    • Flink自定义JAR作业
    • Spark自定义JAR作业
  • SQL
    • DML语句
    • SET 语句
    • 内置函数
    • 标识符和关键字
    • 窗口函数
    • 概述
    • DDL 语句
      • KAFKA
      • Formats
      • ES
      • Overview
      • PALO
      • TSDB
      • BKAFKA
      • RDS
      • BOS
      • MQTT
所有文档
menu
没有找到结果,请重新输入

百度流式计算 BSC

  • 产品定价
  • 功能发布记录
  • 产品描述
    • 产品优势
    • 应用场景
    • 产品功能
    • 核心概念
    • 概述
  • 快速入门
    • 开通服务
    • 开发作业
  • 典型实践
    • CDN 日志提取中转(ETL)
    • API 日志调用统计
    • CDN 接口日志聚合统计
    • 物联网设备实时报警统计(流表Join)
    • 物设备报警情况实时统计
    • 物联网设备实时监控预警
  • 操作指南
    • 多用户访问控制
    • 作业运维
    • 扩展内置函数
    • 编辑作业
    • 模板管理
    • 新增作业
    • 资源管理
  • API参考
    • 接口概述
    • 通用说明
    • 公共头
    • 模板相关接口
    • 模型定义
    • 服务域名
    • 请求返回格式
    • 作业实例相关接口
    • 作业相关接口
    • 资源相关接口
  • 常见问题
    • 一般问题
  • 自定义JAR作业
    • Flink自定义JAR作业
    • Spark自定义JAR作业
  • SQL
    • DML语句
    • SET 语句
    • 内置函数
    • 标识符和关键字
    • 窗口函数
    • 概述
    • DDL 语句
      • KAFKA
      • Formats
      • ES
      • Overview
      • PALO
      • TSDB
      • BKAFKA
      • RDS
      • BOS
      • MQTT
  • 文档中心
  • arrow
  • 百度流式计算BSC
  • arrow
  • SQL
  • arrow
  • 窗口函数
本页目录
  • 窗口函数概述
  • 滚动窗口
  • 滑动窗口
  • 会话窗口

窗口函数

更新时间:2025-08-21

窗口函数概述

BSC 窗口函数支持基于窗口的聚合。例如,需要统计每分钟内,广告被点击的次数,可以通过定义一个1分钟的窗口来收集对应窗口的数据,并对这个窗口内的数据进行聚合计算。BSC 支持两种窗口类型:滚动窗口(tumbling window),滑动窗口(sliding window),会话窗口(session window)。

滚动窗口

滚动窗口(tumbling)将每个元素分配到一个指定大小的窗口中。每个窗口的大小固定,并且互不重合。滚动窗口有一个参数 size,用来指定窗口的大小。例如对于10分钟大小的滚动窗口,数据流会被划分成 [00:00 - 00:10)、[00:10 - 00:20)、[00:20 - 00:30)等窗口。

语法

Plain Text
1window(<timeColumn>, <windowDuration>) // timeColumn 参数是数据流中的一个时间属性字段

示例

Plain Text
1CREATE TABLE ad_clicks(
2  ad_name VARCHAR,
3  ad_url VARCHAR,
4  click_time TIMESTAMP
5) with (
6  type='KAFKA',
7  ...
8);
9
10CREATE TABLE window_output(
11  window_start TIMESTAMP,
12  window_end TIMESTAMP,
13  ad_name VARCHAR,
14  clicks BIGINT
15) with (
16  type='RDS',
17  ...
18);
19
20INSERT INTO
21  window_output
22SELECT
23  window.start,
24  window.end,
25  ad_id,
26  COUNT(ad_url)
27FROM 
28  ad_clicks
29GROUP BY 
30  window(click_time, "1 minute"), ad_name

滑动窗口

滑动窗口(Sliding)类似于滚动窗口,不同之处在于,每个滑动窗口之间,是可以重叠的。滑动窗口有两个参数 size 和 slide,用来指定窗口的大小和每次滑动的步长。滑动窗口通常会用来统计计算移动平均数。例如,基于过去30分钟的路况信息,预测未来的拥堵情况,每 5 分钟更新一次。可以设置一个 size = 30 min, slide = 5 min 的滑动窗口。

语法

Plain Text
1window(<timeColumn>, <windowDuration>, <slideDuration>) // timeColumn 参数是数据流中的一个时间属性字段

示例

Plain Text
1CREATE TABLE traffic(
2  cross_id VARCHAR,
3  car_count BIGINT,
4  ts TIMESTAMP
5) with (
6  type='KAFKA',
7  ...
8);
9
10CREATE TABLE window_output(
11  window_start TIMESTAMP,
12  window_end TIMESTAMP,
13  cross_id VARCHAR,
14  car_avg BIGINT
15) with (
16  type='RDS',
17  ...
18);
19
20INSERT INTO 
21  window_output
22SELECT
23  window.start,
24  window.end,
25  cross_id,
26  AVG(ad_url)
27FROM 
28  traffic
29GROUP BY 
30  window(ts, "30 minutes", "5 minutes"), 
31  cross_id

会话窗口

会话窗口(session window)的特点在于不需要指定固定的窗口大小,一个会话窗口关闭的规则是在一个固定时间内没有再收到新的元素。

会话窗口通过一个间隔时间来配置,这个间隔定义了窗口的最大非活跃时间。例如,一个表示用户网页行为的数据流可能会有长时间的空闲时间把数据分成多个组,每个组内有频繁的行为数据,当数据流的空闲时间超过的设置的间隔时间后,就会视为上一组数据结束,下一组数据开始,也就是开始新的会话窗口。

语法

Plain Text
1session_window(<timeColumn>, <windowGap>) // timeColumn 参数是数据流中的一个时间属性字段

示例

Plain Text
1CREATE TABLE traffic(
2  action_id VARCHAR,
3  action_type VARCHAR,
4  ts TIMESTAMP
5) with (
6  type='KAFKA',
7  ...
8);
9
10CREATE TABLE window_output(
11  window_start TIMESTAMP,
12  window_end TIMESTAMP,
13  action_type VARCHAR,
14  action_count BIGINT
15) with (
16  type='RDS',
17  ...
18);
19
20INSERT INTO
21  window_output
22SELECT
23  window.start,
24  window.end,
25  action_type,
26  COUNT(*)
27FROM 
28  traffic
29GROUP BY 
30  session_window(ts, "5 minutes"), 
31  action_type

上一篇
标识符和关键字
下一篇
概述