Azure Synapse-增量数据加载
我们使用Azure data Factory将数据从prem数据库服务器加载到Azure data Lake Storage Gen2,并将其存储为拼花文件。每次运行时,我们只从上次运行中获取新的和修改过的数据,并使用databricksmerge语句向上插入到现有的拼花地板文件中 现在我们正试图将这些数据从拼花地板文件转移到Azure Synapse。理想情况下,我想这样做Azure Synapse-增量数据加载,azure,azure-sql-database,azure-data-factory-2,azure-sql-data-warehouse,azure-synapse,Azure,Azure Sql Database,Azure Data Factory 2,Azure Sql Data Warehouse,Azure Synapse,我们使用Azure data Factory将数据从prem数据库服务器加载到Azure data Lake Storage Gen2,并将其存储为拼花文件。每次运行时,我们只从上次运行中获取新的和修改过的数据,并使用databricksmerge语句向上插入到现有的拼花地板文件中 现在我们正试图将这些数据从拼花地板文件转移到Azure Synapse。理想情况下,我想这样做 将增量加载数据读入外部表。(CETAS或副本) 进入) 使用上面的作为暂存表 将临时表与生产表合并 问题是合并语句在
- 将增量加载数据读入外部表。(CETAS或副本) 进入)
- 使用上面的作为暂存表
- 将临时表与生产表合并
CREATE TABLE dbo.[DimProduct_upsert]
WITH
( DISTRIBUTION = HASH([ProductKey])
, CLUSTERED INDEX ([ProductKey])
)
AS
-- New rows and new versions of rows
SELECT s.[ProductKey]
, s.[EnglishProductName]
, s.[Color]
FROM dbo.[stg_DimProduct] AS s
UNION ALL
-- Keep rows that are not being touched
SELECT p.[ProductKey]
, p.[EnglishProductName]
, p.[Color]
FROM dbo.[DimProduct] AS p
WHERE NOT EXISTS
( SELECT *
FROM [dbo].[stg_DimProduct] s
WHERE s.[ProductKey] = p.[ProductKey]
)
;
RENAME OBJECT dbo.[DimProduct] TO [DimProduct_old];
RENAME OBJECT dbo.[DimProduct_upsert] TO [DimProduct];
基本上使用CTA删除并重新创建生产表。对于小尺寸的表,它可以很好地工作,但是我担心有1亿行索引的大型事实表。任何关于为真正大型事实表执行增量加载的最佳方法的建议。谢谢 在正式支持SQL合并之前,fwd更新目标表的推荐方法是在增量记录和目标表之间使用T SQL insert/update命令 或者,您也可以使用映射数据流(在ADF中)来模拟用于维度/事实数据加载的SCD事务