資料攝取、時間旅行和表回滾

本教學將引導您完成在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 檔案的過程。

  1. 登入 watsonx.data 主控台。

  2. 從導覽功能表中,選擇資料管理員

  3. 按一下 “攝取資料” 並選擇 “本機系統”。 有關如何攝取資料的更多信息,請參閱 從本機系統擷取資料

  4. 一下瀏覽資料標籤。 刷新 Iceberg 目錄以查看新架構和包含資料的表。 您可以查看表格列、時間旅行、資料樣本和 DDL 標籤。

  5. 點擊時間旅行。 可以看到表中有 406 記錄。

將更多記錄載入到表中

執行多個事務(兩個事務)來更新 cars 表。 在第一個事務中,取得模型 TESLA 的另外兩個汽車記錄,在第二個事務中,取得模型 Kia Optima 的一筆記錄。

為此:

  1. 前往查詢工作區

  2. 選擇 Presto 引擎。

  3. 使用下列 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');
    
  4. 執行查詢。 數據已添加,總記錄為 408

  5. 使用下列 SQL 查詢將第二組資料插入 cars 表中。

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea');
    
  6. 執行查詢。 數據已添加,總記錄變為 409

  7. 前往資料管理員

  8. 選擇表格 cars。 從汽車部分,選擇時間旅行標籤。 您可以查看資料事務對應的快照記錄(帶有SnapshotID )。

使用表格快照檢索表記錄。

本教學的這一部分將引導您完成使用表格快照檢索表記錄的過程。 您執行查詢來檢索資料以用於稽核和監管目的。

  1. 前往查詢工作區

  2. 執行下列查詢來檢索與執行的三個插入交易對應的快照記錄。

    SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;
    

    結果集包括三個快照記錄,其中包含 snapshot_id、日期、時間和時區。 在本教學中,每個事務的SnapshotID,日期、時間稱為: <Tran1Time><Tran1SnapshotID><Tran2Time><Tran2SnapshotID><Tran3Time><Tran3SnapshotID>

    您也可以從資料管理器> cars 表>時間旅行標籤查看快照記錄。

  3. 在下列查詢中提供快照 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允許您使用快照將表回滾到較早的時間點。

若要將表格資料回滾到較早的快照,請執行下列操作:

  1. 前往資料管理員

  2. 選擇表格 cars。 從汽車部分,選擇時間旅行標籤。 您可以查看快照記錄(使用SnapshotID )。

  3. 按一下第二個快照(第二個快照包含 408 個記錄)行末的溢出功能表,然後按一下回滾到快照。 畫面上會出現 Confirm rollback to snapshot 視窗。 按一下回滾至快照。 資料回滾成功。 現在,該表必須有 408 筆記錄。

  4. 若要驗證回滾,請執行下列查詢以檢查與第三個交易對應的行是否已刪除。

    • 用於驗證該表不包含記錄“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 行的計數,這與您在表中執行第二個交易時的計數相符。 該表返回到其之前(第二個事務)的狀態。