查詢過去存在的數據
適用於✅:Microsoft Fabric 的倉儲
Microsoft Fabric 中的倉儲可讓您查詢過去存在的歷程記錄數據。 從特定時間戳查詢數據的能力在數據倉儲產業中已知為 時間移動。
- 時間移動可藉由維護一段時間內數據的一致性和正確性,來促進穩定的報告。
- 時間移動可透過查詢各種過去時間點來啟用歷史趨勢分析,並協助預測未來的趨勢。
- 時間移動可簡化舊版數據之間的低成本比較。
- 時間旅行有助於分析一段時間的效能。
- 時間移動可讓組織隨著時間稽核數據變更,通常是為了合規性目的而需要。
- 時間移動有助於重現機器學習模型的結果。
- 時間移動可以查詢數據表,因為它們存在於相同工作區中多個倉儲的特定時間點。
什麼是時間旅行?
數據倉儲中的時間移動是低成本且有效率的功能,可快速查詢舊版的數據。
Microsoft Fabric 目前允許以下列方式擷取過去的數據狀態:
TIME TRAVEL WITH 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 中,倉儲會自動保留及維護各種版本的數據,最多 預設保留期間為 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
語句內定義。
時間移動的許可權
具有系統管理員、成員、參與者或查看器工作區角色的任何使用者,都可以查詢數據表,從過去的時間點開始。 當使用者查詢數據表時,數據行層級安全性 (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)時區進行時間旅行。
目前,時間旅行查詢的數據保留期是三十個日曆天。
FOR TIMESTAMP AS OF
子句中的OPTION
值必須具決定性。 如需參數化的範例,請參閱 預存程式中的時間移動。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
檢視。 不過,在檢視建立檢視之前,您無法從 檢視中查詢數據表的過去數據。FOR TIMESTAMP AS OF
Power BI Desktop Direct 查詢模式或 瀏覽此資料 選項目前不支持時間移動的語法。