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

Snowflake使用通配符读取S3存储桶同前缀文件失败如何解决

问题说明

需求为读取S3存储桶中所有文件名前缀相同的文件。
S3存储桶文件列表截图
执行以下SQL未实现预期效果:

with s3 as  (
  select  $1 as json_array
  from '@stage/airflow/reponse__2022-06-06_05*'
  (file_format => 'public.S3_JSON')
)
select f.value,f.value:CompanyId
from s3, Table(Flatten(s3.json_array)) f
排查&修复方案

按优先级依次调整:

  • 修正路径拼写错误:代码中reponse为拼写错误,正确拼写为response,先将路径修改为@stage/airflow/response__2022-06-06_05*再测试。
  • 验证单文件JSON解析逻辑:先取一个符合前缀规则的实际存在的文件,执行查询确认JSON能正常读取,示例语句:
select $1 from '@stage/airflow/response__2022-06-06_05_00.json' (file_format => 'public.S3_JSON') limit 1;

如果单文件查询返回结果异常,检查public.S3_JSON文件格式配置:如果单文件内的JSON根节点是数组,要么在文件格式参数中开启STRIP_OUTER_ARRAY = TRUE直接自动展开外层数组,要么确认$1返回值是合法ARRAY类型,否则FLATTEN函数会因输入类型不合法返回空值或直接报错。

  • 调整通配符匹配规则:Snowflake中单*通配符仅匹配当前目录层级的任意字符,如果同前缀文件存放在airflow路径的子目录下,需要将通配符写法调整为@stage/airflow/**/response__2022-06-06_05*,才能递归匹配所有子目录下的符合前缀规则的文件。
  • 校验权限配置:如果以上调整后仍无法读取文件,执行DESC STAGE <你的实际stage名>;确认当前使用的角色拥有对应stage的读取权限,同时检查S3侧配置的访问凭证对应的IAM策略,已授予对应前缀路径下的s3:ListBucket和s3:GetObject权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:39:20