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
相关产品推荐
相关产品推荐

