大查询-增量更新累积的列



我遇到了这个问题:我在BigQuery有列"day, person_id, daily_margin, running_margin_30d和total_accumulated_margin"表。我的问题是现在表已经变得太大,每天运行(我删除和重新创建它),但现在它消耗了太多的内存。我一直在尝试使用MERGE语句使其增量更新,但我不知道如何计算累积列(历史和过去30天)。

例如,如果我有一天运行它,我得到(最后两列是空的,因为我只得到每天的数据):

tbody> <<tr>
day person_id daily_margin running_margin_30d total_accumul_margin
1月2日175

创建一个临时表,用于保存需要合并到主表中的日常数据。

CREATE OR REPLACE TABLE `temp_table_name`
OPTIONS(
expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
) AS
SELECT columns
FROM `main_table`

使用MERGE语句用临时表中的数据更新主表。

MERGE INTO `main_table` t
USING `temp_table` s
ON t.key = s.key
WHEN MATCHED THEN
UPDATE SET t.column = s.column
WHEN NOT MATCHED THEN
INSERT (column_names)
VALUES (values);

最新更新