教程:在语句级别使用 T-SQL 进行时间旅行(预览版)

在本文中,了解如何使用 T-SQL 在语句级别在仓库中进行时间旅行。 此功能可在保留期内查询过去显示的数据。

注意

目前,时间旅行只使用协调世界时 (UTC) 时区。

按时间顺序查看

在此示例中,我们将更新一行,并演示如何使用 FOR TIMESTAMP AS OF 查询提示轻松查询上一个的值。

  1. 从功能区的“主页”选项卡选择“新建 SQL 查询”。

    Fabric 门户网站新的 SQL 查询按钮的截图。

  2. 在查询编辑器中,粘贴以下代码以创建查看 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;
    
  3. 资源管理器中,通过展开 dbo 架构下的视图节点,验证是否可以看到新创建的视图 Top10CustomersView

    用户图像的屏幕截图。

  4. 创建另一个新查询,与步骤 1 类似。 从功能区的“主页”选项卡选择“新建 SQL 查询”。

  5. 在查询编辑器中粘贴以下代码。 这将 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;
    
  6. 在查询编辑器中粘贴以下代码。 CURRENT_TIMESTAMP T-SQL 函数将当前 UTC 时间戳作为日期/时间返回。 选择“运行”以执行查询。

    SELECT CURRENT_TIMESTAMP;
    
  7. 将返回的时间戳值复制到剪贴板。

  8. 将以下代码粘贴到查询编辑器中,并将时间戳值替换为从上一步获取的当前时间戳值。 时间戳语法格式为 YYYY-MM-DDTHH:MM:SS[.FFF]

  9. 去掉末尾的零,例如:2024-04-24T20:59:06.097

  10. 以下示例返回 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');
    
  11. 将以下代码粘贴到查询编辑器中,并将时间戳值替换为执行更新脚本之前的时间以更新 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');
    

有关更多示例,请参阅如何在语句级别使用时间旅行进行查询

下一步