如何在BigQuery物化视图中实现按ID统一的目标结果列?
在BigQuery物化视图中生成'I Want'列的解决方案
可以用窗口函数直接在物化视图中实现需求,不需要CTE或关联其他物化视图,具体思路是通过PARTITION BY ID将同ID的行分组,再用聚合函数提取每组中唯一的非null Result值,填充到所有行。
具体SQL语句
CREATE MATERIALIZED VIEW `your-project.your-dataset.your-mv` AS SELECT ID, Text, Result, MAX(Result) OVER (PARTITION BY ID) AS `I Want` FROM `your-project.your-dataset.source-table`
原理说明
MAX(Result) OVER (PARTITION BY ID)会针对每个ID分组,计算组内Result的最大值。由于每个ID组内只有一个非null的Result值(Passed或Failed),MAX函数会直接取到这个值,自动填充到同组的所有行,正好匹配你需要的'I Want'列效果。- 该方案完全基于原表计算,符合BigQuery物化视图的限制(无需CTE、无需关联其他物化视图)。
内容的提问来源于stack exchange,提问作者littlequery
相关产品推荐
相关产品推荐

