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

如何查询Snowflake中指定表/数据库的微分区数?含时间旅行留存情况

Snowflake微分区查询指南

当然没问题!我来给你详细讲讲怎么在Snowflake里查询微分区的相关信息,包括你关心的时间旅行留存部分:

1. 查询指定表的总微分区数量

要获取某张表的所有微分区(包括当前活跃和时间旅行留存的),可以直接查询INFORMATION_SCHEMA.PARTITIONS视图——这是Snowflake官方提供的元数据视图,信息准确可靠:

SELECT COUNT(*) AS total_micro_partitions
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_CATALOG = '你的数据库名称'
  AND TABLE_SCHEMA = '你的模式名称'
  AND TABLE_NAME = '目标表名称';

把占位符替换成你实际的数据库、模式和表名,执行后就能得到该表的微分区总数。

2. 拆分查看活跃微分区与时间旅行留存微分区

如果想单独区分当前正在使用的活跃微分区,以及因时间旅行保留的历史微分区数量,可以通过PARTITION_TYPE字段来筛选,这个字段会明确标记每个微分区的类型:

SELECT
  PARTITION_TYPE,
  COUNT(*) AS partition_count
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_CATALOG = '你的数据库名称'
  AND TABLE_SCHEMA = '你的模式名称'
  AND TABLE_NAME = '目标表名称'
GROUP BY PARTITION_TYPE;

执行后会返回对应结果(如果有时间旅行数据的话):ACTIVE行对应当前活跃的微分区,TIME_TRAVEL行就是时间旅行留存的部分。

3. 无法查询单表时,查询整个数据库的微分区情况

如果因为权限或其他原因无法查询指定表,你可以直接统计整个数据库的微分区情况,甚至按表分组查看每个表的明细:

-- 统计数据库所有微分区总数(含时间旅行)
SELECT COUNT(*) AS database_total_micro_partitions
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_CATALOG = '你的数据库名称';

-- 按表分组,查看每个表的微分区拆分情况
SELECT
  TABLE_SCHEMA,
  TABLE_NAME,
  PARTITION_TYPE,
  COUNT(*) AS partition_count
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_CATALOG = '你的数据库名称'
GROUP BY TABLE_SCHEMA, TABLE_NAME, PARTITION_TYPE
ORDER BY TABLE_SCHEMA, TABLE_NAME;

这样就能对整个数据库的微分区使用情况有全面的了解。

小提示

  • 确保你拥有SELECT权限访问INFORMATION_SCHEMA.PARTITIONS视图,否则会查询失败;
  • 对于外部表或者共享表,这个视图的部分字段可能会有差异,但内部表的查询逻辑完全适用。

内容的提问来源于stack exchange,提问作者Eric Mamet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:29