転送先 - Snowflake

Prev Next

概要

Snowflakeへデータを転送する設定のDocsです。

SnowflakeとTROCCOの活用事例について

TROCCOの製品サイトでは、お客さまの導入事例を紹介しております。
本Docsとあわせてご覧ください。

設定項目

STEP1 基本設定

項目名 必須 デフォルト値 内容
Snowflake接続情報 Yes - あらかじめ登録してあるSnowflakeの接続情報から、今回の転送設定に必要な権限を持つものを選択します。
ウェアハウス Yes - 転送時のクエリ実行環境として用いるウェアハウスを選択します。
データベース Yes - 転送先のデータベース名を選択します。
スキーマ Yes - 転送先のスキーマ名を選択します。
テーブル Yes - 転送先のテーブル名を入力します。
対象テーブルが転送先のデータベース・スキーマ内に存在しない場合は、テーブルが自動的に作成されます。
転送モード Yes 追記 (INSERT) 転送モードを選択します。
詳しくは、後述の転送モードについてを参照ください。
マージキー No - 転送モードでUPSERT (MERGE)を選択したときに設定できます。
マージキー(主キー)扱いとする、値の重複がなく、NULL値も持たないカラムの名前を入力してください。

STEP1 詳細設定

詳細設定をクリックすると、設定項目が表示されます。

項目名 デフォルト値 内容
空文字をNULLに置換する ON 空文字をNULLに置換するかどうかを選択できます。
空文字のまま転送したい場合は、設定をOFFにしてください。
エラー時に一時ステージを削除する OFF 転送ジョブがエラーとなった場合に、一時ステージを削除するか選択できます。
本設定がONの場合でも、転送ジョブがキャンセルされた場合は、一時ステージは削除されません。
バッチサイズ (MB) 50 バッチサイズを入力します。
転送実行時にOutOfMemoryErrorが発生した場合には、適宜バッチサイズを引き下げてください。

STEP2 出力オプション

項目名 デフォルト値 詳細
カラム設定 - 一時テーブルを作る際のカラムを指定します。型のデフォルト値は以下のとおりです。
  • boolean: BOOLEAN
  • string:VARCHAR(65535)
  • long: BIGINT
  • double: DOUBLE PRECISION
  • timestamp: TIMESTAMP_NTZ(9)
  • json: VARIANT

上記以外を使用したい場合に設定が必要となります。
指定できる型について、詳しくは公式ドキュメントを参照ください。
最大リトライ回数 12 リトライを最大何回まで実行するかを指定します。
リトライ待ち時間 1,000 リトライ時の待ち時間を指定します。
リトライ待ち時間の最大値 1,800,000 リトライ時の待ち時間の最大値を指定します。
デフォルトのタイムゾーン UTC timestamp型のカラムに指定するタイムゾーンを入力します。
スキーマに関わる設定が適用される条件

STEP2出力オプションのカラム設定の内容は、テーブルを新規作成する場合にのみ、適用されます。
具体的には、以下の状態でジョブ実行した際に適用されます。

  • 転送先に対象となるテーブルが存在しない場合
  • 転送モードで全件洗い替え (REPLACE)を選んでいる場合
    • この場合、転送のたびに転送先テーブルのスキーマが更新されるため、カラム設定の内容は都度適用されます。

補足事項

転送モードについて

以下の説明はいずれも、転送先に対象となるテーブルがすでに存在する場合の挙動となります。
転送先に対象となるテーブルが存在しない場合は、いずれのモードにおいてもテーブルを新規作成します。

転送モード スキーマ変更 トランザクション 挙動 補足
追記 (INSERT) No Yes テーブルへの追記を以下の通り行います。
  1. 一時テーブルを作成して、データを投入する
  2. 一時テーブルのデータを対象テーブルにINSERTする
追記 (INSERT DIRECT) No No テーブルの追記を以下の通り行います。
  1. データを直接対象テーブルにINSERTする
  • 追記 (INSERT)モードに比べて処理時間は短くなりますが、トランザクションは担保されません。
  • そのため転送が途中で失敗した場合、途中まで追加された行が対象テーブルに残ることがあります。
  • 全件洗い替え (TRUNCATE INSERT) No Yes テーブルの洗い替えを以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 対象テーブルの実データをDELETEして、一時テーブルのデータを対象テーブルにINSERTする
    全件洗い替え (REPLACE) Yes Yes テーブルの洗い替えを以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 対象テーブルそのものをDROPして、一時テーブル名を対象テーブル名に変更する
  • 既存テーブルのスキーマは削除され、新しいテーブルのものに更新されます。
  • UPSERT (MERGE) No Yes テーブルへのUPSERTを以下の通り行います。
    1. 一時テーブルを作成して、データを投入する
    2. 一時テーブルのデータを対象テーブルにMERGEする
  • 転送データの各行に関して、マージキーの値が対象テーブルの該当列に存在した場合、その行は更新されます。存在しなかった場合、その行は追記されます。
  • マージキーの値に重複があったりNULL値が含まれていたりする場合、正しくUPSERTされません。