🤖

[Snowflake] Troccoを使ってS3にあるデータをSnowflakeに転送してみた

2023/07/11に公開

S3においてあるデータをSnowflakeにimportするまでの作業をやってみました。

前提

resource status
AWSアカウント 作成済み
S3バケット 作成済み
Snowflakeに転送するCSVファイル S3に保存済み
Snowflakeアカウント 作成済み
S3からimportするデータの保存先Table なし
Trocco フリープランの契約あり

Troccoの設定

Troccoの利用開始直後の画面は以下のようになっています。
S3にあるCSVファイルのデータをSnowflakeへ転送するには以下の設定を行う必要があります。

  1. 接続情報の作成 (S3への接続設定)
  2. 接続情報の作成 (Snowflakeへの接続設定)
  3. 転送設定の作成 (S3のどのファイルを、SnowflakeのどのTableに転送するかを設定)

image.png

接続情報の設定

接続情報の設定は画面左のメニューの接続情報から行います。
image.png

S3の接続情報の設定

表示されているサービス一覧からS3を選択すると以下の画面が表示されます。
この画面で以下を設定します。

項目名 設定内容
名前 S3への接続情報の名前として任意の名前を記載します。S3のバケット名を入れておくとわかりやすいでしょう。今回はテストなので適当な値を入れています。
接続情報 AWSの認証方式を選び必要事項を記入します。今回はIAMユーザでの認証を選択肢、AWSアクセスキーとAWSシークレットアクセスキーを入力しています。IAMロールでの設定も可能なようです。

上記を入力して保存するとS3への接続情報が保存され、設定が完了します。

image.png

image.png

Snowflakeの接続情報の設定

表示されているサービス一覧からSnowflakeを選択すると以下の画面が表示されます。
この画面で以下を設定します。

項目名 設定内容
名前 S3への接続情報の名前として任意の名前を記載します。接続先のSnowflakeのアカウント名や役割が入っていると分かり易いでしょう。
ホスト 今回使用しているSnowflakeはAWS上にあるので、 {account_id}.ap-northeast-1.aws.snowflakecomputing.com を入力します。
ユーザ Snowflakeへのデータの投入に使用するSnowflakeのユーザ名を記入します
認証方式 転送設定ではユーザ・パスワード認証しか使えなさそうなのでそれを使用します
パスワード 上記で記載したSnowflakeユーザのパスワードです
ロール データの投入に使用するロールを設定します。未入力の場合、上記のユーザのデフォルトロールが使用されるようです

image.png

image.png

転送設定

必要な接続情報の設定が完了したので、それを利用し、実際にデータをS3からSnowflakeへ転送するための設定を行います。
左のメニューのデータ転送から行います。

image.png

転送設定の新規作成

新規作成画面で、転送元、転送先の両方を指定します。
今回はS3からSnowflakeへの設定なので添付の様になります。
image.png

転送元の設定

次の画面へ遷移すると、接続情報を選択する欄があるので、ここで先程作成した接続情報を使用します。
S3バケット名の設定も必要です。
image.png

指定したバケット内のどのファイルを転送するかの設定は以下のようにパスプレフィックスと正規表現を組み合わせて指定することができます。
例えば正規表現で [0-9]{4}-[0-9]{2}-[0-9]{2}.csv$ と記載すれば YYYY-MM-DD.csv という表記のファイルだけが転送対象になります。
image.png

転送方法で差分転送を選択すると、前回転送したファイルよりも文字列比較で後に来るファイルが転送対象になるようです。
e.g. 前回取り込んだファイルが 2023-01-01.csv であれば、翌日は 2023-01-02.csv が取り込み対象になる。
image.png

転送先の設定

転送先であるSnofwlakeの設定も同様に先程作成した設定情報を使用します。
image.png

転送先設定では、データをimportする Database, Schema, Tableの情報が必要です。
今回はTableは事前に作成していないので、作成したいTable名を記載すると、その名前のTableが作成されます。

なお、転送モードにはこれだけの種類がありました。
image.png

転送設定の詳細設定

次の画面へ遷移する際に、自動データ設定を実行 or 自動データ設定をスキップの2種類が選択できます。
前者を選択すると、カラム名やデータ型が自動的に判断されるようです。

image.png

今回は自動データ設定をスキップしました。
遷移後の画面では以下のようにデータのプレビューを見ながらカラムの定義やフィルター設定などを行うことができる
image.png
image.png
image.png

転送日時カラム設定は、テーブルに1列追加し、importした時間を記録してくれるようです。
これで転送設定は完了です。

次の画面に進み、実行ボタンをクリックすると設定したとおりにデータ転送が行われます。
どうやら実行するたびにembulkのcontainerが立ち上がるようです。
image.png

これで転送設定と実行が完了しました。
SnowflakeをみるときちんとTableが作成され、データがimportされていました。
image.png

Discussion