インタラクティブな SQL トランスレータを使用してクエリを変換する

このドキュメントでは、BigQuery のインタラクティブ SQL トランスレータを使用して、別の SQL 言語のクエリを GoogleSQL クエリに変換する方法について説明します。インタラクティブ SQL トランスレータを使用すると、ワークロードを BigQuery に移行する時間と労力を削減できます。このドキュメントは、Google Cloud コンソールについての知識があるユーザーを対象としています。

ロケーションがサポートされている場合は、変換ルール機能プレビュー版)を使用して、インタラクティブ SQL 変換ツールによる SQL の変換方法をカスタマイズできます。

制限事項

インタラクティブ SQL 変換ツールを使用するには、Google アカウントでログインする必要があります。インタラクティブ SQL 変換ツールは、フェデレーション ID の使用をサポートしていません。

始める前に

2022 年 2 月 15 日より前に Google Cloud CLI プロジェクトを作成した場合、次のように BigQuery Migration API を有効にします。

  1. Google Cloud コンソールで、[BigQuery Migration API] ページに移動します。

    BigQuery Migration API に移動

  2. [有効にする] をクリックします。

権限とロール

このセクションでは、インタラクティブ SQL トランスレータを使用するために必要な Identity and Access Management(IAM)権限(それらの権限を付与する IAM 事前定義ロールを含む)について説明します。また、追加の変換構成を構成するために必要な権限についても説明します。

インタラクティブ SQL トランスレータを使用するための権限

インタラクティブ SQL トランスレータを使用するには、次の権限が必要です。

  • bigquerymigration.translation.translate

次の IAM 事前定義ロールには、インタラクティブ SQL トランスレータを使用するために必要な権限が用意されています。

  • roles/bigquerymigration.translationUser

インタラクティブ SQL 変換ツールを使用してクエリを実行するには、BigQuery でクエリを実行する場合に必要な権限が必要です。たとえば、テーブルをクエリするには、テーブルのデータを読み取るための権限が必要です。詳細については、BigQuery データのクエリをご覧ください。

追加の変換構成を構成するための権限

追加の変換構成は、変換設定の [変換構成 ID] フィールドと [変換構成のソース ロケーション] フィールドを使用して構成できます。これらの変換構成を構成するには、次の権限が必要です。

  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list

次の IAM 事前定義ロールには、追加の変換構成を構成するために必要な権限が用意されています。

  • roles/bigquerymigration.viewer

BigQuery IAM の詳細については、IAM でのアクセス制御をご覧ください。

サポートされている SQL 言語

BigQuery インタラクティブ SQL トランスレータでは、次の SQL 言語を GoogleSQL に変換できます。

  • Amazon Redshift SQL
  • Apache HiveQL と Beeline CLI
  • IBM Netezza SQL と NZPLSQL
  • Teradata と Teradata Vantage
    • SQL
    • 基本的な Teradata Query(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-northeast1
ムンバイ asia-south1
シンガポール asia-southeast1
シドニー australia-southeast1
ヨーロッパ
EU(マルチリージョン) eu
ワルシャワ europe-central2
フィンランド europe-north1 リーフアイコン 低 CO2
マドリッド europe-southwest1 リーフアイコン 低 CO2
ベルギー europe-west1 リーフアイコン 低 CO2
ロンドン europe-west2 リーフアイコン 低 CO2
フランクフルト europe-west3 リーフアイコン 低 CO2
オランダ europe-west4 リーフアイコン 低 CO2
チューリッヒ europe-west6 リーフアイコン 低 CO2
パリ europe-west9 リーフアイコン 低 CO2
トリノ europe-west12
南北アメリカ
サンパウロ southamerica-east1 リーフアイコン 低 CO2
米国(マルチリージョン) us
アイオワ us-central1 リーフアイコン 低 CO2
サウス カロライナ us-east1
北バージニア us-east4
コロンバス(オハイオ州) us-east5
ダラス us-south1 リーフアイコン 低 CO2
オレゴン us-west1 リーフアイコン 低 CO2
ロサンゼルス us-west2
ソルトレイクシティ us-west3

変換ルール機能は次のロケーションで使用できます。

  • us(米国マルチリージョン)
  • eu(EU マルチリージョン)
  • us-central1(アイオワ)
  • europe-west4(オランダ)

クエリを GoogleSQL に変換する

クエリを GoogleSQL に変換する手順は、次のとおりです。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エディタ] ペインで [その他] をクリックし、[変換設定] を選択します。

  3. [ソース言語] で、変換する SQL 言語を選択します。

  4. 省略可。[処理を行うロケーション] で、変換ジョブを実行するロケーションを選択します。たとえば、ヨーロッパにあり、データがロケーションの境界を越えることを望まない場合は、eu リージョンを選択します。

  5. [保存] をクリックします。

  6. [エディタ] ペインで [その他] をクリックし、[SQL 変換を有効にする] を選択します。

    [エディタ] ペインが 2 つのペインに分割されます。

  7. 左側のペインに、変換するクエリを入力します。

  8. [変換] をクリックします。

    BigQuery でクエリが GoogleSQL に変換され、右側のペインに表示されます。たとえば、次のスクリーンショットは、変換された Teradata SQL を示しています。

    GoogleSQL に変換された Teradata SQL クエリを表示

  9. (省略可)変換された GoogleSQL クエリを実行するには、[実行] をクリックします。

  10. (省略可)SQL エディタに戻るには、[その他] をクリックして、[SQL 変換を無効にする] を選択します。

    [エディタ] ペインが単一のペインに戻ります。

変換ルールを作成する

変換ルールを作成することで、インタラクティブ SQL 変換ツールによる SQL 変換方法をカスタマイズできます。インタラクティブ SQL 変換ツールは、割り当てられた Gemini 拡張 SQL 変換ルールに基づいて変換を調整します。これにより、移行のニーズに応じて変換結果をカスタマイズできます。この機能は特定のロケーションでのみサポートされています。

Gemini 拡張 SQL 変換ルールを作成するには、次の操作を行います。

  1. インタラクティブ変換を実行したら、[カスタマイズ] をクリックします。

    変換のカスタマイズ ボタン。

  2. 変換ルールを作成するには、次のいずれかまたは両方のプロンプトを使用します。

    • SQL パターンを別のものに置き換えます」プロンプトで、置換する SQL パターンを [置換] フィールドに指定します。[置換先] フィールドには、置換する SQL パターンを指定します。

      SQL パターンには、SQL スクリプトの任意の数のステートメント、句、関数を含めることができます。このプロンプトを使用してルールを作成すると、Gemini 拡張 SQL 変換は、変換出力でその SQL パターンのインスタンスを特定し、動的に別の SQL パターンに置き換えます。たとえば、このプロンプトを使用して、months_between (X,Y) が含まれるすべての箇所を date_diff(X,Y,MONTH) に置き換えるルールを作成できます。

    • [変換出力の変更を記述します] フィールドで、SQL 変換出力の変更を自然言語で記述します。

      このプロンプトを使用してルールを作成すると、Gemini 拡張 SQL 変換がリクエストを識別し、変換出力に指定された変更を行います。

  3. [プレビュー] をクリックします。

  4. [変更の提案のプレビュー] ダイアログで、Gemini 拡張 SQL 変換によってルールに基づいて変換出力に加えられた変更を確認します。

  5. 省略可: 今後の変換で使用するためにこのルールを追加するには、[ルールを追加] チェックボックスをオンにします。

    ルールは、変換設定の [変換構成ソースのロケーション] フィールドで指定されている構成 YAML ファイルに保存されます。構成 YAML ファイルの詳細については、追加の構成でクエリを変換するをご覧ください。構成 YAML ファイルは、最大 10 個の変換ルールをサポートできます。

  6. 提案された変更を変換出力に適用するには、[適用] をクリックします。

インタラクティブ変換ジョブのパフォーマンスを改善する

長時間実行されるインタラクティブな変換ジョブ(大きなメタデータ ファイル パッケージを使用するなど)で安定性を向上させ、ネットワーク タイムアウトの問題を回避するには、統合された Translation API を有効にします。統合された Translation API は、インタラクティブ トランスレータとバッチ トランスレータを単一のワークフローに統合し、インタラクティブな変換ジョブの効率と安定性を向上させます。

必要なロール

統合された Translation API をインタラクティブ トランスレータで使用するために必要な権限を取得するには、parent リソースに対する MigrationWorkflow 編集者 roles/bigquerymigration.editor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。

この事前定義ロールには、統合された Translation API をインタラクティブな変換機能で使用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

統合された Translation API をインタラクティブ トランスレータで使用するには、次の権限が必要です。

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

統合された Translation API を有効にする

統合された Translation API をインタラクティブ トランスレータで有効にするには、統合された Translation API の許可リストフォームに入力します。統合された Translation API をバッチ SQL トランスレータで使用する方法について詳しくは、変換ジョブを送信するの API の手順をご覧ください。

追加構成でクエリを変換する

バッチ変換構成 ID を指定するか、Cloud Storage フォルダに保存されている構成ファイルを使用して、追加の変換構成でインタラクティブ クエリを実行できます。変換構成には、変換の品質を向上させるために、ソースデータベースの SQL オブジェクト メタデータやオブジェクト マッピング情報が含まれる場合があります。たとえば、インタラクティブ SQL 変換の品質を向上させるために、ソース データベースの DDL 情報やスキーマを含めます。

バッチ変換構成 ID を指定して変換構成を指定するには、次の操作を行います。

  1. クエリエディタで、[その他] > [変換設定] をクリックします。
  2. [変換構成 ID] フィールドにバッチ変換構成 ID を入力して、完了した BigQuery バッチ移行ジョブから同じ変換構成を適用します。

    ジョブのバッチ変換構成 ID を確認するには、[SQL 変換] ページからバッチ変換ジョブを選択し、[変換構成] タブをクリックします。バッチ変換構成 ID がリソース名として表示されます。

  3. [保存] をクリックします。

変換構成のソースファイルの場所を指定して変換構成を指定するには、次の操作を行います。

  1. クエリエディタで、[その他] > [変換設定] をクリックします。
  2. [変換構成ソースのロケーション] フィールドに、Cloud Storage フォルダに保存されている変換構成ファイルへのパスを指定します。

    BigQuery のインタラクティブ SQL トランスレータでは、変換メタデータオブジェクト名マッピングを含む構成ファイルがサポートされています。Cloud Storage にファイルをアップロードする方法については、ファイル システムからオブジェクトをアップロードするをご覧ください。

  3. [保存] をクリックします。

構成ファイルのサイズに関する制限

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).

メタデータのファイルサイズを減らす方法の 1 つは、--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 トランスレータは無料で使用できます。ただし、入出力ファイルの保存に使用されるストレージには料金が発生します。詳細については、ストレージの料金をご覧ください。

次のステップ

データ ウェアハウス移行の次のステップの詳細を確認する。