転送先 - Snowflake
  • 15 Mar 2024
  • ダーク
    ライト
  • PDF

転送先 - Snowflake

  • ダーク
    ライト
  • PDF

Article Summary

概要

Snowflakeへデータを転送する設定のヘルプページです。

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

troccoの製品サイトでは、お客さまの導入事例を紹介しております。
本ヘルプページとあわせてご覧ください。

設定項目

STEP1 基本設定

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

STEP1 詳細設定

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

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

STEP2 出力オプション

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

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

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

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

    補足事項

    転送モードについて

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

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

  • この記事は役に立ちましたか?