如何获取RedShift Spectrum查询访问的S3唯一文件列表?
获取聚合查询访问的S3唯一文件列表解决方案
直接通过内置虚拟列$path获取
多数基于S3的查询引擎(如Athena、Redshift Spectrum)都提供$path虚拟列,直接返回每条数据对应的S3源文件路径。你可以通过以下方式获取所需信息:
- 获取查询扫描的所有唯一S3文件
如果只需要本次查询访问的全部唯一文件列表,执行以下查询:
SELECT DISTINCT "$path" AS s3_file_path FROM our_schema.log_data t WHERE t.date BETWEEN '2011-01-01' AND '2012-01-01';
- 保留原聚合结果+对应分组的文件列表
如果需要同时得到按date聚合的统计数据,以及每个日期对应的访问文件列表,用ARRAY_AGG(DISTINCT)收集唯一路径:
SELECT t.date, COUNT(*) AS rec_count, ARRAY_AGG(DISTINCT "$path") AS s3_files_accessed FROM our_schema.log_data t WHERE t.date BETWEEN '2011-01-01' AND '2012-01-01' GROUP BY t.date;
注意事项
- 部分引擎中
$path可能需要大写(如$PATH),请根据实际使用的查询引擎调整语法。 - 虚拟列默认启用,无需额外配置即可直接使用。
内容的提问来源于stack exchange,提问作者bpeikes
相关产品推荐
相关产品推荐

