バッチ SQL トランスレータ

このドキュメントでは、BigQuery でバッチ SQL トランスレータを使用して、Teradata SQL を BigQuery 標準 SQL に変換する方法について説明します。このドキュメントは、Google Cloud Console についての知識があるユーザーを対象としています。

バッチ SQL トランスレータは、BigQuery Migration Service の一部です。これを使用して、他の SQL 言語のバッチを BigQuery 標準 SQL に変換できます。また、Basic Teradata Query(BTEQ)などの SQL スクリプト言語を翻訳することもできます。

サポートされている SQL 言語は次のとおりです。

  • Teradata SQL
  • 基本的な Teradata Query(BTEQ)

必要な権限

BigQuery Migration Service を有効にするには、プロジェクトに対する次の権限が必要です。

  • resourcemanager.projects.get
  • serviceusage.services.enable
  • serviceusage.services.get

BigQuery Migration Service にアクセスして使用するには、プロジェクトに関する次の権限が必要です。

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list
  • bigquerymigration.workflows.delete
  • bigquerymigration.subtasks.get
  • bigquerymigration.subtasks.list

    または、次のロールを使用して同じ権限を取得することもできます。

    • bigquerymigration.viewer - 読み取り専用アクセス。
    • bigquerymigration.editor - 読み取り / 書き込みアクセス。

入出力ファイル用の Cloud Storage バケットにアクセスするには:

  • ソース Cloud Storage バケットに対する storage.objects.get
  • ソース Cloud Storage バケットに対する storage.objects.list
  • 転送先の Cloud Storage バケットに対する storage.objects.create

次のロールには、上記の必要な Cloud Storage の権限がすべて含まれています。

  • roles/storage.objectAdmin
  • roles/storage.admin

始める前に

変換ジョブを送信する前に、API を有効にして、ソースファイルを Cloud Storage にアップロードする必要があります。

Migration API を有効にする

次のように BigQuery Migration API を有効にします。

  1. Cloud Console で、[BigQuery Migration API] ページに移動します。

    BigQuery Migration API に移動

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

入力ファイルを Cloud Storage にアップロードする

変換ジョブを開始する前に、変換するクエリとスクリプトを使用してソースファイルをアップロードする必要があります。ソースファイルに含めることができる内容については、ソースファイル形式のセクションをご覧ください。バケットを作成してファイルを Cloud Storage にアップロードする方法については、ストレージ バケットの作成オブジェクトのアップロードをご覧ください。

Teradata SQL から変換する

次の手順に沿って変換を開始し、進行状況を表示して結果を確認します。以下の手順は、ソースファイルが Cloud Storage バケットにすでにアップロードされていることを前提としています。

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery に移動

  2. ナビゲーション パネルで [SQL 変換] に移動します。

  3. [変換を開始] をクリックします。

  4. 変換構成ダイアログに入力します。

    1. 名前には文字、数字、アンダースコアを使用できます。
    2. 変換ジョブのロケーションを選択します。効率的に実行するには、ソースファイル バケットと同じロケーションを選択します。
    3. 変換モード用の Teradata SQL を選択します。
  5. [続行] をクリックします。

  6. ソースパスを選択します。パスを入力するか、[参照] オプションを使用します。接頭辞フィルタを追加して、バケット内の特定のファイルを除外することもできます。

  7. [続行] をクリックして、次のステップに進みます。

  8. 宛先のパスを選択します。ソースパスと同様に、パスを入力するか、[参照] オプションを使用します。

  9. 単純な変換を行う場合は、[作成] をクリックして変換ジョブを開始します。オプション設定の使用については、オプション設定セクションをご覧ください。

  10. ジョブのステータスは変換ジョブリストに表示されます。

    変換ステータス。

  11. 変換が完了したら、[詳細を表示] をクリックして変換ジョブの結果を確認します。

API

定義済みのワークフローを使用して create メソッドを呼び出します。

次に、start メソッドを呼び出して、変換ワークフローを開始します。

BTEQ 変換の追加設定

BTEQ 変換に必要な追加フィールドは次のとおりです。BTEQ のオプションは、宛先パスを設定した後、[BTEQ の設定] タブで設定します。

項目 必須 説明
データセット ID 必須 このデータセット ID は、スクリプトで参照されるテーブルのデータセット接頭辞として使用されます。

たとえば、新しいデータを table1 に挿入する insert ステートメントは datasetId.table1 に変換されます。

デフォルトパス URI 必須 指定すると、このパスが .IMPORT ステートメントと .EXPORT ステートメントのデフォルトパスとして使用されます。
パスの置換 不要 このフィールドは複数回追加できます。追加の際は、BTEQ スクリプトで言及されているファイルのファイルパスを指定します。変換の際に、ファイルは指定されたパスに置き換えられます。

たとえば、次のファイルとパスのペアを指定するとします。

  • ./file1.csv
  • gs://bucket/folder1/file1*.csv
file1.csv に指定したすべての名前リンクは、指定された Cloud Storage パスに置き換えられます。

オプションの設定

このタブの設定は、高度な変換設定用です。

項目 説明
スキーマのパス これは、テーブル スキーマのデータ定義言語(DDL)ステートメントを含む Cloud Storage パスです。テーブル スキーマを指定すると、変換結果が改善されます。
ファイル エンコード

このフィールドには、入力ファイルのエンコードを指定します。デフォルトは「utf-8」です。以下のエンコードを使用できます。

  • UTF_8
  • ISO_8859_1
  • US_ASCII
  • UTF_16
  • UTF_16LE
  • UTF_16BE

出力 SQL 識別子の大文字 / 小文字

テーブル名と列名用の出力の大文字と小文字の指定。デフォルトでは、元の大文字と小文字の指定がそのまま保持されます。このフィールドのオプションは次のとおりです。

  • デフォルト
  • 元のまま
  • 大文字
  • 小文字

特殊なトークンのマップ 変換入力ファイルに、特殊なトークンをプレースホルダとして使用する SQL テンプレートが含まれている場合は、このセクションを使用して、特殊なトークンからそのデータ型へのマップを指定します。

特殊なトークンペアの例を以下に示します。

  • 特殊なトークン: <b>
  • データ型: NUMERIC
このトークンを使用すると、次の Teradata SQL ステートメントが使用されます。

select trim(<b>) from x;
これは、次の BigQuery 標準 SQL に変換されます。

SELECT TRIM(CAST(<b> AS STRING)) FROM x;

出力ファイルを調べる

変換の実行後、指定した宛先パスで結果とエラーを確認できます。バッチ SQL トランスレータにより、次のファイルが宛先パスに出力されます。

  • 変換したファイル
  • エラー概要ファイル

変換されたファイル

入力ファイルごとに、対応する出力ファイルが宛先パスに生成されます。出力ファイルには、変換されたクエリとエラーが含まれます。

エラー概要ファイル

エラー概要ファイルは、変換中に発生したすべてのエラーのテーブルを含む CSV ファイルです。各入力ファイルには、対応するエラー概要ファイルがあります。概要ファイルの名前は <source_file_name>_errors.csv です。

エラー概要ファイルの例を次に示します。

Input_Query 行、列 カテゴリ メッセージ 種類
"selct * from abc" 5,1 SqlParseException 不正なコンテキストでクエリ以外の式が検出されました ERROR
"RENAM TBLE DB.table1 to DB.table2;" 1,1 SqlParseException 不正なコンテキストでクエリ以外の式が検出されました ERROR

ソースファイル形式

Cloud Storage バケットのソースファイルは、有効な Teradata SQL ファイルまたは BTEQ スクリプト ファイルである必要があります。

ソースファイルには次のものを含めることができます。

  • 1 行または複数行で、セミコロンで終わる有効な SQL ステートメント。
  • 各ストアド プロシージャ(SP)は、他の SP や他の SQL ステートメントとは別のファイルに存在する必要があります。
  • BTEQ モードが選択されている場合、サポートされている有効な BTEQ ステートメントと有効なマルチステートメントの SQL リクエスト。
  • BTEQ を変換する場合、/**/--* によってアノテーションが付けられたコメント。
  • 変換に適用されない特殊なプレースホルダ トークン。これらのトークンは構成ファイルで指定する必要があります。詳細については、オプションの設定をご覧ください。

ソースファイルに + Unsupported BTEQ ステートメントを含めることはできません。詳しくは、サポートされていない BTEQ ステートメントをご覧ください。

サポートされている BTEQ ステートメント

以下のステートメントは BTEQ 変換でサポートされています。

  • .ACTIVITYCOUNT
  • .ERRORCODE
  • .EXIT/.QUIT
  • .EXPORT
  • .GOTO/.LABEL
  • .IF.ELSEIF.ELSE,、.ENDIF
  • .IMPORT
  • .USING
  • .REPEAT

サポートされていない BTEQ ステートメント

次のステートメントはサポートされていません。

  • .MAXERROR
  • .NULL
  • .REPEATSTOP
  • .RETRY
  • .RUN

制限事項

スキーマ マッピングのサポートがない

SQL トランスレータでは、ソースデータ ウェアハウスと BigQuery の間のスキーマ変更は変換されません。スキーマで変更された列名またはテーブル名への参照は、変換中に入力クエリには反映されません。たとえば、移行中に「foo」という名前の列の名前が「bar」に変更されても、変換において、「foo」を参照するクエリが「bar」を参照するように自動的に更新されることはありません。これらの参照を更新するには、変換後の出力クエリでこれらの SQL 識別子を置き換える後処理ステップを実施します。

次のステップ