規劃遷移作業 (含遷移歷程)
規劃 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 資料庫上建構及查看遷移歷程,請按照下列步驟操作:
- 執行
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 後,即可產生遷移歷程。選取下列其中一個選項:
控制台
前往「您的遷移服務」頁面。
在「Translate SQL」下方,依序點選「Translate」>「Batch translation」。
在「翻譯設定」下方,輸入下列內容:
- 在「顯示名稱」部分,指定沿襲工作名稱。名稱可包含英文字母、數字或底線。
- 在「Processing Location」(處理位置) 中,選取要執行歷程工作的地點。
- 在「來源方言」部分,選取來源 SQL 方言。
- 在「目標方言」部分,選取「GoogleSQL」。
點選「下一步」。
在「檔案位置詳細資料」下方,執行下列操作:
- 在「輸出目錄位置」部分,指定 Cloud Storage 值區的路徑,以便儲存翻譯輸出檔案。您可以輸入
bucket_name/folder_name/格式的路徑,也可以按一下「瀏覽」。 - 在「輸入目錄位置」中,指定包含您先前上傳記錄 ZIP 檔案的 Cloud Storage 資料夾路徑。您可以輸入
bucket_name/folder_name/格式的路徑,也可以按一下「瀏覽」。您也可以在「輸出子目錄名稱」欄位中,為輸出檔案的子目錄命名。 - 如要新增其他輸入檔案,請按一下「新增輸入目錄位置」。
- 在「輸出目錄位置」部分,指定 Cloud Storage 值區的路徑,以便儲存翻譯輸出檔案。您可以輸入
點選「下一步」。
勾選「查詢記錄的歷程」核取方塊。
點選「建立」。
系統正在執行沿襲工作。視輸入內容大小而定,這項工作可能需要數小時才能完成。作業完成後,這項工具會提供所產生遷移歷程的連結。
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:處理位置。這個值必須是eu或us。
這個呼叫會傳回類似下列內容的訊息:
{ "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
工作完成後,這項工具會提供所產生沿襲檢視畫面的連結。
開啟遷移歷程
產生遷移歷程後,您可以透過下列任一方式開啟遷移歷程:
控制台
前往「您的遷移服務」頁面。
在「翻譯 SQL」下方,按一下「查看最近的項目」。
在「SQL translations」(SQL 翻譯) 頁面中,按一下工作名稱,選取完整歷程工作。沿襲作業的輸出值為
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:專案 ID,指向您的Google Cloud 專案。LOCATION:處理位置。這個值必須是eu或us。WORKFLOW_ID:所產生歷程的工作流程 ID。
前往輸出訊息的「taskResult.translationTaskResult.consoleUri」欄位中包含的連結。
使用遷移沿襲
以下各節說明如何使用遷移歷程,處理來源資料和資料庫。
瞭解遷移歷程字詞
遷移歷程會使用下列術語:
| 條款 | 說明 |
|---|---|
| 指令碼 | 在歷程建構期間擷取的資料庫記錄中顯示的 SQL 指令碼和其他程式。指令碼由陳述式組成,最常見的是單一 SQL 陳述式。 |
| 節點 | 歷程圖的頂點。包括資料表和資料欄。 |
| 資料表 | 也稱為「關係」,包括一般資料表、檢視區塊、結構化檔案和其他類似資料表的資源。 |
| 資料欄 | 也稱為「屬性」,包括資料表欄、檢視投影、虛擬欄、檔案和其他資源中的類似欄位,以及子欄 (例如結構體欄位)。 |
| 邊緣 | 譜系節點之間的連線,表示管道執行讀取或寫入這些節點的指令碼時發生的互動。邊緣會標註時間戳記、述詞和其他中繼資料,這些資料來自邊緣的衍生時間。以邊緣與另一個節點相鄰的節點稱為直接連線;兩個節點之間的邊緣路徑稱為間接連線。 |
| 歷程邊緣 | 有向邊緣,表示來源節點包含在 FROM、WHERE 或 GROUP BY 等子句中,進而影響目標節點的資料。 |
| 使用者和管道 | 來源資料庫提供的中繼資料標籤,說明執行指令碼的人員和內容。這些標籤對沿襲引擎沒有任何固有意義,但可用於依來源將指令碼分組。 |
以下各節說明遷移歷程中的不同頁面。
檢查到達網頁
遷移歷程的到達網頁會顯示歷程工作 ID、依名稱尋找歷程物件的搜尋欄位,以及醒目顯示部分可能感興趣歷程物件的建議清單。這個頁面也會顯示遷移歷程中資料表、管道和使用者的總數。
如要前往特定表格、檢視畫面或資料欄,請在搜尋欄中搜尋物件,或按一下到達網頁上建議的物件。
查看節點頁面
如要查看遷移歷程中的節點,請點選下列任一分頁。
「資料流程」分頁
「資料流程」分頁會以視覺化方式呈現部分沿襲圖。首次在沿襲服務中查看資料表或資料欄時,系統會預設顯示這個頁面。圖表會顯示資料在來源系統中的流動方式。這個圖表中的節點代表資料表或檢視區塊,節點之間的邊緣則代表資料從左側節點流向右側節點。
「資料流程」圖表中的每個資料表都會顯示不合格的名稱。如要查看資料表的完整名稱 (包含資料庫和結構定義前置字元),請將指標懸停在節點上,顯示工具提示。每個資料表都會以節點上的垂直長條表示結構定義。沿襲中的所有結構定義都會依字母順序排序並指派顏色,因此相同結構定義中的資料表會顯示相同顏色的長條,名稱相似的結構定義中的資料表則會顯示類似顏色的長條。
每個節點都會顯示圖示,指出節點的屬性:
- 監控:檢視畫面,而非表格。
- 已快取:一律會完整重新整理 (截斷,然後重新寫入) 的資料表。按一下圖示,即可查看這個資料表旁邊的指令碼。
- 已快取:並非一律完全重新整理的資料表 (經過截斷,然後重新編寫)。按一下圖示,即可查看這個資料表旁邊的指令碼。
- 計時器:生命週期較短的資料表。將游標懸停在圖示上,即可查看表格存在的時間長度。
- 雪花:上次寫入時間超過七天的資料表,表示資料表中的資料是靜態或不常寫入。
如要查看「資料流」圖中的物件,請執行下列操作:
- 如要查看資料表欄位清單,請點選資料表。這個檢視畫面會顯示每個資料欄的名稱和資料類型,這些資訊是從提供的中繼資料傾印檔判斷而來,或是從查詢記錄中的 SQL 推斷而來。
- 如要查看資料欄的資料欄層級歷程圖表,請點選資料欄。在資料欄層級的歷程圖中,邊緣代表會影響目標資料欄的資料流。
如要查看邊緣的詳細資料,請按一下圖表中的邊緣。這個檢視畫面包含導致邊緣的 SQL 指令碼連結。
當 SQL 陳述式在計算要插入目標節點的資料時,如果參照來源節點,系統就會從來源節點產生邊緣至目標節點。通常這會涉及將資料從來源轉移至目標,但如果來源節點用於影響目標的
WHERE或GROUP BY子句中,「資料流程」分頁也會顯示邊緣。如要只篩選資料轉移,請切換工具列中的「顯示非資料邊緣」按鈕。
「連線」分頁
歷程節點的「連線」分頁會顯示歷程圖中附近的節點清單。根據預設,系統會依據與目前節點之間最短路徑的距離排序已連線的節點,也就是從目前節點抵達所需邊緣較少的節點會優先列出。你可以使用「排序」選項變更排序方式。
根據預設,連線清單會同時列出目前節點的上游 (生產者) 和下游 (消費者) 節點。您可以使用「類型」控制項變更這個篩選器。在「距離」欄中,目前節點上游的節點會顯示向上箭頭,並標示從目前節點到該節點的最短反向路徑距離;同樣地,目前節點下游的節點會顯示向下箭頭,並標示從目前節點到該節點的最短正向路徑距離。如果節點屬於週期,則可同時是目前節點的上游和下游。
如要下載包含所有顯示節點的檔案,請按一下「下載 CSV」
使用者分頁
節點的「使用者」分頁會顯示執行指令碼的使用者,這些指令碼會讀取或寫入節點,或節點的上游或下游。根據預設,系統會先列出執行最多不同動作的使用者。你可以使用「排序」選項變更排序方式。
如要下載包含所有顯示使用者的檔案,請按一下「下載 CSV」。
「管道」分頁
節點的「Pipelines」分頁會顯示執行指令碼的管道,這些指令碼會讀取或寫入節點,或是節點上游或下游的節點。根據預設,系統會優先列出執行最多個別動作的管道。你可以使用「排序」選項變更排序方式。
如要下載包含所有顯示管道的檔案,請按一下「下載 CSV」。
「程式碼」分頁
節點的「程式碼」分頁會顯示輸入檔案中所有從該節點讀取或寫入資料的 SQL 指令碼。SQL 文字中會醒目顯示節點提及內容。按一下腳本即可展開全文。您可以變更篩選器設定,篩選顯示的指令碼清單。
如要下載包含所有顯示指令碼的檔案,請按一下「下載 CSV」。
查看邊緣頁面
如要查看沿襲圖中的節點邊緣,請按一下下列任一分頁標籤。
「詳細資料」分頁
邊緣的「詳細資料」分頁會顯示述詞和類別,說明導致邊緣的指令碼所執行的作業。
述詞以三部分代碼表示,並以連字號分隔。第一部分是 r (表示邊緣的來源是關係) 或 a (表示邊緣的來源是屬性)。第二部分是下列其中一個縮寫,表示來源節點影響目標節點中資料的方式:
has:來源關係包含目標屬性。dat:來源會將資料複製或轉移至目標。res:來源會篩選或限制子句 (例如WHERE、HAVING或JOIN ON) 中目標的基數。grp:來源用於影響目標的GROUP BY子句。
第三部分也是 r 或 a,表示邊緣的目標是關係還是屬性。
邊緣類別包括:
datpredicates:AGGREGATE:來源用於匯總運算,並寫入目標。EXACT_COPY:來源資料已完整複製到目標。FUNCTION:用於計算目標的來源。IDENTITY_COPY:目標未計算。目標是來源的字面副本,沒有任何轉換或轉換。PARTITION_PROMOTION:目標包含來源的資料,這是將來源的分區升級至目標的結果。WEAK_COPY:來源資料至少已部分複製到目標。
respredicates:FILTER:來源用於比較,並寫入目標。KEY:來源資料在聯結比較中做為鍵,並寫入目標。
grppredicates:GROUP:來源的資料在GROUP BY子句中做為鍵使用,會影響目標。
「程式碼」分頁
邊緣的「程式碼」分頁會顯示導致該邊緣的 SQL 指令碼。邊緣的來源和目標節點會在 SQL 文字中提及時醒目顯示。
後續步驟
- 執行遷移評估,評估將資料倉儲遷移至 BigQuery 的可行性和潛在效益。
- 使用 SQL 轉譯服務 (例如互動式 SQL 翻譯器、轉譯 API 和批次 SQL 翻譯器),自動將 SQL 查詢轉換為 GoogleSQL,包括 Gemini 強化版 SQL 自訂功能。