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

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

始める前に

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
  • MySQL SQL
  • Oracle SQL、PL/SQL、Exadata
  • PostgreSQL SQL
  • Trino または PrestoSQL
  • Snowflake SQL
  • SQL Server T-SQL
  • Vertica SQL

クエリを 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 変換を無効にする] を選択します。

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

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

バッチ変換構成 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 トランスレータには、変換用に入力したクエリのスキーマ情報がありません。最も正確な変換ができるように、クエリ自体の前にクエリで使用されるテーブルのデータ定義言語(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 トランスレータは、次の処理を行うロケーションでのみ使用できます。

  • us(米国マルチリージョン)
  • eu(EU マルチリージョン)
  • southamerica-east1(サンパウロ)
  • us-central1(アイオワ)
  • asia-northeast1(東京)
  • asia-south1(ムンバイ)
  • asia-southeast1(シンガポール)
  • australia-southeast1(シドニー)
  • europe-central2(ワルシャワ)
  • europe-north1(フィンランド)
  • europe-west1(ベルギー)
  • europe-west2(ロンドン)
  • europe-west3(フランクフルト)

料金

インタラクティブ SQL トランスレータは無料で使用できます。ただし、入出力ファイルの保存に使用されるストレージには料金が発生します。詳細については、ストレージの料金をご覧ください。

次のステップ

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