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

如何为Trino关联S3的外部表添加源文件名标识列?

在Trino Hive外部表中添加源文件名列的实现方案

针对你的需求,Trino(原Presto)的Hive连接器提供了两种简洁的方式来获取数据对应的源文件名:

方法一:查询时直接获取文件名

无需修改表结构,使用Trino内置的filename()函数即可返回当前行所属的源文件名称(如abc.json)。示例查询语句:

SELECT 
    id, 
    name, 
    filename() AS source_filename
FROM hive.qual2.surveys;

如果需要完整的S3文件路径(如s3://test-bucket/surveys/abc.json),可以替换为$path变量:

SELECT 
    id, 
    name, 
    $path AS source_file_path
FROM hive.qual2.surveys;

方法二:修改表结构,添加虚拟列

如果希望每次查询都默认包含文件名列,可以通过ALTER TABLE给现有表添加一个基于filename()的虚拟列:

ALTER TABLE hive.qual2.surveys
ADD COLUMN source_filename VARCHAR AS filename();

若重新创建表,也可以直接在表定义中包含该虚拟列:

CREATE TABLE hive.qual2.surveys 
(
    id VARCHAR,
    name VARCHAR,
    source_filename VARCHAR AS filename()
)
WITH (
    format = 'JSON',
    external_location = 's3://test-bucket/surveys'
);

虚拟列不会实际存储数据,而是在查询时动态计算,因此不会增加存储开销。

内容的提问来源于stack exchange,提问作者jan-seins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:47:41