使用遷移歷程規劃遷移作業

規劃 BigQuery 資料倉儲遷移作業時,您可以使用遷移歷程服務,以視覺化方式呈現來源資料庫中的資料流和連線。

建立遷移歷程時,歷程服務會提供圖表,以視覺化方式呈現資料在來源系統中的移動方式,以及來源系統中各資料表或檢視表的連結方式,如下圖所示:

遷移歷程,顯示資料流程圖。

遷移歷程服務支援下列 SQL 方言:

  • Amazon Redshift SQL
  • Snowflake SQL
  • Teradata SQL
  • GoogleSQL (BigQuery)

限制

歷程服務會處理來源資料庫中最早的 5 GB 記錄。

支援的地區

遷移歷程服務僅適用於特定位置。詳情請參閱「BigQuery SQL 翻譯器和歷程服務位置」。

所需權限

如要取得使用遷移歷程服務所需的權限,請要求管理員授予您專案的 MigrationWorkflow 編輯者 (roles/bigquerymigration.editor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備使用遷移歷程服務所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

必須具備下列權限,才能使用遷移歷程服務:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.lineageDbs.query

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

如要進一步瞭解 BigQuery 的 IAM 角色和權限,請參閱「BigQuery IAM 角色和權限」。

追蹤遷移歷程

如要追蹤遷移歷程,請先執行 dwh-migration-dumper 工具,產生來源輸入 SQL 記錄檔,並上傳至 Cloud Storage。將輸入檔案上傳至 Cloud Storage 後,您可以使用 Cloud de Confiance 控制台或 BigQuery Migration API 追蹤遷移歷程。

執行 dwh-migration-dumper 工具

選取下列選項之一:

Amazon Redshift

如要追蹤及查看 Amazon Redshift 資料庫的遷移歷程,請按照下列步驟操作:

  1. 執行 dwh-migration-dumper 工具,產生來源系統檔案的轉儲。
  2. 將查詢記錄上傳至 Cloud Storage。

Snowflake

如要追蹤及查看 Snowflake 資料庫的遷移歷程,請按照下列步驟操作:

  1. 執行 dwh-migration-dumper 工具,產生來源系統檔案的轉儲。
  2. 將查詢記錄上傳至 Cloud Storage。

Teradata

如要追蹤及查看 Teradata 資料庫的遷移歷程,請按照下列步驟操作:

  1. 執行 dwh-migration-dumper 工具,產生來源系統檔案的轉儲。
  2. 將查詢記錄上傳至 Cloud Storage。

BigQuery

如要追蹤及查看 BigQuery 資料庫的遷移歷程,請按照下列步驟操作:

  1. 將下列角色授予帳戶或服務帳戶:
  2. 安裝 dwh-migration-dumper 工具。
  3. 如要生成中繼資料和查詢記錄,請執行 dwh-migration-dumper 工具。這些中繼資料和查詢記錄會包含在一或多個 ZIP 檔案中。

    dwh-migration-dumper --connector bigquery
    
    dwh-migration-dumper --connector bigquery-logs
  4. 將 ZIP 檔案上傳至 Cloud Storage bucket。如要進一步瞭解如何建立 bucket 及將檔案上傳至 Cloud Storage,請參閱「建立 bucket」和「從檔案系統上傳物件」。

追蹤記錄歷程

將含有中繼資料和查詢記錄的 ZIP 檔案上傳至 Cloud Storage 後,即可追蹤歷程。選取下列其中一個選項:

控制台

  1. 前往「您的遷移服務」頁面。

    前往「您的遷移服務」

  2. 在「追蹤歷程」下方,點選「追蹤翻譯」。

  3. 在「Lineage configuration」(歷程設定) 下方,輸入下列內容:

    1. 在「顯示名稱」部分,指定歷程工作的名稱。名稱可包含英文字母、數字或底線。
    2. 在「Processing Location」(處理位置),選取要執行歷程工作的地區。
  4. 在「Edit input directory location」(編輯輸入目錄位置) 部分,指定 Cloud Storage 資料夾的路徑,該資料夾應包含您先前上傳的記錄 ZIP 檔案。您可以輸入 bucket_name/folder_name/ 格式的路徑,或按一下「Browse」(瀏覽)。您也可以在「Output subdirectory name」(輸出子目錄名稱) 欄位中,為輸出檔案的子目錄命名。

    如要新增其他輸入檔案,請按一下「Add an input directory location」。

  5. 按一下「Trace」。

歷程工作正在執行。視輸入內容大小而定,工作可能需要數小時才能完成。工作完成後,工具會提供追蹤遷移歷程的連結。

API

如要追蹤歷程工作,請執行下列 curl 指令:

  curl -d "{
    \"tasks\": {
      \"TASK_NAME\": {
        \"type\": \"Experimental_Lineage\",
        \"translation_details\": {
          \"target_base_uri\": \"BUCKET_PATH\",
          \"source_target_mapping\": {
            \"source_spec\": {
              \"base_uri\": \"BUCKET_PATH\"
            }
          },
          \"target_types\": \"LINEAGE\"
        }
      }
    }
  }
  " \
    -H "Content-Type:application/json" \
    -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows

更改下列內容:

  • TASK_NAME::用於識別這個歷程 工作的名稱。
  • BUCKET_PATH:Cloud Storage bucket 的路徑,其中包含輸入 ZIP 檔案。
  • PROJECT_ID:Cloud de Confiance 專案的專案 ID。
  • LOCATION:處理位置。這個值必須是 eu 或 us。

這項呼叫會傳回類似下列的訊息:

  {
    "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID",
    "tasks": {
      "task_name": { /*...*/ }
    },
    "state": "RUNNING"
  }

歷程工作正在執行。視輸入內容大小而定,工作可能需要數小時才能完成。如要檢查歷程工作狀態,請執行下列 curl 指令,並附上工作流程 ID:

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

工作完成後,工具會提供追蹤歷程檢視畫面的連結。

開啟遷移歷程

追蹤遷移歷程後,您可以透過下列任一選項開啟遷移歷程:

控制台

  1. 前往「您的遷移服務」頁面。

    前往「您的遷移服務」

  2. 在「Trace Lineage」(追蹤歷程) 下方,點選「View recent」(查看近期項目)。

  3. 在「Migration Lineage」(遷移歷程) 頁面中,按一下工作名稱,選取完整的歷程工作。

  4. 在「Translation details」(翻譯詳細資料) 頁面中,按一下「Data lineage」(資料歷程)。

API

如要開啟已完成的遷移歷程,請使用 BigQuery Migration API 執行下列 curl 指令:

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

更改下列內容:

  • PROJECT_ID:Cloud de Confiance 專案的專案 ID。
  • LOCATION:處理位置。這個值必須是 eu 或 us。
  • WORKFLOW_ID:追蹤歷程的工作流程 ID。

前往輸出訊息 taskResult.translationTaskResult.consoleUri 欄位中的連結。

使用遷移歷程

以下各節說明如何使用遷移歷程,處理來源資料和資料庫。

瞭解遷移歷程詞彙

遷移歷程中會使用下列字詞:

條款 說明
指令碼 在建立歷程期間擷取的資料庫記錄中,可看見 SQL 指令碼和其他程式。指令碼由陳述式組成,最常見的是單一 SQL 陳述式。
節點 歷程圖的頂點。這些資料由資料表和資料欄組成。
Tables 也稱為「關係」,包括一般資料表、檢視表、結構化檔案和其他類似資料表的資源。
資料欄 也稱為「屬性」,包括資料表資料欄、檢視投影、虛擬資料欄、檔案和其他資源中的資料欄欄位,以及結構欄位等子資料欄。
邊緣 歷程節點之間的連線,表示管道執行讀取或寫入這些節點的指令碼,因而產生互動。邊緣會加上時間戳記、述詞和其他中繼資料,這些資料來自邊緣衍生時。如果某個節點與另一個節點相鄰且有邊緣,則稱為「直接連線」;如果兩個節點之間有邊緣路徑,則稱為「間接連線」。
歷程邊緣 方向邊緣,表示來源節點包含在 FROM、WHERE 或 GROUP BY 等子句中,會影響目標節點的資料。
使用者和管道 來源資料庫提供的中繼資料標籤,說明執行指令碼的人員和內容。這些名稱對歷程引擎沒有任何固有意義,但可用來依來源將指令碼分組。

以下各節將說明遷移歷程中的不同頁面。

檢查到達網頁

歷程到達網頁會顯示歷程工作的 ID、依名稱搜尋歷程物件的搜尋欄位,以及醒目顯示可能感興趣的歷程物件建議清單。這個頁面也會顯示整個遷移歷程中的資料表、管道和使用者總數。

如要前往特定資料表、檢視表或資料欄,請在搜尋欄位中搜尋物件,或點選到達網頁上的建議物件。

查看節點頁面

如要查看遷移歷程中的節點,請按一下下列其中一個分頁標籤。

「資料流程」分頁

「Data Flow」(資料流程) 分頁會以視覺化方式呈現歷程圖的一部分。首次在歷程服務中查看資料表或資料欄時,系統會預設顯示這個頁面。圖表會以視覺化方式呈現資料在來源系統中的移動方式。圖中的節點代表資料表或檢視表,節點之間的邊緣則代表資料從左側節點流向右側節點。

「Data Flow」(資料流程) 圖表中的每個資料表都會顯示不完整的名稱。如要查看資料表的完整名稱 (包含資料庫和結構定義前置字元),請將指標懸停在節點上,系統就會顯示工具提示。每個資料表都會指出其結構定義,如節點上的垂直線所示。歷程中的所有結構定義都會依字母順序排序,並指派顏色,因此相同結構定義中的資料表會有相同顏色的長條,而名稱相似的結構定義中的資料表會有相似顏色的長條。

每個節點都會顯示圖示,代表節點的屬性:

  • monitor:檢視表,而非資料表。
  • cached:一律完整重新整理 (截斷後重寫) 的資料表。按一下圖示,即可查看這個表格旁的指令碼。
  • cached:不一定會完全重新整理 (截斷後重寫) 的資料表。按一下圖示,即可查看這個表格旁的指令碼。
  • timer:短暫存在的資料表。將游標懸停在圖示上,即可查看資料表的留存時間。
  • snowflake:上次寫入時間超過七天前的資料表,表示資料表含有靜態或不常寫入的資料。

如要查看「Data Flow」(資料流程) 圖表中的物件,請按照下列步驟操作:

  • 如要查看資料表欄位清單,請按一下資料表。這個檢視畫面包含每個資料欄的名稱和資料類型,這些資訊是根據提供的中繼資料轉儲內容決定,或從查詢記錄中的 SQL 推論而來。
  • 如要查看資料欄的資料欄層級歷程圖,請點選該資料欄。在資料欄層級歷程圖中,邊緣代表影響目標資料欄的資料流。
  • 如要查看邊緣的詳細資料,請按一下圖表中的邊緣。這個檢視畫面包含導致邊緣的 SQL 指令碼連結。

    當 SQL 陳述式參照來源節點,同時計算要插入目標節點的資料時,系統會從來源節點到目標節點產生邊緣。通常這涉及將資料從來源轉移至目標,但如果來源節點用於影響目標的 WHERE 或 GROUP BY 子句,「資料流程」分頁也會顯示邊緣。如要篩選出資料移轉,請切換工具列中的「Show non-data edges」(顯示非資料邊緣) 按鈕。

「連線」分頁

歷程節點的「Connections」(連線) 分頁會顯示歷程圖中鄰近節點的清單。根據預設,系統會依據與目前節點的最短路徑距離,排序已連結的節點,也就是說,從目前節點到達所需邊緣較少的節點會優先列出。您可以使用「Sort」(排序) 選項變更排序方式。

根據預設,連線清單會包含目前節點的上游 (生產者) 和下游 (消費者) 節點。您可以使用「Type」(類型) 控制項變更這項篩選器。在「Distance」(距離) 欄中,目前節點上游的節點會顯示向上箭頭,並指出從目前節點到該節點的最短向後路徑距離;同樣地,目前節點下游的節點會顯示向下箭頭,並指出從目前節點到該節點的最短傳出路徑距離。如果節點是循環的一部分,則可以同時是目前節點的上游和下游。

如要下載包含所有顯示節點的檔案,請按一下「download CSV」(下載 CSV)

使用者分頁

節點的「Users」(使用者) 分頁會顯示執行指令碼的使用者,這些指令碼會讀取或寫入節點,或其上游或下游的節點。根據預設,執行最多獨立動作的使用者會列在最前面。您可以使用「Sort」(排序) 選項變更排序方式。

如要下載包含所有顯示使用者的檔案,請按一下「download CSV」。

「管道」分頁

節點的「Pipelines」(管道) 分頁會顯示執行指令碼的管道,這些指令碼會讀取或寫入該節點,或其上游或下游的節點。根據預設,執行最多獨立動作的管道會優先列出。您可以使用「Sort」(排序) 選項變更排序方式。

如要下載包含所有顯示管道的檔案,請按一下「download」(下載) CSV。

「Code」分頁

節點的「Code」(程式碼) 分頁會顯示輸入檔案中,所有從該節點讀取資料或寫入資料的 SQL 指令碼。SQL 文字中提及節點的部分會醒目顯示。按一下腳本即可展開全文。您可以變更篩選器設定,篩選顯示的指令碼清單。

如要下載包含所有顯示指令碼的檔案,請按一下「下載 CSV」。

查看邊緣頁面

如要查看歷程圖中的節點邊緣,請點選下列其中一個分頁標籤。

「詳細資料」分頁

邊緣的「Details」分頁會顯示述詞和類別,說明引發邊緣的指令碼執行的作業。

述詞以三個部分組成,並以連字號分隔。第一部分是 r (表示邊緣的來源是關係) 或 a (表示邊緣的來源是屬性)。第二部分是下列其中一個縮寫,表示來源節點影響目標節點資料的方式:

  • has:來源關係包含目標屬性。
  • dat:來源會將資料複製或轉移至目標。
  • res:來源會篩選或限制子句中目標的基數,例如 WHERE、HAVING 或 JOIN ON。
  • grp:來源用於會影響目標的 GROUP BY 子句。

第三部分也是 r 或 a,表示邊緣的目標是關係或屬性。

邊緣類別包括:

  • dat 述詞:
    • AGGREGATE:來源用於寫入目標的匯總運算。
    • EXACT_COPY:來源資料已完整複製到目標。
    • FUNCTION:來源用於計算目標。
    • IDENTITY_COPY:未計算目標。目標是來源的字面副本,不含任何轉換。
    • PARTITION_PROMOTION:將來源的分區升級為目標後,目標會包含來源的資料。
    • WEAK_COPY:來源資料至少有部分已複製到目標。
  • res 述詞:
    • FILTER:來源用於寫入目標的比較。
    • KEY:來源資料在寫入目標的彙整比較中,做為鍵使用。
  • grp 述詞:
    • GROUP:來源資料在 GROUP BY 子句中做為索引鍵,會影響目標。

「Code」分頁

邊緣的「Code」(程式碼) 分頁會顯示引發該邊緣的 SQL 指令碼。在 SQL 文字中提及邊緣的來源和目標節點時,系統會醒目顯示這些節點。

後續步驟