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

Azure Data Factory窗口函数获取最近非空值问题咨询

问题原因

你当前的写法错误核心是last(Value, true())默认计算范围包含当前行,因此非空行都会取到自身的VALUE,不符合“取前序值”的要求。

解决方案

你只需要调整窗口函数的帧范围,限定计算范围仅包含当前行之前的所有行即可,参考Azure Data Factory数据流中的表达式写法:

last(VALUE, true()) OVER (
    PARTITION BY ID 
    ORDER BY DAY_ID 
    ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
)

参数说明

  • 第二个参数true表示last函数忽略null值,仅统计非空的VALUE
  • ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING 定义窗口计算范围为:当前ID分区下,按DAY_ID升序排序后,从分区第一行到当前行的前一行,完全排除当前行,避免取到自身值

效果验证

按该逻辑计算你的示例数据,刚好可以得到你期望的PREVIOUS_VALUE结果:

  • 20210101的行没有前序行,返回null
  • 20210105的行遍历前序所有行,忽略中间的null值,取到最近的非空值2874442

注意事项

如果存在相同DAY_ID的多行数据,建议补充一个唯一副排序键(比如行号),保证排序顺序稳定,避免窗口计算结果出现随机偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:21:02