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

Spark SQL 2.4按srvc_typ字段从历史记录填充id列需求咨询

Spark SQL 2.4 实现ID填充查询方案

前置说明

默认分组内记录按原表id字段升序排序(如果业务侧有专门的事件发生时间字段,可替换为对应时间字段排序,保证顺序和业务发生顺序一致即可)。

实现SQL语句

SELECT
  last_value(IF(srvc_typ = 'proc', id, NULL)) IGNORE NULLS OVER (
    PARTITION BY policy, prsn, prv
    ORDER BY id ASC
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
  ) AS id,
  policy,
  prsn,
  prv,
  srvc_typ
FROM 你的业务表名;

逻辑说明

  • 窗口的PARTITION BY policy, prsn, prv完全匹配需求的分组规则,所有计算都在同分组内完成
  • 窗口内按id升序排序,保证可以按记录生成的先后顺序遍历
  • IF(srvc_typ = 'proc', id, NULL)逻辑:仅保留srvc_typ为proc行的id,其余drg行先置为null
  • last_value(...) IGNORE NULLS:忽略null值,取当前行及之前所有行里最后一个非空的id值,也就是drg行之前最近的一条proc记录的id,完全符合填充规则

用你提供的示例数据执行上述SQL,输出结果和给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:05