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

Azure Synapse Copy Data映射25+列时出现BadRequest错误求助

解决Azure Synapse Copy Data活动Parquet动态列映射超24列报错问题

以下是针对该问题的几种可行解决思路:

1. 源端SQL查询直接重命名列(最简便)

在SQL Server的源查询中提前将含特殊字符的列名转换为Parquet兼容格式,避免在Copy活动中做映射。示例SQL:

SELECT
    [Customer Name] AS Customer_Name,
    [Order (ID)] AS Order_ID,
    -- 依次处理所有95列的列名转换
    * EXCEPT ([Customer Name], [Order (ID)]) -- 或逐个列出所有需要转换的列
FROM YourSourceTable

之后Copy活动启用自动映射即可,无需手动配置列映射,彻底规避列数限制问题。

2. 改用Data Flow替代Copy Data活动

Data Flow的列处理能力更灵活,无此类隐性列数限制:

  • 创建Data Flow,源连接SQL Server,Sink连接ADLS Gen2的Parquet格式
  • 添加派生列转换,使用表达式批量替换列名中的不兼容字符,示例表达式:
    replace(replace($$.name, ' ', '_'), '(', '_').replace(')', '_')
    
    选择"批量创建派生列",将该表达式应用到所有需要转换的列
  • 运行Data Flow,即可正常写入所有列到Parquet文件

3. 直接编辑Copy活动的JSON配置绕过UI限制

若坚持使用Copy Data活动,尝试跳过表达式构建器的UI,直接编辑活动的JSON代码:

  • 进入Copy活动的"代码"视图,找到translator节点
  • 手动添加所有列的映射规则,示例:
    "translator": {
        "type": "TabularTranslator",
        "columnMappings": {
            "Customer Name": "Customer_Name",
            "Order (ID)": "Order_ID",
            // 完整添加95列的映射关系
        }
    }
    
    这种方式可以避开UI层面的列数限制bug

4. 验证Parquet Sink的高级配置

确认Parquet Sink的以下配置无问题:

  • 未勾选"保留源列名"(若勾选会保留原特殊字符列名,导致兼容问题)
  • 文件写入模式设置正确(如"追加"或"覆盖",无冲突)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:53:08