教程:在语句级别使用 T-SQL 进行时间旅行
在本文中,了解如何使用 T-SQL 在语句级别在仓库中进行时间旅行。 此功能可在保留期内查询过去显示的数据。
注意
目前,时间旅行只使用协调世界时 (UTC) 时区。
按时间顺序查看
在此示例中,我们将更新一行,并演示如何使用 FOR TIMESTAMP AS OF
查询提示轻松查询上一个的值。
从功能区的“主页”选项卡选择“新建 SQL 查询”。
在查询编辑器中,粘贴以下代码以创建查看
Top10CustomerView
。 选择“运行”以执行查询。CREATE VIEW dbo.Top10CustomersView AS SELECT TOP (10) FS.[CustomerKey], DC.[Customer], SUM(FS.TotalIncludingTax) AS TotalSalesAmount FROM [dbo].[dimension_customer] AS DC INNER JOIN [dbo].[fact_sale] AS FS ON DC.[CustomerKey] = FS.[CustomerKey] GROUP BY FS.[CustomerKey], DC.[Customer] ORDER BY TotalSalesAmount DESC;
在资源管理器中,通过展开
dbo
架构下的视图节点,验证是否可以看到新创建的视图Top10CustomersView
。创建另一个新查询,与步骤 1 类似。 从功能区的“主页”选项卡选择“新建 SQL 查询”。
在查询编辑器中粘贴以下代码。 这将
SaleKey
值为22632918
的记录的TotalIncludingTax
列值更新为200000000
。 选择“运行”以执行查询。/*Update the TotalIncludingTax value of the record with SaleKey value of 22632918*/ UPDATE [dbo].[fact_sale] SET TotalIncludingTax = 200000000 WHERE SaleKey = 22632918;
在查询编辑器中粘贴以下代码。
CURRENT_TIMESTAMP
T-SQL 函数将当前 UTC 时间戳作为日期/时间返回。 选择“运行”以执行查询。SELECT CURRENT_TIMESTAMP;
将返回的时间戳值复制到剪贴板。
将以下代码粘贴到查询编辑器中,并将时间戳值替换为从上一步获取的当前时间戳值。 时间戳语法格式为
YYYY-MM-DDTHH:MM:SS[.FFF]
。去掉末尾的零,例如:
2024-04-24T20:59:06.097
。以下示例返回
TotalIncludingTax
的前十客户列表,包括SaleKey
22632918
的新值。 选择“运行”以执行查询。/*View of Top10 Customers as of today after record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:59:06.097');
将以下代码粘贴到查询编辑器中,并将时间戳值替换为执行更新脚本之前的时间以更新
TotalIncludingTax
值。 这将返回TotalIncludingTax
更新SaleKey
22632918 之前的前十大客户名单。 选择“运行”以执行查询。/*View of Top10 Customers as of today before record updates*/ SELECT * FROM [WideWorldImporters].[dbo].[Top10CustomersView] OPTION (FOR TIMESTAMP AS OF '2024-04-24T20:49:06.097');
有关更多示例,请参阅如何在语句级别使用时间旅行进行查询。