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

咨询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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:50:21