问答 查看内容
返回列表

spark偏移计算支持“按日期值范围”的滑动窗口吗?

521 1
发表于 2026-4-16 09:58:28 | 查看全部 阅读模式
spark偏移计算支持“按日期值范围”的滑动窗口吗?

如想计算某个商品近30天的销量,但是我的日期不是连续的,使用下面这个可以吗?
SUM([件数]) OVER (PARTITION BY [商品名称], [平台] ORDER BY [日期] RANGE BETWEEN INTERVAL '30' DAY PRECEDING AND CURRENT ROW)


评论1

观小豪楼主Lv.1 发表于 2026-4-16 10:00:20 | 查看全部
关于这个问题,spark偏移计算仅支持“按行数”的移动计算/窗口范围,不支持“按日期值范围”的滑动窗口。

建议1:先在数据里补齐日期粒度,保证每个 商品名称 + 平台 每天都有一行,缺失销量填 0,然后再计算


  1. <div>SUM([件数]) OVER (
  2.   PARTITION BY [商品名称], [平台]
  3.   ORDER BY [日期]
  4.   RANGE BETWEEN 30 PRECEDING AND CURRENT ROW
  5. )</div>
复制代码


建议2:如果不想补齐日期,可以在数据集 SQL / ETL SQL 节点里做自关联或原生 SQL 计算,不走卡片计算列。例如按日期条件聚合:


  1. <div>
  2. <div>SELECT
  3.   t.`商品名称`,
  4.   t.`平台`,
  5.   t.`日期`,
  6.   SUM(s.`件数`) AS `近30天销量`
  7. FROM base t
  8. LEFT JOIN base s
  9.   ON s.`商品名称` = t.`商品名称`
  10. AND s.`平台` = t.`平台`
  11. AND s.`日期` BETWEEN DATE_SUB(t.`日期`, 29) AND t.`日期`
  12. GROUP BY t.`商品名称`, t.`平台`, t.`日期`</div></div><p></p>
  13. <div></div>
复制代码




回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2026 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表