咨询Foundry Data Connection是否有Transformer可为导入文件添加唯一标识符
在Foundry Data Connection中为导入文件名添加唯一标识符的方案
目前没有直接匹配需求的内置Transformer,但可以通过以下两种方式实现:
1. 自定义Python Transformer(推荐方案)
你可以编写Python Transformer手动修改文件名,嵌入transaction_rid、时间戳或UUID这类标识符:
- 获取transaction_rid:通过Foundry的上下文对象直接调用,比如
ctx.transaction_rid(具体调用方式取决于你使用的Foundry SDK版本) - 生成时间戳/UUID:用Python内置库快速生成,比如UTC时间戳
datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S"),或者随机UUIDuuid.uuid4().hex - 重命名文件:遍历导入的所有文件对象,拼接标识符后写入输出数据集
示例代码片段:
import datetime import uuid from transforms.api import transform, Input, Output @transform( output=Output("/your/output/dataset/path"), input=Input("/your/input/files/path") ) def rename_files_with_identifier(ctx, input, output): # 选择你需要的标识符,这里以transaction_rid为例 identifier = ctx.transaction_rid # 可选:改用时间戳或UUID # identifier = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S") # identifier = uuid.uuid4().hex for file in input.files(): name_parts = file.name.split('.') # 保留原文件名后缀,拼接标识符 new_filename = f"{name_parts[0]}_{identifier}.{name_parts[-1]}" if len(name_parts) > 1 else f"{file.name}_{identifier}" # 将重命名后的文件写入输出 with file.open() as f_in, output.open_file(new_filename) as f_out: f_out.write(f_in.read())
2. 外部预处理 + Ingestion配置(无代码备选)
如果不想编写Transformer,可以在Ingestion流程前通过外部工具给文件添加标识符:
- 比如针对S3源,用AWS Lambda函数监听文件上传事件,自动给新文件重命名并添加时间戳/UUID
- 之后再通过Foundry Data Connection导入处理后的文件,同样能满足APPEND/UPDATE事务的需求
适配APPEND/UPDATE事务的关键要点
- 重命名后的文件不会和数据源中被替换的旧文件同名,能避免APPEND时的重复数据问题
- 标识符可以作为版本标记,后续在UPDATE事务中,能基于标识符快速区分不同版本的文件,实现精准的增量更新
内容的提问来源于stack exchange,提问作者nicornk
相关产品推荐
相关产品推荐

