Azure Synapse管道如何为每行原始数据添加唯一GUID?
解决Azure Synapse导入Excel时为每行生成唯一GUID的问题
方法一:使用数据流(Data Flow)实现(推荐)
- 在Synapse管道中添加数据流活动,替换原有的Copy Data活动
- 配置数据源:选择Excel类型,连接到存储账户中的目标xlsx文件,设置正确的工作表和数据范围
- 添加派生列转换:新增名为
Id的列,输入表达式uuid()——这个函数会为每一行单独生成唯一GUID - 配置数据目标:选择SQL数据库表,确保
Id列与目标表的对应列正确映射 - 运行管道,即可完成带唯一GUID的数据导入
方法二:通过临时表中转生成GUID
- 先创建一个SQL临时表,结构与目标表一致,但将
Id列设为允许NULL(或移除非空约束) - 使用Copy Data活动将Excel数据完整导入到这个临时表
- 添加存储过程活动,执行如下SQL语句为每行生成唯一GUID:
UPDATE 临时表名称 SET Id = NEWID() WHERE Id IS NULL; - 最后将临时表的数据插入到目标正式表(或直接修改临时表为正式表的约束)
为什么Copy Data活动中直接用@guid()不行?
@guid()是Synapse管道的全局表达式,在Copy Data活动启动时只会计算一次,所以所有行都会复用同一个GUID值,无法实现行级唯一标识。
内容的提问来源于stack exchange,提问作者Waleed Alfaris
相关产品推荐
相关产品推荐

