[英]update and insert into Azure data warehouse using Azure data factory pipelines
我正在尝试运行adf复制管道,并更新和插入本应替换merge语句的语句。 基本上是这样的语句:
UPDATE TARGET
SET ProductName = SOURCE.ProductName,
TARGET.Rate = SOURCE.Rate
FROM Products AS TARGET
INNER JOIN UpdatedProducts AS SOURCE
ON TARGET.ProductID = SOURCE.ProductID
WHERE TARGET.ProductName <> SOURCE.ProductName
OR TARGET.Rate <> SOURCE.Rate
INSERT Products (ProductID, ProductName, Rate)
SELECT SOURCE.ProductID, SOURCE.ProductName, SOURCE.Rate
FROM UpdatedProducts AS SOURCE
WHERE NOT EXISTS
(
SELECT 1
FROM Products
WHERE ProductID = SOURCE.ProductID
)
如果目标是Azure SQL数据库,则可以使用以下方式: https : //www.taygan.co/blog/2018/04/20/upsert-to-azure-sql-db-with-azure-data-factory但如果目标是adw,则不存在存储过程选项! 有什么建议吗? 我必须先拥有一个临时表,然后运行更新并将语句从stg_table插入到target_table吗? 还是有可能直接从adf做到这一点?
如果您不能使用存储过程,我的建议是创建第二个副本数据转换。 在第二个转换上运行前脚本,并放下该表,因为它是您在第一个转换上创建的临时表。
BEGIN
MERGE Target AS target_sqldb
USING TempTable AS source_tblstg
ON (target_sqldb.Id= source_tblstg.Id)
WHEN MATCHED THEN
UPDATE SET
[Name] = source_tblstg.Name,
[State] = source_tblstg.State
WHEN NOT MATCHED THEN
INSERT([Name], [State])
VALUES (source_tblstg.Name, source_tblstg.State);
DROP TABLE TempTable;
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.