資料攝取、時間旅行和表回滾
本教學將引導您完成在watsonx.data中擷取資料、執行時間旅行和表回溯操作的過程。
- 資料吸收
-
資料攝取是將資料匯入並載入到watsonx.data的過程。 您可以透過以下方法在watsonx.data中執行資料擷取:
- 使用 「資料管理器」 頁面中的 「從檔案建立表格」 選項來擷取資料。
- 使用 SQL 查詢取得資料。
- 使用
IBM-lh命令列工具提取資料。 - 使用 Spark 引擎攝取資料。
有關更多信息,請參閱 數據攝取。
- 時間旅行
-
Apache Iceberg 資料表的時間旅行功能可讓您取得並檢查資料表歷史。 它使用表快照來支援時間旅行功能。 表快照表示表在特定時間點的狀態。 Iceberg 在建立或修改表格(插入、更新、刪除)時產生表格快照記錄。 然後就可以使用這個快照記錄來查詢查看表的詳細資訊。
Hive表不支援時間旅行功能。
- 回復
- 表回滾功能可讓您透過表格快照將表回滾到先前的時間點。
使用案例場景
假設您是公司的資料工程師,您的任務是管理公司資料庫中的汽車記錄。 上傳儲存中現有的資料記錄。 將一組新資料新增至現有表中。 經過檢查,您發現新增的新資料集不合適,並決定將表回滾到先前的狀態。
以下影片提供了一種直觀的方法來學習本文檔中的概念和任務。
目標
- 建立表,並使用Spark引擎將樣本資料載入到表中。
- 將更多記錄載入到
cars表中。 - 使用表格快照檢索表記錄。
- 執行表回滾操作。
開始之前
- 從 ( https://ibm.box.com/v/data-cars-csv ) 下載
cars.csv檔案。 - 您必須預配 Lite 套餐實例。
- Lite套餐實例必須包含處於運作狀態的Spark和Presto引擎。
- 將目錄關聯到Presto和 Spark 引擎。 在此,Apache Iceberg 目錄。
程序
創建表並加載數據
本節將引導您完成使用 Spark 引擎建立名為 cars 的表並擷取資料到 cars.csv 檔案的過程。
-
登入 watsonx.data 主控台。
-
從導覽功能表中,選擇資料管理員。
-
按一下 “攝取資料” 並選擇 “本機系統”。 有關如何攝取資料的更多信息,請參閱 從本機系統擷取資料。
-
按一下瀏覽資料標籤。 刷新 Iceberg 目錄以查看新架構和包含資料的表。 您可以查看表格列、時間旅行、資料樣本和 DDL 標籤。
-
點擊時間旅行。 可以看到表中有
406記錄。
將更多記錄載入到表中
執行多個事務(兩個事務)來更新 cars 表。 在第一個事務中,取得模型 TESLA 的另外兩個汽車記錄,在第二個事務中,取得模型 Kia Optima 的一筆記錄。
為此:
-
前往查詢工作區。
-
選擇 Presto 引擎。
-
使用下列 SQL 查詢將第一組資料插入
cars表中。INSERT INTO iceberg_data.automobiles.cars VALUES ('Tesla Model S', 102, 0, 0, 670, 4766, 3.1, 2023, 'USA'), ('Tesla Model 3', 134, 0, 0, 283, 3582, 5.8, 2023, 'USA'); -
執行查詢。 數據已添加,總記錄為
408。 -
使用下列 SQL 查詢將第二組資料插入
cars表中。INSERT INTO iceberg_data.automobiles.cars VALUES ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea'); -
執行查詢。 數據已添加,總記錄變為
409。 -
前往資料管理員。
-
選擇表格
cars。 從汽車部分,選擇時間旅行標籤。 您可以查看資料事務對應的快照記錄(帶有SnapshotID )。
使用表格快照檢索表記錄。
本教學的這一部分將引導您完成使用表格快照檢索表記錄的過程。 您執行查詢來檢索資料以用於稽核和監管目的。
-
前往查詢工作區。
-
執行下列查詢來檢索與執行的三個插入交易對應的快照記錄。
SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;結果集包括三個快照記錄,其中包含 snapshot_id、日期、時間和時區。 在本教學中,每個事務的SnapshotID,日期、時間稱為:
<Tran1Time>、<Tran1SnapshotID>、<Tran2Time>、<Tran2SnapshotID>、<Tran3Time>和<Tran3SnapshotID>。您也可以從資料管理器>
cars表>時間旅行標籤查看快照記錄。 -
在下列查詢中提供快照 ID 或時間,並執行查詢以檢索該點的表格資訊。
| 情境 | 查詢 | 結果 |
|---|---|---|
| 使用快照 ID 從初始狀態檢索資料。 | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; |
結果部分顯示 406 筆記錄。 |
| 使用時間戳從初始狀態檢索資料。 | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
結果部分顯示 406 筆記錄。 |
| 使用快照 ID 檢索秒後事務資料。 | SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; |
結果部分顯示 408 筆記錄。 |
| 使用時間戳檢索第三次交易後的資料。 | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
結果部分顯示 409 筆記錄。 |
| 檢索第二個和第三個事務之間的時間點的資料。 | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('Choose-a-time-between-<Tran2Time>-and-<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
結果部分顯示 408 筆記錄。 |
| 檢索建立表格之前的時間的資料(預計會失敗)。 | SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('2024-01-01 00:00:00.000 UTC' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; |
沒有找到任何記錄。 |
執行表回滾
watsonx.data允許您使用快照將表回滾到較早的時間點。
若要將表格資料回滾到較早的快照,請執行下列操作:
-
前往資料管理員。
-
選擇表格
cars。 從汽車部分,選擇時間旅行標籤。 您可以查看快照記錄(使用SnapshotID )。 -
按一下第二個快照(第二個快照包含 408 個記錄)行末的溢出功能表,然後按一下回滾到快照。 畫面上會出現 Confirm rollback to snapshot 視窗。 按一下回滾至快照。 資料回滾成功。 現在,該表必須有 408 筆記錄。
-
若要驗證回滾,請執行下列查詢以檢查與第三個交易對應的行是否已刪除。
- 用於驗證該表不包含記錄“Kia Optima”的範例查詢。
SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');結果僅列出了「Tesla Model S」和「Tesla Model 3」對應的資料記錄。 表格沒有與「Kia Optima」(第三個事務)對應的記錄,因為該表現在回滾到第二個快照。
- 用於計算表中總行數的範例查詢。
SELECT COUNT(*) FROM iceberg_data.automobiles.cars;您必須看到 408 行的計數,這與您在表中執行第二個交易時的計數相符。 該表返回到其之前(第二個事務)的狀態。