教學課程:在倉儲中使用 T-SQL 的時間移動
在本教學課程中,瞭解如何使用 T-SQL 語句在倉儲資料表中 進行時光旅行。 時間移動表示查詢存在於特定時間點的數據,網狀架構倉儲會自動 數據保留。
使用時間旅行查詢
在這個過程中,學習如何依銷售額創建前十名客戶的視圖。 您將在下一個工作中使用檢視來執行時間移動查詢。
確定您在第一次教學中建立的工作區已在 開啟。
在 [首頁] 功能區上,選取 [新增 SQL 查詢]。
在查詢編輯器中,貼上下列程式碼。 程序代碼會建立名為
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;
執行查詢。
執行完成時,請將查詢重新命名為
Create Top 10 Customer View
。在 [瀏覽器] 窗格中,從屬於
dbo
架構的 [檢視] 資料夾內,確認Top10Customers
檢視是否存在。建立新的查詢以執行時間旅行查詢。
在查詢編輯器中,貼上下列程式碼。 程序代碼會更新單一事實數據列的
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) 時區進行時間旅行。
執行查詢。
執行完成時,請將查詢重新命名為
Time Travel
。在 [結果] 窗格中,請注意時間戳記的值(您的值將是目前 UTC 的日期和時間)。
若要從現在擷取前 10 名客戶
,請在新的查詢編輯器中貼上下列語句。 程式碼會使用 FOR TIMESTAMP AS OF
查詢提示來擷取前十名客戶。--Retrieve the top 10 customers as of now. SELECT * FROM [dbo].[Top10Customers] OPTION (FOR TIMESTAMP AS OF 'YOUR_TIMESTAMP');
將查詢重新命名為
Time Travel Now
。返回
Time Travel
查詢,然後使用 複製 命令來複製查詢結果。返回
Time Travel Now
查詢,然後將YOUR_TIMESTAMP
取代為您複製到剪貼簿的時間戳。執行查詢,並注意到第二大
CustomerKey
值是 49,對應於Tailspin Toys (Muir, MI)
。藉由從時間戳減去一分鐘,將時間戳值修改為先前的時間
。 再次執行查詢,並注意到對於
Wingtip Toys (Sarversville, PA)
,第二高的CustomerKey
值是 381 。
提示
如需更多時間移動範例,請參閱 如何:使用語句層級的時間移動查詢。
後續步驟
教學課程:使用倉儲 中的可視化查詢產生器建立查詢