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

如何在Snowflake中新增列获取股票周首个交易日对应数值

Snowflake 实现股票周首个交易日取值方案

需求说明

现有Snowflake股票交易数据表结构如下:

StockName    Date          Value
GOOG         10/12/2021     $100
GOOG         10/11/2021     $995 

需要新增value_weekstart列,返回对应股票所在周首个交易日的交易数值。规则为周首日默认取周一,若周一为节假日无交易,则自动顺延至当周第一个有交易的日期,预期输出效果如下:

StockName         date          Value        value_weekstart
GOOG              10/12/2021    $1000         $995
GOOG              10/11/2021    $995          $995

实现代码

使用Snowflake内置窗口函数即可实现,无需额外维护节假日表:

SELECT 
    StockName,
    "Date",
    Value,
    FIRST_VALUE(Value) OVER (
        PARTITION BY StockName, DATE_TRUNC('WEEK', "Date"::DATE) 
        ORDER BY "Date"::DATE ASC
    ) AS value_weekstart
FROM 你的股票数据表名;

逻辑说明

  • DATE_TRUNC('WEEK', "Date"::DATE):Snowflake中该函数默认将日期截断至当周周一,同属一个自然周的日期会得到相同的截断值,作为周分组的依据
  • 窗口函数按股票代码、周截断值分组,组内按交易日期升序排序,FIRST_VALUE直接取组内第一条记录的Value,也就是该周第一个交易日的数值。天然适配节假日顺延规则:如果周一无交易,组内最小日期就是该周第一个交易日,不需要额外处理节假日逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:18:02