Azure Data Factory Union活动未合并SQL DB与SQL Server数据集排查
ADF Union活动数据缺失问题排查方案
是否为Schema不匹配问题?
是,这是最可能的原因。Azure Data Factory(ADF)的Union活动默认采用Strict模式,要求两个输入流的列名(大小写敏感)、数据类型完全匹配,否则不匹配的流数据会被自动过滤,且不会触发报错(因为Strict模式下这是预期行为)。哪怕是细微差异(如Country和country、int和bigint类型差异),都会导致其中一方的数据无法进入Union输出。
Union活动配置遗漏点
- 列名大小写一致性:ADF数据流中列名区分大小写,若两个源的列名大小写不一致(如SQL DB用
ConfirmedCases,SQL Server用confirmedcases),Strict模式下会被视为不同列,SQL Server的数据会被排除。 - 数据类型匹配:需确保两个源对应列的数据类型完全一致,例如SQL DB的
Deaths列是int,SQL Server的是bigint,Strict模式下会导致SQL Server的行无法合并。 - Union模式设置:默认的Strict模式要求schema完全匹配,若未切换为Lenient模式,哪怕存在微小schema差异都会过滤数据。
- Source活动投影配置:检查SQL Server的Source活动投影,是否误删了某些列,或修改了列名,导致与SQL DB的列无法匹配。
ADF中调试Union活动的方法
- 启用Debug模式预览数据:打开数据流的Debug模式,在Union活动上右键选择「数据预览」,查看两个输入流的行是否都被传入,以及Union的输出是否包含两边的数据。
- 校验投影元数据:分别进入两个Source活动的「投影」标签页,逐列核对列名、数据类型、精度等信息,确保完全一致。
- 简化测试流程:临时移除Select活动,直接将Union的输出连接到Sink,运行Debug模式查看结果,排除Select活动的影响。
- 查看详细运行日志:在数据流运行配置中,将日志级别设为「Verbose」,运行后查看Union活动的输入输出行数统计,确认SQL Server的输入行数是否正常,以及输出是否包含这些行。
- 逐列排查:先只保留一列(如
Country)进行Union测试,确认数据能合并后,再逐步添加其他列,定位到导致不匹配的具体列。
内容的提问来源于stack exchange,提问作者Xiang Fu
相关产品推荐
相关产品推荐

