非管理员权限下如何追踪BigQuery中my_table的7天数据历史?
实现方法
因为你没有my_table的管理员权限,核心思路是每日保存当前表的快照到一个你有权限操作的历史表,之后就能随时查询最近7天的历史数据。具体步骤如下:
1. 创建历史存储表(需有数据集/表创建权限)
先在你有权限的数据集下创建一个用来存储每日数据快照的表,比如my_personal_dataset:
CREATE TABLE IF NOT EXISTS my_personal_dataset.item_quantity_history ( item STRING, quantity INT64, snapshot_date DATE -- 存储快照对应的日期 );
2. 每日执行快照插入(推荐用调度查询)
要自动完成每日数据保存,最便捷的方式是用BigQuery的调度查询(若你有权限创建):
- 新建调度查询,设置每日固定时间运行(比如凌晨),执行以下插入语句:
INSERT INTO my_personal_dataset.item_quantity_history (item, quantity, snapshot_date) SELECT item, quantity, CURRENT_DATE() FROM my_table;
- 若没有调度查询权限,可手动每日执行这条SQL,或联系管理员帮你配置调度任务。
3. 查询最近7天的历史数据
到第8天时,执行以下查询就能得到过去7天的所有快照记录,日期格式按你需要的dd.mm.yyyy展示:
SELECT item, quantity, FORMAT_DATE('%d.%m.%Y', snapshot_date) AS record_date FROM my_personal_dataset.item_quantity_history WHERE snapshot_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) ORDER BY snapshot_date;
补充说明
- 如果
my_table每天包含多个不同item,上述方法会自动保存所有item的每日数据,查询时也会返回所有item的7天历史。 - 为避免历史表无限膨胀,可在每日插入后清理7天前的旧数据:
-- 可选:每日插入后清理过期数据 DELETE FROM my_personal_dataset.item_quantity_history WHERE snapshot_date < DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY);
内容的提问来源于stack exchange,提问作者Jawaad Iqbal
相关产品推荐
相关产品推荐

