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

Azure Data Factory中动态提取Databricks活动runOutput嵌套值的实现方案

Azure Data Factory 动态提取Databricks runOutput键值为数组方案

场景一:直接用ADF表达式+ForEach活动实现(推荐)

核心利用ADF的keys()(获取对象所有键)和values()(获取对象所有值组成数组)函数,无需嵌套循环:

  1. 创建变量:在管道中新建一个Object类型的变量,命名为finalResult,用于存储最终的键-数组映射。

  2. 配置外层ForEach活动:

    • 设置ForEach的Items表达式为:
      @keys(activity('landing to raw mailing').output.runOutput)
      
      该表达式会返回runOutput下所有键的数组(如["index","t0","t1","name","CA",...]),实现循环10个键的需求。
    • (可选)勾选Sequential选项,避免变量并发更新冲突。
  3. 在ForEach内部添加Set Variable活动:

    • 目标变量选择finalResult,设置表达式为:
      @union(variables('finalResult'), createObject(item(), values(activity('landing to raw mailing').output.runOutput[item()])))
      
      解释:
      • item()表示当前循环的键(如"CA")
      • values(...)直接将该键下的对象值转为数组
      • createObject(...)生成当前键与对应数组的键值对
      • union(...)将新的键值对合并到finalResult变量中

执行完成后,finalResult变量中就会存储所有键对应的数组,比如{"CA":[6710065.65,257580.69,171109.65], ...}。


场景二:存储JSON文件后解析提取

如果需要持久化runOutput数据,可采用此方案:

  1. 将runOutput写入JSON文件:

    • 添加Copy Data活动:
      • 数据源选择Azure Data Factory → Pipeline Expression,设置源表达式为:
        @string(activity('landing to raw mailing').output.runOutput)
        
      • 数据目标选择存储服务(如ADLS Gen2),创建JSON格式的数据集,指定存储路径和文件名。
  2. 读取并解析JSON文件:

    • 添加Lookup活动,读取刚才生成的JSON文件,确保First row only设为True(因为整个runOutput是单个JSON对象)。
    • 后续逻辑同场景一:
      • 创建finalResult变量
      • 配置ForEach活动,Items设为@keys(activity('Lookup_RunOutput').output.firstRow)
      • 内部用Set Variable活动,表达式为:
        @union(variables('finalResult'), createObject(item(), values(activity('Lookup_RunOutput').output.firstRow[item()])))
        

关键表达式说明

  • keys(object):返回对象所有属性名的数组
  • values(object):返回对象所有属性值的数组
  • createObject(key, value):生成单个键值对的对象
  • union(object1, object2):合并两个对象的键值对

内容的提问来源于stack exchange,提问作者ayoub mlaouah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:35:17