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

Snowflake外部阶段:如何结合现有查询获取文件数量及总大小?

在Snowflake外部阶段获取符合条件文件的数量与大小总和

你不需要借助LIST命令,Snowflake允许直接在阶段查询中通过元数据列获取文件大小,直接扩展你的原有SQL即可实现需求。

方案1:直接聚合(适用于无重复文件名的场景)

SELECT
  COUNT(DISTINCT METADATA$FILENAME) AS file_count,
  SUM(METADATA$FILE_SIZE) AS total_file_size_bytes
FROM @STAGE_NAME
WHERE METADATA$FILE_LAST_MODIFIED > (SELECT MAX(end_time) FROM <table_name>);

方案2:先去重再聚合(更严谨,避免重复文件干扰)

如果担心阶段中存在重名文件(尽管这种情况很少见),可以先通过子查询去重文件名和对应大小,再统计:

SELECT
  COUNT(*) AS file_count,
  SUM(file_size) AS total_file_size_bytes
FROM (
  SELECT DISTINCT
    METADATA$FILENAME,
    METADATA$FILE_SIZE AS file_size
  FROM @STAGE_NAME
  WHERE METADATA$FILE_LAST_MODIFIED > (SELECT MAX(end_time) FROM <table_name>)
);

额外说明:单位转换

如果需要将字节转换为更易读的MB/GB,可以修改求和部分:

-- 转换为MB
SUM(file_size)/1024/1024 AS total_file_size_mb
-- 转换为GB
SUM(file_size)/1024/1024/1024 AS total_file_size_gb

LIST命令属于Snowflake的命令行/UI操作命令,无法直接嵌入SQL查询逻辑,而使用METADATA$FILE_SIZE元数据列是更高效、更贴合SQL工作流的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:06:01