Microsoft Fabric Data Factory复制活动如何引用REST响应生成动态文件名?
在Microsoft Fabric Data Factory中获取REST API响应字段用于命名文件及后续活动
方法1:用Lookup活动预取REST响应字段
- 先添加一个Lookup活动,配置和Copy Data活动完全一致的REST API数据源(确保能获取到单条JSON响应,若返回数组,可通过设置限制条数或取第一条数据)
- Lookup活动执行后,可通过表达式直接提取响应中的字段:
- 客户名称:
@activity('Lookup REST Response').output.firstRow.customer_name - 日期字段:
@activity('Lookup REST Response').output.firstRow.date_field
- 客户名称:
- 把这些表达式直接用到Copy Data活动的目标文件名配置中,比如拼接成:
concat('customer_', @activity('Lookup REST Response').output.firstRow.customer_name, '_', @activity('Lookup REST Response').output.firstRow.date_field, '.json') - 后续活动也可以直接引用这些表达式来获取字段值。
方法2:用Web活动调用API并提取字段
- 添加Web活动,配置REST API的调用参数(请求方法、认证、头部信息等和Copy Data活动保持一致)
- Web活动的输出中直接包含API响应内容,提取字段的表达式示例:
- 客户名称:
@activity('Web REST Call').output.customer_name - 日期字段:
@activity('Web REST Call').output.date_field
- 客户名称:
- 同样将这些表达式用于Copy Data的目标文件名,后续活动也能直接复用。
方法3:写入文件后通过Notebook提取字段(适用于大数据量场景)
如果REST响应数据量较大,不适合预取,可先写入临时文件,再通过Notebook提取字段:
- Copy Data活动先将JSON写入Lakehouse的临时路径,文件名可设为固定值(比如
temp_response.json) - 添加Notebook活动,连接目标Lakehouse,编写PySpark代码读取文件并提取字段:
import json from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() # 替换为你的Lakehouse路径 df = spark.read.json("abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>/temp_response.json") customer_name = df.select("customer_name").first()[0] date_field = df.select("date_field").first()[0] # 将结果输出给管道 dbutils.notebook.exit(json.dumps({"customer_name": customer_name, "date_field": date_field})) - 在管道中通过
@json(activity('Extract JSON Fields').output).customer_name提取字段值,供后续活动使用。
注意事项
- 确保REST API返回的是结构化JSON,字段路径正确,避免表达式报错
- Lookup/Web活动的认证配置要和Copy Data活动一致,保证能正常调用API
内容的提问来源于stack exchange,提问作者Jazza
相关产品推荐
相关产品推荐

