You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取7天前表的记录数、大小等历史元数据信息

获取7天前表记录数与大小的可行方案

方法1:用时间旅行直接统计(高效快捷)

虽然information_schema.tables不支持时间旅行,但可以直接对目标表使用时间旅行语法,借助聚合函数快速计算记录数,再通过$ROW_SIZE估算表存储大小:

-- 计算7天前的记录数
SELECT COUNT(*) AS record_count
FROM your_table_name AT(OFFSET => -604800); -- 7*24*60*60=604800秒

-- 估算7天前的表大小(字节)
SELECT COUNT(*) * AVG($ROW_SIZE) AS table_size_bytes
FROM your_table_name AT(OFFSET => -604800);

这种方式无需全表扫描,Snowflake会利用微分区统计信息加速计算,比直接遍历表数据更高效。

方法2:提前构建元数据快照表(适合频繁查询历史数据)

如果需要多次查询历史元数据,建议每天定时将information_schema.tables的关键数据快照到自定义表中:

-- 初始化快照表
CREATE TABLE table_metadata_history (
  snapshot_dt DATE,
  schema_name VARCHAR,
  table_name VARCHAR,
  row_count NUMBER,
  total_size_bytes NUMBER
);

-- 每日执行的快照插入脚本
INSERT INTO table_metadata_history
SELECT
  CURRENT_DATE(),
  table_schema,
  table_name,
  table_rows,
  data_length + index_length
FROM information_schema.tables
WHERE table_schema = 'your_target_schema' 
  AND table_name = 'your_target_table';

后续查询7天前的数据只需直接查快照表:

SELECT row_count, total_size_bytes
FROM table_metadata_history
WHERE snapshot_dt = DATEADD(DAY, -7, CURRENT_DATE())
  AND table_name = 'your_target_table';

方法3:利用Snowflake的ACCOUNT_USAGE视图(精准存储数据)

Snowflake的ACCOUNT_USAGE.TABLE_STORAGE_METRICS视图会保留最多1年的表存储历史数据,可直接获取7天前的存储大小,搭配时间旅行的记录数查询即可:

-- 获取7天前的表存储大小
SELECT storage_bytes AS table_size_bytes
FROM account_usage.table_storage_metrics
WHERE table_name = 'your_target_table'
  AND date = DATEADD(DAY, -7, CURRENT_DATE());

内容的提问来源于stack exchange,提问作者Koushik Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:39:59