使用遷移歷程規劃遷移作業
規劃 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 資料庫的遷移歷程,請按照下列步驟操作:
- 執行
dwh-migration-dumper工具,產生來源系統檔案的轉儲。 - 將查詢記錄上傳至 Cloud Storage。
Snowflake
如要追蹤及查看 Snowflake 資料庫的遷移歷程,請按照下列步驟操作:
- 執行
dwh-migration-dumper工具,產生來源系統檔案的轉儲。 - 將查詢記錄上傳至 Cloud Storage。
Teradata
如要追蹤及查看 Teradata 資料庫的遷移歷程,請按照下列步驟操作:
- 執行
dwh-migration-dumper工具,產生來源系統檔案的轉儲。 - 將查詢記錄上傳至 Cloud Storage。
BigQuery
如要追蹤及查看 BigQuery 資料庫的遷移歷程,請按照下列步驟操作:
- 將下列角色授予帳戶或服務帳戶:
- BigQuery 中繼資料檢視者 (
roles/bigquery.metadataViewer) - Data Catalog 檢視者 (
roles/datacatalog.viewer)
- BigQuery 中繼資料檢視者 (
- 安裝
dwh-migration-dumper工具。 如要生成中繼資料和查詢記錄,請執行
dwh-migration-dumper工具。這些中繼資料和查詢記錄會包含在一或多個 ZIP 檔案中。dwh-migration-dumper --connector bigquery dwh-migration-dumper --connector bigquery-logs
將 ZIP 檔案上傳至 Cloud Storage bucket。如要進一步瞭解如何建立 bucket 及將檔案上傳至 Cloud Storage,請參閱「建立 bucket」和「從檔案系統上傳物件」。
追蹤記錄歷程
將含有中繼資料和查詢記錄的 ZIP 檔案上傳至 Cloud Storage 後,即可追蹤歷程。選取下列其中一個選項:
控制台
前往「您的遷移服務」頁面。
在「追蹤歷程」下方,點選「追蹤翻譯」。
在「Lineage configuration」(歷程設定) 下方,輸入下列內容:
- 在「顯示名稱」部分,指定歷程工作的名稱。名稱可包含英文字母、數字或底線。
- 在「Processing Location」(處理位置),選取要執行歷程工作的地區。
在「Edit input directory location」(編輯輸入目錄位置) 部分,指定 Cloud Storage 資料夾的路徑,該資料夾應包含您先前上傳的記錄 ZIP 檔案。您可以輸入
bucket_name/folder_name/格式的路徑,或按一下「Browse」(瀏覽)。您也可以在「Output subdirectory name」(輸出子目錄名稱) 欄位中,為輸出檔案的子目錄命名。如要新增其他輸入檔案,請按一下「Add an input directory location」。
按一下「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
工作完成後,工具會提供追蹤歷程檢視畫面的連結。
開啟遷移歷程
追蹤遷移歷程後,您可以透過下列任一選項開啟遷移歷程:
控制台
前往「您的遷移服務」頁面。
在「Trace Lineage」(追蹤歷程) 下方,點選「View recent」(查看近期項目)。
在「Migration Lineage」(遷移歷程) 頁面中,按一下工作名稱,選取完整的歷程工作。
在「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 文字中提及邊緣的來源和目標節點時,系統會醒目顯示這些節點。
後續步驟
- 執行遷移評估,評估將資料倉儲遷移至 BigQuery 的可行性和潛在效益。
- 使用 SQL 翻譯服務,例如互動式 SQL 翻譯器、Translation API 和批次 SQL 翻譯器,自動將 SQL 查詢轉換為 GoogleSQL,包括 Gemini 強化 SQL 自訂功能。