如何使用Azure Synapse无服务器SQL池查询Delta Lake表的最新版本
Azure Synapse无服务器SQL池查询Delta Lake最新版本实操方法
官方说明原文:"You can use serverless SQL pool to query the latest version of Delta Lake"
无服务器SQL池查询Delta Lake时默认读取的就是表的最新版本,无需额外指定版本参数,以下是两种常用场景的实操示例:
场景1:即席查询(无需提前创建表对象)
直接通过OPENROWSET指定Delta格式即可查询,示例如下:
SELECT TOP 10 * FROM OPENROWSET( -- 替换为你的Delta表在ADLS Gen2的根目录路径 BULK 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<Delta表目录路径>/', FORMAT = 'DELTA' ) AS delta_latest_version
场景2:预创建外部表后查询
如果需要高频查询该Delta表,可提前创建指向Delta存储的外部表,后续直接查询外部表即可默认返回最新版本数据:
- 第一步:先创建Delta格式的外部文件格式(如果未创建过)
CREATE EXTERNAL FILE FORMAT DeltaFileFormat WITH ( FORMAT_TYPE = DELTA );
- 第二步:创建外部表
CREATE EXTERNAL TABLE dbo.your_delta_table ( -- 替换为你的Delta表对应的字段和字段类型 id INT, username VARCHAR(100), create_time DATETIME2 ) WITH ( LOCATION = '<Delta表目录路径>/', -- 替换为Delta表根目录的相对路径 DATA_SOURCE = <你提前创建的ADLS外部数据源名称>, FILE_FORMAT = DeltaFileFormat ) GO
- 第三步:直接查询外部表获取最新版本数据
SELECT * FROM dbo.your_delta_table
补充说明
仅当你需要查询历史版本数据时,才需要额外指定DELTAVERSION(按版本号查询)或DELTATIMESTAMP(按时间戳查询)参数,示例如下:
-- 查询版本号为5的历史版本数据 SELECT * FROM OPENROWSET( BULK 'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<Delta表目录路径>/', FORMAT = 'DELTA', DELTAVERSION = 5 ) AS delta_history_version
内容的提问来源于stack exchange,提问作者ManiK
相关产品推荐
相关产品推荐

