You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse中基于Delta表版本创建视图的T-SQL方法及自动实现

解决方案

一、管道更新后自动创建/刷新指向最新Delta表的视图

由于不能使用Notebook、Databricks或Dataflow,可通过T-SQL存储过程 + Synapse管道Execute SQL活动实现自动化:

  1. 创建存储过程,用于创建或替换指向最新Delta版本的视图
    Delta表默认读取行为就是获取最新版本,因此只需让视图直接指向ADLS中的Delta表路径即可。执行以下T-SQL创建存储过程:
CREATE OR ALTER PROCEDURE dbo.RefreshDeltaLatestView
AS
BEGIN
    SET NOCOUNT ON;
    -- 替换为你的实际参数
    DECLARE @deltaStoragePath NVARCHAR(1000) = 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<Delta表路径>';
    DECLARE @targetViewName NVARCHAR(128) = 'dbo.LatestDeltaTableView';
    
    -- 动态生成创建视图的SQL
    DECLARE @createViewSql NVARCHAR(MAX) = N'
    CREATE OR ALTER VIEW ' + @targetViewName + N'
    AS
    SELECT *
    FROM OPENROWSET(
        BULK ''' + @deltaStoragePath + N''',
        FORMAT = ''DELTA''
    ) AS delta_data';
    
    EXEC sp_executesql @createViewSql;
END
  1. 在Synapse管道中添加触发逻辑
    在管道完成Delta表更新的活动(比如Copy Data或其他更新操作)之后,添加一个Execute SQL活动,选择你的Synapse SQL池,执行语句:
EXEC dbo.RefreshDeltaLatestView;

这样每次管道更新Delta表后,会自动调用存储过程刷新视图,确保视图始终指向最新版本。

二、使用T-SQL基于Delta特定版本创建视图

完全可以通过T-SQL实现,利用Delta的版本查询语法,在OPENROWSET的BULK路径中添加版本参数即可:

按版本号创建视图

CREATE OR ALTER VIEW dbo.DeltaTableVersion3View
AS
SELECT *
FROM OPENROWSET(
    BULK 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<Delta表路径>?versionAsOf=3',
    FORMAT = 'DELTA'
) AS delta_version_data;

按时间戳创建视图

时间戳需采用ISO 8601 UTC格式:

CREATE OR ALTER VIEW dbo.DeltaTableTimestampView
AS
SELECT *
FROM OPENROWSET(
    BULK 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<Delta表路径>?timestampAsOf=2024-05-20T08:30:00Z',
    FORMAT = 'DELTA'
) AS delta_timestamp_data;

注意:确保你的Synapse SQL池有访问ADLS Gen2的权限(比如通过MSI或SAS密钥配置),否则OPENROWSET无法读取Delta表数据。

内容的提问来源于stack exchange,提问作者Anish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:12:42