規劃遷移作業 (含遷移歷程)

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

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

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

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

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

限制

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

支援的地區

移轉沿襲服務僅適用於特定地區。詳情請參閱 BigQuery SQL 翻譯工具和沿襲服務位置

所需權限

如要取得使用遷移歷程服務所需的權限,請要求管理員授予專案的遷移工作流程編輯者 (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 後,您可以使用 Google Cloud 控制台或 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. 在「Translate SQL」下方,依序點選「Translate」>「Batch translation」

  3. 在「翻譯設定」下方,輸入下列內容:

    1. 在「顯示名稱」部分,指定沿襲工作名稱。名稱可包含英文字母、數字或底線。
    2. 在「Processing Location」(處理位置) 中,選取要執行歷程工作的地點。
    3. 在「來源方言」部分,選取來源 SQL 方言。
    4. 在「目標方言」部分,選取「GoogleSQL」
  4. 點選「下一步」

  5. 在「檔案位置詳細資料」下方,執行下列操作:

    1. 在「輸出目錄位置」部分,指定 Cloud Storage 值區的路徑,以便儲存翻譯輸出檔案。您可以輸入 bucket_name/folder_name/ 格式的路徑,也可以按一下「瀏覽」
    2. 在「輸入目錄位置」中,指定包含您先前上傳記錄 ZIP 檔案的 Cloud Storage 資料夾路徑。您可以輸入 bucket_name/folder_name/ 格式的路徑,也可以按一下「瀏覽」。您也可以在「輸出子目錄名稱」欄位中,為輸出檔案的子目錄命名。
    3. 如要新增其他輸入檔案,請按一下「新增輸入目錄位置」
  6. 點選「下一步」

  7. 勾選「查詢記錄的歷程」核取方塊。

  8. 點選「建立」

系統正在執行沿襲工作。視輸入內容大小而定,這項工作可能需要數小時才能完成。作業完成後,這項工具會提供所產生遷移歷程的連結。

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:包含輸入 ZIP 檔案的 Cloud Storage bucket 路徑。
  • PROJECT_ID:專案 ID,指向您的Google Cloud 專案。
  • LOCATION:處理位置。這個值必須是 euus

這個呼叫會傳回類似下列內容的訊息:

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

系統正在執行沿襲工作。視輸入大小而定,這項工作可能需要數小時才能完成。如要檢查沿襲作業的狀態,請使用工作流程 ID 執行下列 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

工作完成後,這項工具會提供所產生沿襲檢視畫面的連結。

開啟遷移歷程

產生遷移歷程後,您可以透過下列任一方式開啟遷移歷程:

控制台

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

    前往「您的遷移服務」

  2. 在「翻譯 SQL」下方,按一下「查看最近的項目」

  3. 在「SQL translations」(SQL 翻譯) 頁面中,按一下工作名稱,選取完整歷程工作。沿襲作業的輸出值為 Lineage

  4. 在「翻譯詳細資料」頁面中,按一下「資料沿襲」

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:專案 ID,指向您的Google Cloud 專案。
  • LOCATION:處理位置。這個值必須是 euus
  • WORKFLOW_ID:所產生歷程的工作流程 ID。

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

使用遷移沿襲

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

瞭解遷移歷程字詞

遷移歷程會使用下列術語:

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

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

檢查到達網頁

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

如要前往特定表格、檢視畫面或資料欄,請在搜尋欄中搜尋物件,或按一下到達網頁上建議的物件。

查看節點頁面

如要查看遷移歷程中的節點,請點選下列任一分頁。

「資料流程」分頁

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

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

每個節點都會顯示圖示,指出節點的屬性:

  • 監控:檢視畫面,而非表格。
  • 已快取:一律會完整重新整理 (截斷,然後重新寫入) 的資料表。按一下圖示,即可查看這個資料表旁邊的指令碼。
  • 已快取:並非一律完全重新整理的資料表 (經過截斷,然後重新編寫)。按一下圖示,即可查看這個資料表旁邊的指令碼。
  • 計時器:生命週期較短的資料表。將游標懸停在圖示上,即可查看表格存在的時間長度。
  • 雪花:上次寫入時間超過七天的資料表,表示資料表中的資料是靜態或不常寫入。

如要查看「資料流」圖中的物件,請執行下列操作:

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

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

「連線」分頁

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

根據預設,連線清單會同時列出目前節點的上游 (生產者) 和下游 (消費者) 節點。您可以使用「類型」控制項變更這個篩選器。在「距離」欄中,目前節點上游的節點會顯示向上箭頭,並標示從目前節點到該節點的最短反向路徑距離;同樣地,目前節點下游的節點會顯示向下箭頭,並標示從目前節點到該節點的最短正向路徑距離。如果節點屬於週期,則可同時是目前節點的上游和下游。

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

使用者分頁

節點的「使用者」分頁會顯示執行指令碼的使用者,這些指令碼會讀取或寫入節點,或節點的上游或下游。根據預設,系統會先列出執行最多不同動作的使用者。你可以使用「排序」選項變更排序方式。

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

「管道」分頁

節點的「Pipelines」分頁會顯示執行指令碼的管道,這些指令碼會讀取或寫入節點,或是節點上游或下游的節點。根據預設,系統會優先列出執行最多個別動作的管道。你可以使用「排序」選項變更排序方式。

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

「程式碼」分頁

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

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

查看邊緣頁面

如要查看沿襲圖中的節點邊緣,請按一下下列任一分頁標籤。

「詳細資料」分頁

邊緣的「詳細資料」分頁會顯示述詞和類別,說明導致邊緣的指令碼所執行的作業。

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

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

第三部分也是 ra,表示邊緣的目標是關係還是屬性。

邊緣類別包括:

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

「程式碼」分頁

邊緣的「程式碼」分頁會顯示導致該邊緣的 SQL 指令碼。邊緣的來源和目標節點會在 SQL 文字中提及時醒目顯示。

後續步驟