查詢過去存在的資料
適用於✅:Microsoft Fabric 的倉儲
Microsoft Fabric 的倉儲可讓您查詢過去存在的歷程記錄資料。 從特定時間戳記查詢資料的能力在資料倉儲產業中稱為時間旅行。
- 時間旅行可藉由維護一段時間內資料的一致性和正確性,來輔助穩定的報告。
- 時間旅行可透過查詢多個過去時間點來啟用歷史趨勢分析,並協助預測未來趨勢。
- 時間旅行可簡化舊版資料之間的低成本比較。
- 時間旅行有助於分析一段時間內的效能。
- 時間旅行可讓組織稽核一段時間的資料變更,而這通常是達成合規性目的而必需的。
- 時間旅行有助於重現機器學習模型的結果。
- 時間旅行可以查詢資料表,因為它們存在於相同工作區中多個倉儲的特定時間點。
什麼是時間旅行?
資料倉儲中的時間旅行是一種低成本且有效率的功能,可快速查詢舊版的資料。
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 陳述式內的所有內容。
如需範例,請參閱操作說明:使用時間旅行進行查詢。
資料保留
在 Microsoft Fabric 中,倉儲會自動保留及維護各種版本的資料,預設保留期間最多為三十個日曆天。 這可讓您查詢任何先前時間點的資料表。 對資料倉儲做出的所有插入、更新和刪除都會保留。 保留會從建立倉儲的那一刻起自動開始。 過期檔案會在保留期閾值之後自動刪除。
- 目前,具有
FOR TIMESTAMP AS OF
查詢提示的SELECT
陳述式會傳回最新版本的資料表結構描述。 - 如果是在保留期間內刪除,則資料表中刪除的任何記錄均可按刪除前的狀態進行查詢。
- 對資料表的結構描述所做的任何修改,包括但不限於從資料表新增或移除資料行,在結構描述變更之前均無法查詢。 同樣地,卸除並重新建立具有相同資料的資料表,會移除其歷程記錄。
時間旅行案例
請考慮在下列案例中時間旅行至先前資料的能力:
穩定報告
若要跟上不斷變化的資料環境,頻繁執行擷取、轉換和載入 (ETL) 工作至關重要。 時間旅行的能力可確保資料完整性,同時根據過去時間點 (例如前一天晚上) 傳回的查詢結果,提供彈性來產生報告,進而支援實現這一目標,同時進行幕後處理。
ETL 活動可以在查詢與先前的時間點相同的資料表時同時執行。
歷史趨勢和預測分析
時間旅行可簡化歷程記錄資料的分析,透過查詢過去時間範圍的資料,協助找出有價值的趨勢和模式。 藉由啟用試驗歷程記錄資料集和訓練預測模型,可輔助預測分析。 其有助於預測未來趨勢,並協助做出明智的資料驅動型決策。
分析和比較
時間旅行可透過從歷史視角進行分析和比較,輔助識別根本原因,進而提供有效率且符合成本效益的疑難排解功能。
效能分析
時間旅行可協助分析倉儲查詢超時的效能。 這有助於識別效能降低趨勢,並據此最佳化查詢。
稽核和合規性
時間旅行可讓稽核者瀏覽資料歷程記錄,進而簡化稽核與合規性程序。 這不僅有助於保持符合規範,也有助於增強保證和透明度。
機器學習模型
時間旅行功能可協助重現機器學習模型的結果,方法是輔助分析歷程記錄資料以及模擬真實世界的案例。 這可增強模型的整體可靠性,以便做出準確的資料驅動型決策。
設計考量
考慮使用 OPTION FOR TIMESTAMP AS OF 查詢提示:
FOR TIMESTAMP AS OF
查詢提示無法用來建立保留期間內任何先前時間點的檢視。 其可用來查詢保留期間內過去時間點的檢視。FOR TIMESTAMP AS OF
查詢提示在SELECT
陳述式內僅能使用一次。FOR TIMESTAMP AS OF
查詢提示可以在預存程序中的SELECT
陳述式內定義。
時間旅行的權限
具有管理員、成員、參與者或檢視人員工作區角色的任何使用者,都可以查詢過去時間點的資料表。 當使用者查詢資料表時,資料行層級安全性 (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) 時區進行時間旅行。
目前,時間旅行查詢的資料保留期間是三十個日曆天。
OPTION
子句中的FOR TIMESTAMP AS OF
值必須具確定性。 如需參數化的範例,請參閱預存程序中的時間旅行。Lakehouse 的 SQL 分析端點不支援時間旅行。
OPTION FOR TIMESTAMP AS OF
語法只能在以SELECT
陳述式開頭的查詢中使用。INSERT INTO SELECT
和CREATE TABLE AS SELECT
之類的查詢無法與OPTION FOR TIMESTAMP AS OF
一起使用。 請考慮在某個時間點複製倉儲資料表的能力。檢視定義不能包含
OPTION FOR TIMESTAMP AS OF
語法。 可以使用SELECT .. FROM <view> ... OPTION FOR TIMESTAMP AS OF
語法來查詢檢視。 然而,在建立檢視之前,您無法從檢視中資料表查詢過去的資料。Power BI Desktop Direct 查詢模式或 [探索此資料] 選項目前不支援時間旅行的
FOR TIMESTAMP AS OF
語法。