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

如何在Azure Synapse中用ForEach活动遍历SQL参数表?

在Azure Synapse中将专用SQL池参数表数据转为数组用于ForEach活动

核心思路

把专用SQL池参数表的查询结果,通过表达式转换为你之前使用的JSON数组格式,直接喂给ForEach活动循环处理。

具体实现步骤

  1. 获取参数表数据

    • 使用Lookup活动(推荐,语法更简洁):
      • 连接选择你的专用SQL池
      • 查询语句写 SELECT source_table, destination_file, source_system, loadtype FROM parameters
      • 执行后,活动输出的output.value就是包含所有行数据的数组,每个元素是键值对形式的行对象。

    或者用Execute SQL活动调用get_parameters存储过程:

    • 连接选择专用SQL池,活动类型选Stored procedure,指定存储过程名称get_parameters
    • 执行后,数据在output.resultSets[0].rows中。
  2. 转换为目标JSON数组格式
    在ForEach活动的Items属性中,使用表达式将每行数据转换为你需要的结构:

    • 如果用Lookup活动:
      @map(activity('Lookup Parameters').output.value, (row) => createObject(
          'source', createObject('table', row.source_table),
          'destination', createObject('filename', row.destination_file),
          'source_system', row.source_system,
          'loadtype', row.loadtype
      ))
      
    • 如果用Execute SQL活动:
      @map(activity('Execute SQL Get Parameters').output.resultSets[0].rows, (row) => createObject(
          'source', createObject('table', row.source_table),
          'destination', createObject('filename', row.destination_file),
          'source_system', row.source_system,
          'loadtype', row.loadtype
      ))
      

    这里用createObject函数构建JSON对象,比字符串拼接更可靠,避免引号转义问题。

  3. 复用原有逻辑
    现在ForEach活动的循环项就是和之前管道参数完全一致的JSON对象,直接用item()传递参数给子管道即可,原有switch、条件判断等逻辑不需要修改。

验证方法

可以在管道调试时,查看ForEach活动的输入,确认数组结构和之前的参数格式一致,比如:

[{"source":{"table":"Address"},"destination":{"filename":"Address.parquet"},"source_system":"SQL","loadtype":"full"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:55:15