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

BigQuery中如何用LAST_VALUE()跳过指定非NULL值(如ATM)

在BigQuery中用LAST_VALUE()跳过指定非NULL值(如‘ATM’)

可以实现,核心思路是把需要跳过的‘ATM’值转换为NULL,借助LAST_VALUE()默认跳过NULL的行为来达成需求。

原示例里LAST_VALUE()会自动忽略NULL值,我们只需要在函数内部用CASE语句将Channel = 'ATM'的行转为NULL,其余逻辑和原语句保持一致即可。

修改后的示例语句:

LAST_VALUE(
  CASE WHEN Channel != 'ATM' THEN Channel ELSE NULL END
) OVER (
  PARTITION BY OrderNo 
  ORDER BY event_timestamp ASC 
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS last_non_atm_channel

逻辑说明

  • CASE语句将所有‘ATM’值替换为NULL,让LAST_VALUE()像处理原生NULL一样跳过这些行
  • 窗口的分区、排序规则和范围保持与原语句一致,确保在每个OrderNo分组内,按event_timestamp顺序取最后一个非‘ATM’且非NULL的Channel值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:50:26