Skip to content
Last updated

Teradata Import Integration

Teradata統合により、Teradata ServerからTreasure Dataへのデータのインポートが可能になります。

前提条件

  • Treasure Dataの基本的な知識
  • Teradata SQLの基本的な知識
  • 実行中のTeradataインスタンス

新しい認証を作成する

  1. Integrations Hub > Catalogに移動します。
  2. Teradataを検索して選択します。

  1. ダイアログが開きます。

  2. 設定を入力します。

    ParametersDescription
    HostTeradataデータベースのホスト情報、例:IPアドレス。
    Portインスタンスの接続ポート。Teradataのデフォルトは1025です。
    UsernameTeradataデータベースに接続するためのユーザー名。
    PasswordTeradataデータベースに接続するためのパスワード。
    OPTIONS
    JDBC Connection optionsTeradataデータベースが必要とする特別なJDBC接続。次のJDBCオプションは無視されるため追加しないでください: - DBS_PORT(port設定を使用) - DATABASE(database設定を使用) - USER(user設定を使用) - PASSWORD(password設定を使用) - LOGMECH(現在TD2のみサポート)
    connection timeoutソケット接続のタイムアウト(秒単位)(デフォルトは300)。
    Network timeoutネットワークソケット操作のタイムアウト(秒単位)(デフォルトは1800)。0はタイムアウトなしを意味します。
  3. 接続の名前を入力し、Doneを選択します。

クエリを検証する

SQLクエリからデータをロードする場合は、クエリが有効なSELECTステートメントであることを確認してください。複数のステートメントはサポートされていません。

新しい転送を作成する

接続を作成すると、自動的にAuthenticationsタブに移動します。作成した接続を探し、Sourceを選択します。

インポートタイプ

インポートのソースタイプを選択します。テーブル/ビュー全体をロードする(table/view loading)か、SQLの結果をロードする(query loading)かを選択します。

Table/View Loading

テーブル/ビュー全体をロードする場合は、「Table/View」を選択し、ロードする「Table/View name」を入力します。

Query Loading

SQLの結果をロードする場合は、「Query statement」を選択し、「SQL statement」にSQLクエリを入力します。

転送を作成する前に、クエリが有効なSELECTクエリであり、単一のステートメントであることを確認してください。QueryとIncrementalからデータを取得する場合、クエリステートメントはORDER BY句を除外する必要があります

Incremental Loading

Incremental Loadingは、自動増分IDカラムやタイムスタンプカラムなど、増加する一意のカラムを使用して、前回の実行後の新しいレコードのみをロードできます。

これを有効にするには、Incremental Loadingをチェックし、「Incremental Column Name」に増分するカラム名を指定します。

インクリメンタルカラムとしてサポートされているのは、INTEGERまたはBIGINT型とTIMESTAMP型のみです。

この値からインクリメンタルローディングを開始する場合は、Start Afterを入力します。インクリメンタルカラムがTimestamp型の場合、入力はyyyy-MM-dd'T'HH:mm:ss.SSSSSS形式のTimestamp文字列である必要があり、値はUTCタイムゾーンとして扱われます。

仕組み

このコネクタは、インクリメンタルカラムで順序付けられた最新のレコードである「last record」を記録します。次の実行では、last recordを使用して次のルールで構築されたクエリを実行してレコードをロードします:

テーブルローディングでは、すべてのフィールドがWHERE句で選択されます。

SELECT   * FROM   `${dataset}.${table}` WHERE   ${incremental_column} > ${value_of_last_record}

クエリローディングでは、生のクエリがWHERE句でラップされます。

SELECT   * FROM   (${query}) embulk_incremental_ WHERE   ${incremental_column} > ${value_of_last_record}

Data Settings

  1. Nextを選択します。Data Settingsページが開きます。
  2. 必要に応じてデータ設定を編集するか、このページをスキップします。

ParametersDescription
Rows per batch非常に大きなデータセットはメモリの問題を引き起こし、その結果ジョブが失敗する可能性があります。このフラグを使用して、インポートジョブを行数でバッチに分割し、メモリの問題やジョブの失敗の可能性を減らします。無制限の場合は0に設定します。それ以外の場合、値は0より大きい必要があります

Data Preview

データソースを設定した後、Nextを選択し、次にNextをクリックしてGenerate Previewをクリックすると、ソースからのサンプル結果が表示されます。

Transfer to

プレビューからNextを選択すると、データを転送するTreasure Dataのデータベースとテーブルを選択するように求められます。新しいデータベースを作成する場合は、Create new databaseを選択してデータベースに名前を付けます。Create new tableでも同様の手順を実行します。

既存のテーブルにレコードを追加するか、既存のテーブルを置き換えるかを選択します。

デフォルトのキーとは異なるパーティションキーシードを設定する場合は、「Partition key seed」から選択できます。

Schedule

SCHEDULEセクションでは、インポートジョブを1回限りの転送として指定するか、自動化された定期的な転送をスケジュールできます。

転送が実行された後、Databasesタブで転送の結果を確認できます。

Appendix

Data Conversion

Teradataのデータ型は、次の表に示すように、対応するTreasure Dataの型に自動的に変換されます。テーブル/ビューまたはクエリ結果のスキーマにサポートされていない型を含めると、エラーが発生します。

Teradata Data TypeTD Data Type
BYTEINTLong
SMALLINTLong
INTEGERLong
BIGINTLong
FLOATDouble
DECIMALString
CHARString
VARCHARString
BYTEUnsupport
VARBYTEUnsupport
DATEString
TIMEString
TIMESTAMPTimestamp
CLOBString
BLOBUnsupport
Structured UDTString
INTERVALString
JSONString
XMLString
PERIODString
GEOString

Quotas and Limits

Teradata Serverのクォータと制限。

CLIでTeradataコネクタを使用する

必要に応じて、TD Toolbeltを介してコネクタを使用できます。

CLIでTD Toolbeltをセットアップします。

設定ファイルを作成する

ここでは「config.yml」と呼ばれる設定YAMLファイルを作成します。

例:bigintegerデータ型のインクリメンタルカラムとlast_recordを設定したテーブルからのインポート

in:
   type: teradata
   host: xxx
   options: {"xxx": "xxx"}
   connect_timeout:300
   socket_timeout:1800
   user: xxx
   port: 1025
   password: xxxx
   database: xxxxx
   source_type: table_view
   table: xxxx
   fetch_rows: 10000
   incremental: true
   incremental_column: big_int_column
   last_record: 100

例:timestampデータ型のインクリメンタルカラムとlast_recordを設定したQueryからのインポート

in:
   type: teradata
   host: xxx
   options: {"xxx": "xxx"}
   connect_timeout:300
   socket_timeout:1800
   user: xxx
   port: 1025
   password: xxxx
   database: xxxxx
   source_type: query
   query: |
      SELECT * FROM tbl;  fetch_rows: 10000  incremental: true  incremental_column: created_at  last_record: '2025-08-26T12:10:42.010000'

Parameters

NameDescriptionTypeValueDefault ValueRequired
typeコネクタタイプstringteradataN/AYes
hostTeradataサーバーホストstringN/AN/AYes
portTeradataサーバーポートnumberN/A1025
optionsTeradata JDBCオプションstring (ハッシュオブジェクト形式)N/AN/ANo
connect_timeoutTeradataログオンタイムアウトnumberN/A300No
socket_timeoutネットワークソケット操作のタイムアウトnumberN/A1800No
databaseTeradataデータベースstringN/AN/AYes
source_typeソースインポートstringサポート値: - table_view - querytableYes
tableテーブル名stringN/AN/Asource_typeがtable_viewの場合は必須
querySQLステートメントstringN/AN/Asource_typeがqueryの場合は必須
incrementalインクリメンタルローディングを有効にするかどうかbooleantrue/falsefalseNo
incremental_columnインクリメンタルローディング用のカラム名 INTEGER、BIGINTまたはTIMESTAMPデータ型のみサポートstringN/AN/Aincrementalがtrueの場合は必須
last_recordこの値からインクリメンタルインポートを開始します。カラムインクリメンタルがtimestampデータ型の場合、この値はyyyy-MM-dd'T'HH:mm:ss.SSSSSS形式に従う必要があり、UTCタイムゾーンとして扱われますstringN/AN/ANo

(オプション)Preview

設定ファイルを検証するために、td td connector:previewコマンドを実行します

td connector:preview config.yml

新しいコネクタセッションを作成する

td connector:createを実行します。

次の例では、Teradataコネクタを使用した日次インポートセッションが作成されます。

td connector:create daily_teradata_import \
"10 0 * * *" td_sample_db td_sample_table config.yml

Data Partition Key

コネクタセッションでは、結果データにデータパーティションキーとして使用される少なくとも1つのタイムスタンプカラムが必要であり、デフォルトでは最初のタイムスタンプカラムがキーとして選択されます。カラムを明示的に指定する場合は、「--time-column」オプションを使用します。

$ td connector:create --time-column created_at \
daily_teradata_import ...

結果データにタイムスタンプカラムがない場合は、次のようにフィルタ設定を追加して「time」カラムを追加します。

in:
   type: teradata
   ...
filters:
   - type: add_time
     from_value:
       mode: upload_time
     to_column:
       name: time
out:
   type: td