Teradata の移行の詳細とオプション

このドキュメントでは、BigQuery Data Transfer Service を使用して Teradata から BigQuery にデータを移行する際の詳細、オプション、ベータ版機能について説明しています。

カスタム スキーマ ファイル

スキーマ ファイルを使用した変換の実行

移行の一環として、カスタム スキーマ ファイルを指定して任意のオブジェクトの name フィールドを変更し、任意の列に usageType 配列を追加できます。 テーブルに関する追加情報(スキーマが指定されていないと移行中に損失してしまうパーティショニングなど)を含めるには、カスタム スキーマ ファイルが特に役立ちます。

次の使用タイプがサポートされています。

  • PARTITIONING: この usageType でアノテーションを付けることができるのは、テーブルごとに 1 つの列のみです。column の型フィールドは、DATE または TIMESTAMP にする必要があります。 この列は、tables オブジェクトを含むための partitioned テーブル定義に使用されます。
  • CLUSTERING: 1 つのテーブル内の複数の列に、この usageType のアノテーションを付けることができます。列タイプは、BigQuery でのクラスタリングの制約に従う必要があります。同じテーブルに PARTITIONING フィールドが指定されている場合、BigQuery はこれらの列を使用してクラスタ化テーブルを作成します。この usageType でマークできるのは、型が INT64STRINGDATETIMESTAMPBOOLNUMERIC の列のみです。
  • COMMIT_TIMESTAMP: この usageType でアノテーションを付けることができるのは、テーブルごとに 1 つの列のみです。この usageType は、更新タイムスタンプの列にアノテーションを付けるために使用します。この列は、前回の転送以降に作成または更新された行を抽出するために使用されます。タイプは TIMESTAMP または DATE である必要があります。

カスタム スキーマ ファイルの例


{
  "databases": [
    {
      "name": "db",
      "originalName": "db",
      "tables": [
        {
          "name": "test",
          "originalName": "test",
          "columns": [
            {
              "name": "foo",
              "originalName": "foo",
              "type": "INT64",
              "usageType": ["CLUSTERING"]
            },
            {
              "name": "bar",
              "originalName": "bar",
              "type": "DATE",
              "usageType": ["PARTITIONING"]
            },
            {
              "name": "change",
              "originalName": "change",
              "type": "TIMESTAMP",
              "usageType": ["COMMIT_TIMESTAMP"]
            }
          ]
        }
      ]
    }
  ]
}

転送においてテーブルがどのようにパーティション分割またはクラスタ化されるかについて詳しくは、増分転送をご覧ください。

Teradata から BigQuery へのデータ型のマッピング

Teradata の型 BigQuery の型 型の違い
INTEGER INTEGER
SMALLINT INTEGER
BYTEINT INTEGER
BIGINT INTEGER
DECIMAL NUMERIC BigQuery NUMERIC 型には、10 進 38 桁の精度と 10 進 9 桁の尺度があります。
FLOAT NUMERIC BigQuery NUMERIC 型には、10 進 38 桁の精度と 10 進 9 桁の尺度があります。
NUMERIC NUMERIC BigQuery NUMERIC 型には、10 進 38 桁の精度と 10 進 9 桁の尺度があります。
NUMBER NUMERIC BigQuery NUMERIC 型には、10 進 38 桁の精度と 10 進 9 桁の尺度があります。
REAL FLOAT64
CHAR STRING
CHARACTER STRING
VARCHAR STRING
CLOB STRING
JSON STRING
BLOB バイト
BYTE バイト
VARBYTE バイト
DATE DATE
TIME 時間 BigQuery TIME は UTC です。BigQuery Data Transfer Service では、それぞれの値が UTC 形式で抽出されます。
TIMETZ 時間 BigQuery TIME は UTC です。BigQuery Data Transfer Service では、それぞれの値が UTC 形式で抽出されます。
タイムスタンプ タイムスタンプ BigQuery TIMESTAMP は UTC です。BigQuery Data Transfer Service では、それぞれの値が UTC 形式で抽出されます。

TIMESTAMP の精度はマイクロ秒に制限されています。
TIMESTAMPTZ タイムスタンプ BigQuery TIMESTAMP は UTC です。BigQuery Data Transfer Service では、それぞれの値が UTC 形式で抽出されます。

TIMESTAMP の精度はマイクロ秒に制限されています。
ARRAY STRING
MULTIDIMENSIONALARRAY STRING
時間 INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
PERIODDATE STRING
PERIODTIMESTAMPTZ STRING
PERIODTIMESTAMP STRING
PERIODTIME STRING
PERIODTIMETZ STRING
ユーザー定義の STRING
XML STRING
任意の型 STRING

増分転送

BigQuery Data Transfer Service は、新規および更新された行の繰り返される定期的な転送(「増分転送」)をサポートしています。転送の設定時にスケジュールのオプションで、転送をオンデマンド転送(1 回限り)または増分転送として指定します。

Teradata のソーステーブルには、TIMESTAMP データ型の変更トラッキング列が必要です。

増分転送では、最初の転送で常に BigQuery にテーブル スナップショットが作成されます。それ以降の転送では、BigQuery の既存のテーブルに新しいデータや変更されたデータをキャプチャ、転送、追加します。 つまり、行が変更された場合、BigQuery テーブルに古い値のある行と新しい値のある行が重複している可能性があります。

転送実行ごとに、転送実行のタイムスタンプが保存されます。後続の転送実行ごとに、エージェントは前回実行された転送のタイムスタンプ(T1)と、現在の転送が開始されたときのタイムスタンプ(T2)を受け取ります。

最初の転送実行後、移行エージェントは転送ごとに、次のテーブルごとのロジックを使用してデータを抽出します。

  • スキーマ ファイル内のテーブル オブジェクトに COMMIT_TIMESTAMP のusageType の列がない場合、テーブルはスキップされます。
  • テーブルに usageType が COMMIT_TIMESTAMP の列がある場合、T1 と T2 の間のタイムスタンプを持つすべての行が抽出され、BigQuery の既存のテーブルに追加されます。

増分転送での DDL / DML オペレーション

Teradata オペレーション Teradata から BigQuery へのサポート
作成 DDL テーブル名が指定されたパターンと一致する場合、テーブルの新しい完全なスナップショットが BigQuery に作成されます。
DROP DDL 非対応
ALTER(RENAME) DDL テーブル名が指定されたパターンと一致する場合、名前を変更したテーブルの新しい完全なスナップショットが BigQuery に作成されます。前回のスナップショットは BigQuery から削除されません。名前が変更されたテーブルは、ユーザーに通知されません。
INSERT DML 一致する BigQuery テーブルに新しい行が追加されます。
更新 DML 行は変更されません。行は、INSERT など新しい行として一致する BigQuery テーブルに追加されます。前回の転送時の行が更新または削除されることはありません。
結合 DML サポートされていません。代わりに、INSERT、UPDATE、DELETE をご覧ください。
削除 DML 非対応

次のステップ