共用方式為


教學課程:在倉儲中使用 T-SQL 的時間移動

在本教學課程中,瞭解如何使用 T-SQL 語句在倉儲資料表中 進行時光旅行。 時間移動表示查詢存在於特定時間點的數據,網狀架構倉儲會自動 數據保留

注意

本教程是 端對端場景的一部分,。 若要完成本教學課程,您必須先完成下列教學課程:

  1. 建立工作區
  2. 建立倉儲
  3. 將數據匯入資料倉庫

使用時間旅行查詢

在這個過程中,學習如何依銷售額創建前十名客戶的視圖。 您將在下一個工作中使用檢視來執行時間移動查詢。

  1. 確定您在第一次教學中建立的工作區已在 開啟。

  2. 在 [首頁] 功能區上,選取 [新增 SQL 查詢]

    功能區中

  3. 在查詢編輯器中,貼上下列程式碼。 程序代碼會建立名為 Top10Customers的檢視。 檢視利用查詢來依據銷售量擷取前 10 名客戶。

    --Create the Top10Customers view.
    CREATE VIEW [dbo].[Top10Customers]
    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;
    
  4. 執行查詢。

  5. 執行完成時,請將查詢重新命名為 Create Top 10 Customer View

  6. 在 [瀏覽器] 窗格中,從屬於 dbo 架構的 [檢視] 資料夾內,確認 Top10Customers 檢視是否存在。

    [資源管理器] 窗格的螢幕快照,突出顯示新建立的檢視。

  7. 建立新的查詢以執行時間旅行查詢。

  8. 在查詢編輯器中,貼上下列程式碼。 程序代碼會更新單一事實數據列的 TotalIncludingTax 值,以刻意擴大其總銷售額。 它也會擷取目前的時間戳。

     --Update the TotalIncludingTax for a single fact row to deliberately inflate its total sales.
     UPDATE [dbo].[fact_sale]
     SET [TotalIncludingTax] = 200000000
     WHERE [SaleKey] = 22632918; --For customer 'Tailspin Toys (Muir, MI)'
     GO
    
     --Retrieve the current (UTC) timestamp.
     SELECT CURRENT_TIMESTAMP;
    

    注意

    目前,您只能使用國際標準時間 (UTC) 時區進行時間旅行。

  9. 執行查詢。

  10. 執行完成時,請將查詢重新命名為 Time Travel

  11. 在 [結果] 窗格中,請注意時間戳記的值(您的值將是目前 UTC 的日期和時間)。

    [結果窗格] 的螢幕快照,其中標示要複製的時間戳值。

  12. 若要從現在擷取前 10 名客戶 ,請在新的查詢編輯器中貼上下列語句。 程式碼會使用 FOR TIMESTAMP AS OF 查詢提示來擷取前十名客戶。

     --Retrieve the top 10 customers as of now.
     SELECT *
     FROM [dbo].[Top10Customers]
     OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
    
  13. 將查詢重新命名為 Time Travel Now

  14. 返回 Time Travel 查詢,然後使用 複製 命令來複製查詢結果。

    複製命令的螢幕快照,高亮顯示查詢結果的複製。

  15. 返回 Time Travel Now 查詢,然後將 YOUR_TIMESTAMP 取代為您複製到剪貼簿的時間戳。

  16. 執行查詢,並注意到第二大 CustomerKey 值是 49,對應於 Tailspin Toys (Muir, MI)

  17. 藉由從時間戳減去一分鐘,將時間戳值修改為先前的時間

  18. 再次執行查詢,並注意到對於 Wingtip Toys (Sarversville, PA),第二高的 CustomerKey 值是 381 。

提示

如需更多時間移動範例,請參閱 如何:使用語句層級的時間移動查詢

後續步驟

教學課程:使用倉儲 中的可視化查詢產生器建立查詢