使用互動式 SQL 翻譯器翻譯查詢
本文件說明如何使用 BigQuery 互動式 SQL 翻譯器,將查詢從不同的 SQL 方言翻譯成 GoogleSQL 查詢。互動式 SQL 翻譯器能讓您用更少的時間和心力,將工作負載遷移至 BigQuery。本文件適用於熟悉 Google Cloud 控制台的使用者。
如果您的地區支援,您可以使用翻譯規則功能 (預先發布版) 自訂互動式 SQL 翻譯器翻譯 SQL 的方式。
事前準備
如果您的 Google Cloud CLI 專案是在 2022 年 2 月 15 日前建立,請按照下列步驟啟用 BigQuery Migration API:
前往 Google Cloud 控制台的「BigQuery Migration API」頁面。
按一下「啟用」。
權限與角色
本節說明使用互動式 SQL 翻譯器所需的身分與存取權管理 (IAM) 權限,包括授予這些權限的預先定義 IAM 角色。本節也說明設定其他翻譯設定所需的權限。
使用互動式 SQL 翻譯器的權限
如要取得使用互動式翻譯工具所需的權限,請要求管理員授予您 parent
資源的 MigrationWorkflow Editor (roles/bigquerymigration.editor
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色包含使用互動式翻譯工具所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要使用互動式翻譯工具,必須具備下列權限:
-
bigquerymigration.workflows.create
-
bigquerymigration.workflows.get
設定其他翻譯設定的權限
您可以使用翻譯設定中的「Translation Config ID」和「Translation Configuration Source Location」欄位,設定其他翻譯設定。如要設定這些翻譯設定,您必須具備下列權限:
bigquerymigration.workflows.get
bigquerymigration.workflows.list
下列預先定義的 IAM 角色提供設定其他翻譯設定所需的權限:
roles/bigquerymigration.viewer
如要進一步瞭解 BigQuery 身分與存取權管理,請參閱「使用身分與存取權管理功能控管存取權」。
支援的 SQL 方言
BigQuery 互動式 SQL 翻譯器可將下列 SQL 方言翻譯成 GoogleSQL:
- Amazon Redshift SQL
- Apache HiveQL 和 Beeline CLI
- IBM Netezza SQL 和 NZPLSQL
- Teradata 和 Teradata Vantage:
- SQL
- 基本 Teradata 查詢 (BTEQ)
- Teradata Parallel Transport (TPT)
此外,預先發布版支援下列 SQL 方言的翻譯:
- Apache Spark SQL
- Azure Synapse T-SQL
- Greenplum SQL
- IBM DB2 SQL
- MySQL SQL
- Oracle SQL、PL/SQL、Exadata
- PostgreSQL SQL
- Trino 或 PrestoSQL
- Snowflake SQL
- SQL Server T-SQL
- SQLite
- Vertica SQL
位置
互動式 SQL 翻譯器可用於下列處理位置:
區域說明 | 區域名稱 | 詳細資料 | |
---|---|---|---|
亞太地區 | |||
德里 | asia-south2 |
||
香港 | asia-east2 |
||
雅加達 | asia-southeast2 |
||
墨爾本 | australia-southeast2 |
||
孟買 | asia-south1 |
||
大阪 | asia-northeast2 |
||
首爾 | asia-northeast3 |
||
新加坡 | asia-southeast1 |
||
雪梨 | australia-southeast1 |
||
台灣 | asia-east1 |
||
東京 | asia-northeast1 |
||
歐洲 | |||
比利時 | europe-west1 |
|
|
柏林 | europe-west10 |
|
|
歐盟多個區域 | eu |
||
芬蘭 | europe-north1 |
|
|
法蘭克福 | europe-west3 |
|
|
倫敦 | europe-west2 |
|
|
馬德里 | europe-southwest1 |
|
|
米蘭 | europe-west8 |
||
荷蘭 | europe-west4 |
|
|
巴黎 | europe-west9 |
|
|
斯德哥爾摩 | europe-north2 |
|
|
杜林 | europe-west12 |
||
華沙 | europe-central2 |
||
蘇黎世 | europe-west6 |
|
|
美洲 | |||
哥倫布 (俄亥俄州) | us-east5 |
||
達拉斯 | us-south1 |
|
|
愛荷華州 | us-central1 |
|
|
拉斯維加斯 | us-west4 |
||
洛杉磯 | us-west2 |
||
墨西哥 | northamerica-south1 |
||
北維吉尼亞州 | us-east4 |
||
奧勒岡州 | us-west1 |
|
|
魁北克 | northamerica-northeast1 |
|
|
聖保羅 | southamerica-east1 |
|
|
鹽湖城 | us-west3 |
||
聖地亞哥 | southamerica-west1 |
|
|
南卡羅來納州 | us-east1 |
||
多倫多 | northamerica-northeast2 |
|
|
美國 (多個區域) | us |
||
非洲 | |||
約翰尼斯堡 | africa-south1 |
||
MiddleEast | |||
達曼 | me-central2 |
||
杜哈 | me-central1 |
||
以色列 | me-west1 |
根據預設,翻譯規則功能可在下列處理位置使用:
us
(美國多個區域)eu
(歐盟多個區域)us-central1
(愛荷華州)europe-west4
(荷蘭)
以 Gemini 為基礎的翻譯設定僅適用於特定處理位置。詳情請參閱「Google 模型端點位置」
將查詢轉譯為 GoogleSQL
如要將查詢轉換為 GoogleSQL,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在「編輯器」窗格中,按一下「更多」,然後選取「翻譯設定」。
在「Source dialect」中,選取要翻譯的 SQL 方言。
(非必要) 在「Processing location」(處理位置) 中,選取要執行翻譯工作的地區。舉例來說,如果您位於歐洲,且不希望資料跨越任何位置限制範圍,請選取
eu
區域。按一下 [儲存]。
在「編輯器」窗格中,按一下「More」,然後選取「Enable SQL translation」。
「編輯器」窗格會分成兩個窗格。
在左側窗格中,輸入要翻譯的查詢。
按一下 [翻譯]。
BigQuery 會將查詢轉譯為 GoogleSQL,並顯示在右側窗格中。例如,下圖顯示已翻譯的 Teradata SQL:
選用步驟:如要執行翻譯後的 GoogleSQL 查詢,請按一下「Run」。
選用:如要返回 SQL 編輯器,請點選「More」,然後選取「Disable SQL translation」。
「Editor」窗格會恢復為單一窗格。
設定互動式 SQL 翻譯器
您可以設定互動式 SQL 翻譯器,調整互動式 SQL 翻譯器翻譯來源 SQL 的方式。您可以透過在 YAML 設定檔中提供自訂規則,讓 Gemini 使用這些規則,或是提供設定 YAML 檔案,其中包含 SQL 物件中繼資料或物件對應資訊。
建立翻譯規則
您可以建立轉譯規則,自訂互動式 SQL 翻譯器轉譯 SQL 的方式。互動式 SQL 翻譯器會根據您指派給它的任何 Gemini 強化 SQL 翻譯規則調整翻譯內容,讓您根據遷移需求自訂翻譯結果。這項功能僅支援特定地點。
如要建立 Gemini 強化的 SQL 轉譯規則,請執行下列任一操作:
主控台
如要建立 Gemini 強化的 SQL 轉譯規則,請按照下列步驟操作:
執行互動式翻譯後,請依序按一下「協助」和「自訂這項翻譯」。
使用下列任一或兩個提示來建立翻譯規則:
在「Find and replace a pattern」提示中,在「Replace」欄位中指定要取代的 SQL 模式,並在「With」欄位中指定要取代的 SQL 模式。
SQL 模式可在 SQL 指令碼中包含任意數量的陳述式、子句或函式。使用這個提示建立規則時,Gemini 強化 SQL 轉譯功能會在轉譯輸出內容中找出該 SQL 模式的任何例項,並動態將其替換為其他 SQL 模式。舉例來說,您可以使用這個提示建立規則,將所有出現的
months_between (X,Y)
替換為date_diff(X,Y,MONTH)
。在「說明輸出內容的變更」欄位中,以自然語言輸入 SQL 翻譯輸出內容的變更。
使用這個提示建立規則時,Gemini 強化的 SQL 轉譯功能會識別要求,並對轉譯輸出內容進行指定變更。
按一下「預覽」。
在「預覽建議的變更」對話方塊中,根據規則查看 Gemini 強化 SQL 翻譯對翻譯輸出內容所做的變更。
選用:如要新增這項規則,以便用於日後的翻譯作業,請選取「Add rule...」核取方塊。
規則會儲存在預設設定 YAML 檔案 (
__default.ai_config.yaml
) 中。這個設定 YAML 檔案會儲存至 Cloud Storage 資料夾,位置如翻譯設定的「Translation Configuration Source Location」欄位所示。設定 YAML 檔案須遵守設定檔大小限制。如要將建議的變更套用至翻譯輸出內容,請按一下「套用」。
YAML
如要建立 Gemini 強化的 SQL 轉譯規則,您可以建立 Gemini 設定 YAML 檔案,然後上傳至 Cloud Storage。如需更多資訊,請參閱「建立以 Gemini 為基礎的設定 YAML 檔案」和「將以 Gemini 為基礎的設定 YAML 檔案套用至下次翻譯」。
將以 Gemini 為基礎的設定 YAML 檔案套用至下次的翻譯
如要為 AI 輸出套用 YAML 設定檔,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中,依序點選「更多」>「翻譯設定」。
在「Translation Configuration Source Location」欄位中,指定儲存在 Cloud Storage 資料夾中的 Gemini 版 YAML 檔案路徑。
按一下 [儲存]。執行互動式翻譯後,「Assist」按鈕上會顯示紅點,表示有 Gemini 建議可供使用。
按一下「Assist」,然後點選「View suggestions」,即可查看 Gemini 強化 SQL 翻譯服務建議的翻譯輸出內容變更。
在「預覽建議的變更」對話方塊中,根據規則查看 Gemini 強化 SQL 翻譯對翻譯輸出內容所做的變更。
如要將建議的變更套用至翻譯輸出內容,請按一下「套用」。
說明譯文
執行互動式翻譯後,您可以要求 Gemini 產生文字說明。系統產生的文字包含已翻譯的 SQL 查詢摘要。Gemini 也會找出來源 SQL 查詢與轉譯後的 GoogleSQL 查詢之間的轉譯差異和不一致之處。
如要取得 Gemini 產生的 SQL 翻譯說明,請執行下列操作:
如要建立 Gemini 產生的 SQL 翻譯說明,請依序點選「Assist」和「Explain this translation」。
使用批次翻譯設定 ID 進行翻譯
您可以提供批次翻譯設定 ID,讓互動式查詢使用與批次翻譯工作相同的翻譯設定。
- 在查詢編輯器中,依序點選「更多」>「翻譯設定」。
在「Translation Configuration ID」欄位中,提供批次翻譯設定 ID,以便套用已完成的 BigQuery 批次移轉工作中的相同翻譯設定。
如要找出工作批次轉譯設定 ID,請在「SQL 轉譯」頁面中選取批次轉譯工作,然後按一下「轉譯設定」分頁標籤。批次翻譯設定 ID 會列為「資源名稱」。
按一下 [儲存]。
使用其他設定進行翻譯
您可以指定儲存在 Cloud Storage 資料夾中的設定 YAML 檔案,藉此執行含有額外轉譯設定的互動式查詢。翻譯設定可能包含來源資料庫中的 SQL 物件中繼資料或物件對應資訊,有助於改善翻譯品質。舉例來說,您可以加入來源資料庫的 DDL 資訊或結構定義,以改善互動式 SQL 翻譯品質。
如要透過提供轉譯設定來源檔案的位置來指定轉譯設定,請按照下列步驟操作:
- 在查詢編輯器中,依序點選「更多」>「翻譯設定」。
在「Translation Configuration Source Location」欄位中,指定儲存在 Cloud Storage 資料夾中的轉譯設定檔路徑。
BigQuery 互動式 SQL 翻譯器支援包含翻譯中繼資料和物件名稱對應的中繼資料 ZIP 檔案。如要瞭解如何將檔案上傳至 Cloud Storage,請參閱「從檔案系統上傳物件」一文。
按一下 [儲存]。
如要在 BigQuery 後端儲存由 dwh-migration-dumper
工具產生的中繼資料檔案資訊,請執行下列操作:
- 在查詢編輯器中,依序點選「更多」>「翻譯設定」。
- 勾選「啟用中繼資料快取」核取方塊。對於含有大型中繼資料檔案的工作,此程序可大幅縮短後續要求的翻譯延遲時間。快取的中繼資料最多可使用 7 天。這項功能目前為預先發布版,如要尋求支援,或針對這項功能提供意見回饋,請來信至 bq-edw-migration-support@google.com。
- 按一下 [儲存]。
設定檔大小限制
當您使用 BigQuery 互動式 SQL 轉譯器的轉譯設定檔時,壓縮的結構描述檔或 YAML 設定檔必須小於 50 MB。如果檔案大小超過 50 MB,互動式翻譯工具會在翻譯期間略過該設定檔,並產生類似以下的錯誤訊息:
CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes)
exceeds limit (50 MB).
減少中繼資料檔案大小的方法之一,是使用 --database
或 --schema
標記,只擷取與翻譯輸入查詢相關的資料庫或結構定義中繼資料。如要進一步瞭解產生中繼資料檔案時如何使用這些標記,請參閱「全域標記」。
排解翻譯錯誤
以下是使用互動式 SQL 翻譯器時常見的錯誤。
RelationNotFound
或 AttributeNotFound
翻譯問題
為確保翻譯結果最準確,您可以在查詢前,針對查詢中使用的任何資料表輸入資料定義語言 (DDL) 陳述式。舉例來說,如果您想翻譯 Amazon Redshift 查詢 select table1.field1, table2.field1
from table1, table2 where table1.id = table2.id;
,請將下列 SQL 陳述式輸入互動式 SQL 翻譯器:
create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);
select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;
定價
使用互動式 SQL 翻譯器不需付費。不過,用於儲存輸入和輸出檔案的儲存空間會產生一般費用。詳情請參閱「儲存空間定價」。
後續步驟
進一步瞭解資料倉儲遷移作業的下列步驟: