適用於:✅ Microsoft Fabric 中的 SQL 分析端點與資料倉儲
Microsoft Fabric 提供查詢過去在倉庫及 SQL 分析端點項目中存在的歷史資料(預覽版)的功能。 在資料倉儲產業中,查詢特定時間戳記資料的能力稱為 時間旅行。
- 時間旅行可藉由維護一段時間內資料的一致性和正確性,來輔助穩定的報告。
- 時間旅行可透過查詢多個過去時間點來啟用歷史趨勢分析,並協助預測未來趨勢。
- 時間旅行可簡化舊版資料之間的低成本比較。
- 時間旅行有助於分析一段時間內的效能。
- 時間旅行可讓組織稽核一段時間的資料變更,而這通常是達成合規性目的而必需的。
- 時間旅行有助於重現機器學習模型的結果。
- 時間旅行可以查詢資料表,因為它們存在於相同工作區中多個倉儲的特定時間點。
- 時間旅行提示可用於工作階段範圍內的 暫存資料表,其不受
TIMESTAMP語法影響。
什麼是時間旅行?
資料倉儲中的時間旅行是一種低成本且有效率的功能,可快速查詢舊版的資料。
Microsoft Fabric 目前允許以下列方式擷取過去的資料狀態:
使用 FOR TIMESTAMP AS OF T-SQL 命令,實現時間旅行
資料表可透過 OPTION FOR TIMESTAMP AS OF T-SQL 語法查詢,以取得過去時間點的資料。
FOR TIMESTAMP AS OF 子句會影響整個陳述式,包括所有聯結的倉儲資料表。
從時間旅行查詢取得的結果原本就是唯讀的。 使用 FOR TIMESTAMP AS OF 查詢提示時,無法執行 INSERT、UPDATE 和 DELETE 等寫入作業。
使用 OPTION 子句來指定 FOR TIMESTAMP AS OF 查詢提示。 查詢會傳回與時間戳記 (指定為 YYYY-MM-DDTHH:MM:SS[.fff]) 時存在的資料完全相同的資料。 例如:
SELECT *
FROM [dbo].[dimension_customer] AS DC
OPTION (FOR TIMESTAMP AS OF '2024-03-13T19:39:35.28'); --March 13, 2024 at 7:39:35.28 PM UTC
使用 CONVERT 語法,以取得具有樣式 126 的必要日期時間格式。
對於查詢、預存程序、檢視等作業,僅能使用 OPTION 子句指定時間戳記一次。OPTION 適用於 SELECT 陳述式內的所有內容。
如需範例,請參閱操作說明:使用時間旅行進行查詢。
Fabric Data Warehouse 中的資料保留
- 對Fabric Data Warehouse而言,時間旅行受限於倉庫可配置資料保留期,這是自動的。
- 對於 Lakehouse SQL 分析端點來說,時間旅行在表格層級會受到 真空保留設定的限制。 Lakehouse 表格維護可以在 Fabric 入口網站手動執行,或透過筆記本、管線或 REST API 作為排程與協調流程進行。
在Microsoft Fabric中,倉庫會根據設定的保留期間,自動保存並維護各種版本的資料。 預設的 倉儲保留期為 30 日曆天,可依組織需求進行設定。 這使得能夠查詢保留期間內任一先前時間點的資料表。 所有對倉庫的插入、更新與刪除都會被保留。
保留會從建立倉儲的那一刻起自動開始。 過期檔案會在保留期閾值之後自動刪除。
- 目前,
SELECT帶有FOR TIMESTAMP AS OF查詢提示的語句會回傳 最新版本 的表格 結構。 - 如果是在保留期間內刪除,則資料表中刪除的任何記錄均可按刪除前的狀態進行查詢。
- 時間旅行查詢到結構變更前的某個時間點,只有在參考當時已存在的欄位時才會成功;若查詢的是後來引入的欄位,則會失敗。
時間旅行案例
請考慮在下列情境中重新訪問先前資料的能力:
穩定報告
若要跟上不斷變化的資料環境,頻繁執行擷取、轉換和載入 (ETL) 工作至關重要。 時間旅行的能力透過確保資料完整性並提供彈性,在持續進行背景運算的同時,根據過去的某個時間點(例如前一天晚上)傳回的查詢結果來產生報告,從而支援達成這一目標。
ETL 活動可以在查詢與先前的時間點相同的資料表時同時執行。
歷史趨勢和預測分析
時間旅行可簡化歷程記錄資料的分析,透過查詢過去時間範圍的資料,協助找出有價值的趨勢和模式。 藉由允許使用歷史數據集進行實驗和訓練生成預測模型,可增強預測分析能力。 其有助於預測未來趨勢,並協助做出明智的資料驅動型決策。
分析和比較
時間旅行可透過從歷史視角進行分析和比較,輔助識別根本原因,進而提供有效率且符合成本效益的疑難排解功能。
效能分析
透過時間追溯,可以分析倉儲查詢隨著時間的效能變化。 這有助於識別效能降低趨勢,並據此最佳化查詢。
稽核和合規性
時間旅行可讓稽核者瀏覽資料歷程記錄,進而簡化稽核與合規性程序。 這不僅有助於保持符合規範,也有助於增強保證和透明度。
機器學習模型
時間旅行功能可協助重現機器學習模型的結果,方法是輔助分析歷程記錄資料以及模擬真實世界的案例。 這可增強模型的整體可靠性,以便做出準確的資料驅動型決策。
設計考量
考慮使用 OPTION FOR TIMESTAMP AS OF 查詢提示:
-
FOR TIMESTAMP AS OF查詢提示無法用來建立保留期間內任何先前時間點的檢視。 它可以用來查詢在保留期間內某個過去時間點的視圖。 -
FOR TIMESTAMP AS OF查詢提示在SELECT陳述式內僅能使用一次。 -
FOR TIMESTAMP AS OF查詢提示可以在預存程序中的SELECT陳述式內定義。 -
FOR TIMESTAMP AS OF查詢提示不會影響工作階段範圍的暫存資料表,例如#temp_table。
時間旅行的權限
具有管理員、成員、參與者或檢視人員工作區角色的任何使用者,都可以查詢過去時間點的資料表。 當使用者查詢資料表時,資料行層級安全性 (CLS)、列層級安全性 (RLS) 或動態資料遮罩 (DDM) 所加諸的限制會自動施加。
限制
- 對資料表結構所做的任何修改,包括但不限於新增或移除欄位,皆可查詢自變更發生的時間點起。 時間旅行查詢到結構變更前的某個時間點,只有在參考當時已存在的欄位時才會成功;若查詢的是後來引入的欄位,則會失敗。 同樣地,卸除並重新建立具有相同資料的資料表,會移除其歷程記錄。
- 在時間戳記中最多提供三位數的小數秒數。 如果您提供更高的精確度,您會收到錯誤訊息
An error occurred during timestamp conversion. Please provide a timestamp in the format yyyy-MM-ddTHH:mm:ss[.fff]. Msg 22440, Level 16, State 1, Code line 29。 - 目前,只會使用國際標準時間 (UTC) 時區進行時間旅行。
- 目前,時間旅行查詢的資料保留可設定為 1 至 120 日曆日。 預設保留期限為三十日曆日。 欲了解更多資訊,請參閱 可設定的資料保留。
-
FOR TIMESTAMP AS OF子句中的OPTION值必須具確定性。 如需參數化的範例,請參閱預存程序中的時間旅行。 -
OPTION FOR TIMESTAMP AS OF 查詢提示只能用於以
SELECTstatement 開頭的查詢。 - 檢視定義不能包含
OPTION FOR TIMESTAMP AS OFT-SQL 語法。 此視圖可用 T-SQL 語法查詢SELECT .. FROM <view> ... OPTION FOR TIMESTAMP AS OF。 然而,在建立檢視之前,您無法從檢視中資料表查詢過去的資料。 - 目前,Power BI Desktop 的 DirectQuery 模式或
FOR TIMESTAMP AS OF選項尚不支援用於時間旅行的 T-SQL 語法。 - 目前,SQL 分析端點的時間旅行功能僅適用於建立時已啟用 新元資料同步(預覽) 的 SQL 分析端點。