---
articleId: f91b9132-8044-4107-a48f-c38cf6ed772c
slug: data-destination-snowflake
title: 転送先 - Snowflake
parentCategoryId: 03f04962-e96f-49cb-9c01-d84d025cc41a
languageCode: ja
---
## 概要
Snowflakeへデータを転送する設定のDocsです。
:::(Info) (SnowflakeとTROCCOの活用事例について)
TROCCOの製品サイトでは、お客さまの[導入事例](https://primenumber.com/cases/topic/all?industry=&tag=snowflake)を紹介しております。
本Docsとあわせてご覧ください。
:::
## 設定項目
### STEP1 基本設定
| 項目名 | 必須 | デフォルト値 | 内容 |
| --- | --- | --- | --- |
| Snowflake接続情報 | Yes | - | あらかじめ登録してある[Snowflakeの接続情報](/docs/connection-configuration-snowflake)から、今回の転送設定に必要な権限を持つものを選択します。 |
| ウェアハウス | Yes | - | 転送時のクエリ実行環境として用いるウェアハウスを選択します。 |
| データベース | Yes | - | 転送先のデータベース名を選択します。 |
| スキーマ | Yes | - | 転送先のスキーマ名を選択します。 |
| テーブル | Yes | - | 転送先のテーブル名を入力します。
対象テーブルが転送先のデータベース・スキーマ内に存在しない場合は、テーブルが自動的に作成されます。 |
| 転送モード | Yes | 追記 (`INSERT`) | 転送モードを選択します。
詳しくは、後述の[転送モードについて](/docs/data-destination-snowflake#転送モードについて)を参照ください。 |
| マージキー | 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`
上記以外を使用したい場合に設定が必要となります。
指定できる型について、詳しくは[公式ドキュメント](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types.html)を参照ください。 |
| データ内の改行・タブ文字を保持する | 無効 | データ内に含まれる改行やタブ文字を保持するかどうかを選択できます。
改行やタブ文字を保持したい場合は、設定を有効にしてください。 |
| 最大リトライ回数 | 12 | リトライを最大何回まで実行するかを指定します。 |
| リトライ待ち時間 | 1,000 | リトライ時の待ち時間を指定します。 |
| リトライ待ち時間の最大値 | 1,800,000 | リトライ時の待ち時間の最大値を指定します。 |
| デフォルトのタイムゾーン | UTC | `timestamp`型のカラムに指定するタイムゾーンを入力します。 |
:::(Info) (スキーマに関わる設定が適用される条件)
STEP2出力オプションの**カラム設定**の内容は、**テーブルを新規作成する**場合にのみ、適用されます。
具体的には、以下の状態でジョブ実行した際に適用されます。
- 転送先に対象となるテーブルが存在しない場合
- 転送モードで全件洗い替え (`REPLACE`)を選んでいる場合
- この場合、転送のたびに転送先テーブルのスキーマが更新されるため、カラム設定の内容は都度適用されます。
:::
## 補足事項
### 転送モードについて
以下の説明はいずれも、**転送先に対象となるテーブルがすでに存在する場合**の挙動となります。
転送先に対象となるテーブルが存在しない場合は、いずれのモードにおいても**テーブルを新規作成**します。
| 転送モード | スキーマ変更 | トランザクション | 挙動 | 補足 |
|----|----|----|----|----|
| 追記 (`INSERT`) | No | Yes | テーブルへの**追記**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 一時テーブルのデータを対象テーブルに`INSERT`する
| |
| 追記 (`INSERT DIRECT`) | No | **No** | テーブルの**追記**を以下の通り行います。- データを直接対象テーブルに`INSERT`する
| 追記 (`INSERT`)モードに比べて処理時間は短くなりますが、トランザクションは担保されません。そのため転送が途中で失敗した場合、途中まで追加された行が対象テーブルに残ることがあります。 |
| 全件洗い替え (`TRUNCATE INSERT`) | No | Yes | テーブルの**洗い替え**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 対象テーブルの実データを`DELETE`して、一時テーブルのデータを対象テーブルに`INSERT`する
| |
| 全件洗い替え (`REPLACE`) | **Yes** | Yes | テーブルの**洗い替え**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 対象テーブルそのものを`DROP`して、一時テーブル名を対象テーブル名に変更する
| 既存テーブルのスキーマは削除され、新しいテーブルのものに更新されます。 |
| `UPSERT (MERGE)` | No | Yes | テーブルへの**UPSERT**を以下の通り行います。- 一時テーブルを作成して、データを投入する
- 一時テーブルのデータを対象テーブルに`MERGE`する
| 転送データの各行に関して、マージキーの値が対象テーブルの該当列に存在した場合、その行は更新されます。存在しなかった場合、その行は追記されます。マージキーの値に重複があったりNULL値が含まれていたりする場合、正しく`UPSERT`されません。 |