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

Azure Data Factory向Salesforce Upsert时添加UNION后出现必填字段缺失错误

ADF复制活动Upsert到Salesforce触发REQUIRED_FIELD_MISSING错误(添加UNION后)

问题描述

通过Azure Data Factory(ADF)复制活动的Upsert功能,将存储过程生成的数据加载到Salesforce。原本管道运行正常,在存储过程中添加UNION操作后,出现以下错误:

ErrorCode=SalesforceOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Salesforce Operation Failed: REQUIRED_FIELD_MISSING:Required fields are missing: [ERROR_EXAMPLE_FIELD]:ERROR_EXAMPLE_FIELD --,Source=Microsoft.DataTransfer.Runtime.SalesforceConnector,'

确认ERROR_EXAMPLE_FIELD存在于存储过程中且未修改,已将Upsert ID设为对象主键"ID",尝试将缺失字段设为Upsert ID、重新创建复制活动均无效;恢复存储过程修改后可正常运行,但需保留UNION的修改。

存储过程代码:

SELECT 
          curated.[Id]
        , curated.[ERROR_EXAMPLE_FIELD]  
FROM curated_hash curated
LEFT JOIN staging Staging
    ON curated.id = Staging.Id 
WHERE curated.Hash_id != staging.Hash_id

UNION

SELECT 
          verify_new_record.[Id]
        , verify_new_record.[ERROR_EXAMPLE_FIELD]
FROM verify_new_record

原因分析

核心问题出在UNION后的结果集中存在ERROR_EXAMPLE_FIELD为NULL的行,而Salesforce中该字段是必填项:

  • 第一个SELECT语句通过LEFT JOIN获取的数据,ERROR_EXAMPLE_FIELD均有有效值(否则原管道不会正常运行);
  • 第二个SELECT语句的verify_new_record表中,部分行的ERROR_EXAMPLE_FIELD为NULL,UNION合并结果集后,这些NULL值行被传入Salesforce,触发必填字段缺失错误;
  • UNION操作不会修改字段名,但会保留所有行数据,包括NULL值行。

解决方案

  1. 排查并修复NULL值行
    执行以下SQL检查verify_new_record表中是否存在ERROR_EXAMPLE_FIELD为NULL的行:

    SELECT Id, ERROR_EXAMPLE_FIELD FROM verify_new_record WHERE ERROR_EXAMPLE_FIELD IS NULL
    

    根据业务逻辑补充有效值,或直接过滤掉此类行。

  2. 修改存储过程处理NULL值
    如果允许对NULL值做默认值填充,可在第二个SELECT中用ISNULL或COALESCE处理:

    SELECT 
           verify_new_record.[Id]
         , ISNULL(verify_new_record.[ERROR_EXAMPLE_FIELD], '') AS ERROR_EXAMPLE_FIELD -- 字符串类型用空串,数字类型用0,根据字段类型调整
    FROM verify_new_record
    

    若需过滤NULL值行,添加WHERE条件:

    SELECT 
           verify_new_record.[Id]
         , verify_new_record.[ERROR_EXAMPLE_FIELD]
    FROM verify_new_record
    WHERE ERROR_EXAMPLE_FIELD IS NOT NULL
    
  3. 验证ADF源结果集与字段映射
    在ADF复制活动的源配置中,预览存储过程的输出结果,确认ERROR_EXAMPLE_FIELD列无NULL值;同时检查字段映射,确保该字段正确对应到Salesforce的目标字段。

  4. 确认Salesforce字段属性
    检查Salesforce对应对象的ERROR_EXAMPLE_FIELD是否仍为必填字段,是否有近期配置变更。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:17:12