我遇到了这个问题:我在 BigQuery 中有一个表,其中包含列“day、person_id、daily_margin、running_margin_30d 和 total_accumulated_margin”。 我的问题是现在该表变得太大而无法每天运行(我删除并重新创建它)但现在它消耗了太多内存。我一直在尝试使用 MERGE 语句使其增量更新,但我不知道如何计算累积列(历史上和过去 30 天)。
例如,如果有一天我运行它,我会得到(最后两列为空,因为我只获取每日数据):
天 | person_id | daily_margin | running_margin_30d | total_accumulated_margin |
---|---|---|---|---|
1月2日 | 17 | 5 | 空 | 空 |
假设历史表的最后一行是
天 | person_id | daily_margin | running_margin_30d | total_accumulated_margin |
---|---|---|---|---|
1月1日 | 17 | 2 | 15 | 40 |
然后我需要更新的历史表在 MERGE 之后看起来像这样:
天 | person_id | daily_margin | running_margin_30d | total_accumulated_margin |
---|---|---|---|---|
1月2日 | 17 | 5 | 20 | 45 |
所以我们将新的daily_margin行与历史running_margin_30d和total_accumulated_margin相加。