You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL从事件数据流生成维度表?(列存库场景)

从事件流表生成维度表的SQL实现

需求:通过SQL查询从事件流数据表生成维度表,记录每个汽修店属性的生效时间段。

原事件流表(bodyshops)

event_idbodyshop_nametimephone_numberaddress
1Body12022-10-05 11:3012345abc
2Body12022-10-05 11:3556789abc
3Body22022-10-05 11:3634563def

目标维度表结构及数据

bodyshop_namephone_numberaddressstart_timeend_time
Body112345abc2022-10-05 11:302022-10-05 11:35
Body156789abc2022-10-05 11:35Null
Body234563def2022-10-05 11:36Null

实现SQL语句

SELECT
    bodyshop_name,
    phone_number,
    address,
    time AS start_time,
    LEAD(time) OVER (PARTITION BY bodyshop_name ORDER BY time) AS end_time
FROM bodyshops
ORDER BY bodyshop_name, start_time;

逻辑说明

  • 使用LEAD()窗口函数,按bodyshop_name分组、time升序排序,获取同一家汽修店下一条事件记录的时间,作为当前属性记录的end_time;
  • 若为同一家店的最后一条记录,LEAD()返回NULL,对应维度表中end_time为Null,表示该属性当前仍生效;
  • 最终结果按汽修店名称和生效时间排序,与目标维度表结构一致。

内容的提问来源于stack exchange,提问作者Catazza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:05:21