Azure Data Factory复制活动查询同名表报错,求修改表达式或使用关联名
解决方案
方案一:给其中一张表添加后缀(按你之前的建议)
修改原表达式,给Domain参数对应的那张表(即dbo架构的toMasterPolicy)添加V2后缀,同时同步调整查询中所有对该表的引用:
@concat('SELECT t1.* FROM ',pipeline().parameters.tempdb,'.',pipeline().parameters.deltaschema,'.',pipeline().parameters.TableName,' t1 LEFT OUTER JOIN ',pipeline().parameters.tempdb,'.',pipeline().parameters.Domain,'.',concat(pipeline().parameters.TableName,'V2'),' t2 ON t1.signature = t2.signature WHERE t2.signature IS NULL')
说明:
- 给dlt架构的表起别名
t1,dbo架构的表使用TableNameV2作为表名并起别名t2 - 所有字段引用都改用别名,彻底避免名称冲突
方案二:使用SQL关联名(表别名)区分(更推荐的标准SQL写法)
不需要修改实际表名,直接给两张表分配不同的别名,全程用别名引用即可:
@concat('SELECT t1.* FROM ',pipeline().parameters.tempdb,'.',pipeline().parameters.deltaschema,'.',pipeline().parameters.TableName,' t1 LEFT OUTER JOIN ',pipeline().parameters.tempdb,'.',pipeline().parameters.Domain,'.',pipeline().parameters.TableName,' t2 ON t1.signature = t2.signature WHERE t2.signature IS NULL')
说明:
t1代表dlt架构下的toMasterPolicy表,t2代表dbo架构下的同名表- 通过别名区分两张表,解决SQL引擎无法识别重复表名的问题
- 这种方式无需改动表本身,适配性更强
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

