Snowflake

TROCCO入門

こんにちは、エクスチュアの照沼です。

みなさん、ELTツールとはそもそもどんなツールで、どんな用途で使用するものかご存じでしょうか?
ELTはExtract, Load, Transformの略でさまざまなデータソースからデータを収集し、分析に適した形に加工して、データベースやデータウェアハウスに送ることができるツールになります。
今回はELTツールのTROCCOについて紹介したいと思います。
私はELTツールを触るのが初めてなので最初にELTツールの中でTROCCOが最も優れている部分をChatGPTに聞いてみました。


回答

1. 🗾 日本市場に特化した設計

  • Troccoは日本発のツールであり、日本の企業文化・業務フロー・ニーズに寄り添った設計がされています。
  • サポートも日本語対応でスムーズ。ドキュメントも日本語中心で、意思疎通がしやすい。
  • 契約や導入面での柔軟性も、日本企業向けに整えられています。

2. 🧑‍💼 ノーコードで非エンジニアでも使えるUI/UX

  • TroccoのUIは非常にシンプルで直感的。「SQLが書けない」「Pythonを使えない」人でも扱える。
  • データエンジニアがいなくても、マーケターやアナリストが自分でデータを扱える環境を構築可能。

3. 🔄 SaaS系データ連携のしやすさ(特にマーケティング系)

  • Google Ads、Facebook広告、Salesforce、HubSpotなど、国内企業がよく使うSaaSとの接続が豊富
  • 他の汎用ETLツールと比べて、設定も日本語ガイド付きで簡単&トラブルも少ない。

4. 🛠️ BigQueryやRedshiftとの連携が簡単

  • データウェアハウス(DWH)連携が非常にスムーズ。特にBigQueryとの親和性が高い
  • スキーマの自動推論やテーブル作成補助など、DWH初心者にも優しい設計

5. ⚙️ ワークフロー・ジョブスケジューリングの自動化が簡単

  • データ取得→変換→ロードの流れをGUIで組めて、定期実行・通知設定なども直感的に操作可能
  • ワークフローの見える化もされているので、エラー対応や運用負荷も低い。

この点を踏まえて触っていきたいと思います。

今回、TROCCOを用いて行う作業は

  1. Google Cloud StorageのデータをSnowflakeへ転送
  2. 転送したデータに対してデータマートを定義
  3. 1,2の作業をワークフローで設定し、完了したらslackで通知

になります。

0.接続準備

まずこれらの作業を行うためにデータソースと接続していきます。
接続種類としては下記のようなものがあり、計87個あります。

今回はこの中のGoogle Cloud StorageとSnowflakeに接続していきます。

  •  Google Cloud Storageとの接続

Google Cloud Storageを選択する下の画面になるので、必須情報を入力していきます。

名前自由
JSON Key項目の下にドキュメントを読めば、どのように取得すればよいかわかりやすくまとまってます!
サービスアカウントEmailGoogle Cloud Platform内の使いたいサービスアカウントのEmailを
コピペすればOK!
プロジェクトIDクリックすると候補が表示されるので選択
※以下、このように入力部分の下に読み込むがある場合はこの部分をクリックした後に入力部分をクリックすると候補が表示れる。表示されていない場合は接続がうまくいっていない可能性が高い

  •  Snowflakeとの接続

Snowflakeを選択すると以下の画面になるので必須情報を入力していきます。

名前自由
ホストの情報下記のView account detailsを押した先にあるAccount/Server URLの項目
を入力します。
詳しくはTROCCOの画面の右上にある「この項目に関するヘルプ」を押すと書いて
あります。
Snowflakeの画面付きの説明なのでとても親切!
ユーザーSnowflakeログイン時のユーザ名
認証方式キーペア認証のやり方の詳細は、接続情報設定画面右上の「この項目に関するヘルプ」の中に書いてあります。
ロールロールは必須になっていませんがsnowflake内の権限でエラーができることがあるので  
Snowflake側で調べて入力することをお勧めします。

ここまでできれば、TROCCOを通じてGoogle Cloud StorageとSnowflake間のデータ転送をするための準備が完了した状態となりました!

◎番外編 ~キーペア認証の設定方法について~

Snowflakeとの接続はキーペア認証が推奨されています。
TROCCO公式ドキュメントに設定マニュアルがあるため、こちらを参考に接続設定をしていきます。
https://documents.trocco.io/docs/connection-configuration-snowflake

①秘密鍵・公開鍵の生成と、TROCCOへの秘密鍵の設定
自身のローカル環境で、以下コマンドで秘密鍵を生成し、TROCCOのSnowflake接続情報の秘密鍵欄に入力します。
入力するコマンドはlinux環境でないと実行できないため、windowsの方は注意が必要です!私はwsl環境で実行しました。

$ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt

続いて以下コマンドで公開鍵を生成します。こちらは後ほどSnowflakeのコマンドで使用します。

$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

②公開鍵を整形
以下コマンドで、改行と不要な箇所の除去を行います。

$ cat rsa_key.pub | \
tr -d "\n" | \
sed "s/-----BEGIN PUBLIC KEY-----//g" | \
sed "s/-----END PUBLIC KEY-----//g"

③Snowflakeへの公開鍵の設定
作成・整形した公開鍵を踏まえて、Snowflake側で以下クエリを実行します。
USERNAMEはSnowflakeのユーザー名、PUBLIC_KEYは②で加工した値をコピーして貼り付けます。

ALTER USER {USERNAME} SET RSA_PUBLIC_KEY='{PUBLIC_KEY}'

④公開鍵フィンガープリントの一致確認
Snowflakeに登録された公開鍵が、秘密鍵と正しく対応しているかを確認するために以下の手順でフィンガープリントを照合します。

1. 以下のSQLをSnowflakeで実行し、ユーザーに設定された公開鍵のフィンガープリント(SHA256)を取得

DESC USER {USERNAME};SELECT SUBSTR((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "property" = 'RSA_PUBLIC_KEY_FP'), LEN('SHA256:') + 1);

2. ローカルで使用している秘密鍵ファイル(例:rsa_key.pub)が正しいか確認するため、以下のコマンドを実行してフィンガープリントを取得:

openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64

3. 2で得られたフィンガープリントと、Snowflakeから取得した値が完全に一致していれば照合完了

以上がキーペア認証の設定方法でした!

それでは本題の作業に移っていきたいと思います!

1.Google Cloud StorageのデータをSnowflakeへ転送

先ほど作成したGoogle Cloud StorageのデータをSnowflakeに転送していきたいと思います。
データ転送の転送設定>新規転送設定作成
をクリックすると、以下のような画面になります。

画面をクリックし、転送元と転送先を選択します。
以下の画像のようになるため、必須情報を入力していきます。

名前自由
Google Cloud Storage接続情報Google Cloud Storageの接続時に設定した名前を選択
パケットパケットをクリックすれば候補が出てくるので選択
パスプレフィックスパケット内にある転送したいファイルのgsutil URLのパケット名以下を入力
Snowflake接続情報Snowflake接続時に設定した名前を選択
ウェアハウスクリックすると候補が出てくるので選択
データベースクリックすると候補が出てくるので選択
スキーマクリックすると候補が出てくるので選択
※ウェアハウス、データベース、スキーマのSnowflake上での権限が付与されていないとエラーが出るので要確認!!
テーブルクリックすると候補が出てくるので選択、または候補にないテーブル名を指定すれば、自動でテーブル生成

ここまで入力できたら、
次のステップ > 決定して次に進む > 確認画面へ > 保存して適用 > 実行
をクリックすれば完了です!

2.Snowflakeでのデータマート定義

次にSnowflakeでのデータマート定義を行っていこうと思います。 
データマートのデータマート定義 > 新規データマート定義作成 > Snowflake
をクリックすると以下の画面になるので、必須情報を入力していきます!

データマート定義名自由
Snowflake接続情報先ほど接続したときの名前を入力
クエリ実行モードテーブルの転送を行いたい場合はテータ転送モード、
データの加工をしたい場合は自由記述モードを選択
クエリ変換したい形になるようsql文を入力
※SnowflakeのFROM句は「データベース名.スキーマ名.テーブル名」
になるようにする
出力先データセットクリックすると候補が出てくるので選択
出力先テーブルクリックすると候補が出てくるので選択、
または候補にないテーブル名を指定すれば自動でテーブル生成
書き込みモード追記か全件洗い替えを選択できる
ジョブの並列実行任意の方を選択

ここまで入力が終わったら、
確認画面へ > 適用 > シンク > シンクジョブを実行
をクリックすれば実行完了です!

3.ワークフローの実行

最後にワークフローを使っていきます。
ワークフローでは、
Google Cloud StorageからSnowflakeへのデータの転送⇒Snowflakeでのデータの加工⇒slack通知
という流れで、それぞれコンポーネントとしてつなげていきたいと思います。

左側のメニューから、
ワークフロー > 新規ワークフローの作成
をクリックします。すると以下の画面が表示されるため、ワークフロー名だけ自由に記載し、他は変更せず保存をクリックします。
※タイムアウト設定やリトライ設定をしたい場合は変更してください

すると以下のワークフロー設定画面になり、タスクの+部分をクリックすることでタスクをつなげていくことができます。
今回は「TROCCO転送ジョブ」、「TROCCOデータマートシンク」、「Slack通知」を使っていきます。

・TROCCO転送ジョブ
まず、TROCCO転送ジョブをクリックすると以下の画面になるため、データ転送で設定した名前の転送ジョブを選択します。

TROCCOデータマートシンク
TROCCOデータマートシンクもTROCCO転送ジョブと同様に、既にデータマート定義で設定したものが表示されるので選択します。

slack通知
slack通知を設定します。
単なる文字列だけでなく、メンションやtroccoで定義された変数を通知に含めることができます。

名前自由
通知先登録しておけばクリックすれば候補が表示されるので選択

これらを設定してワークフローにつなげると、以下のようなワークフローになりました。

ここまで設定できれば、
保存 > 実行
をして完了です。
実際にエラーなく実行できると下記の画像のような通知がslackの指定したチャンネルに通知されます!

以上、troccoの一通りの使い方でした。

まとめ

最後に、ChatCPTに聞いたTROCCOの強みをふまえて触ってみた感想をまとめていきたいと思います。
日本市場に特化した設計
日本市場に特化しているかは他と比較ができないのでよくわからなかったですが、ヘルプの説明など 
は画像付きであったり、わかりやすい設計になっていたと思います

・ノーコードで非エンジニアでも使えるUI/UX
転送を行うだけであればSELECT句とFROM句が書ければできるのでほとんどコードを書く必要が
なかったです。
しかし、FROM句でテーブルを指定する書き方は各DWHによって変わるので注意が必要です!

SaaS系データ連携のしやすさ(特にマーケティング系)
Salesforceで接続を試してみたところ、特に必要情報やコードなどはなく、名前の入力とアカウントを認証するをクリックすればすぐできたのでとても楽にできました!

BigQueryやRedshiftとの連携が簡単
Snowflakeとの連携は少し難しかったですが、GCPとの連携はとても簡単ですぐできました。
また、DWHごとに接続のヘルプが書いてあったのでとても親切に感じました!

ワークフロー・ジョブスケジューリングの自動化が簡単
ワークフローのデータチェックに関しては一行一列しかできないので自由度は低いですが、転送やデータマートの定義、slackなどの接続が簡単にできるため使いやすいと思いました!
スケジュールに関しては今日紹介したデータマートの生成、データの転送、ワークフローの実行全 
てに設定でき、
実行スケジュール > スケジュールの追加
を押すと以下の画面で細かく設定できるので、非常に便利です!


結論、個人的には初めて触る人にも使いやすいように工夫されていると感じました!
みなさんもぜひ使ってみてください!!

他にもdbt連携の機能もあるので次回触ってみようと思います!!!

コンポーザブルCDPにおけるSnowflakeのマルチモーダルLLMの期待前のページ

Snowflake無料トライアルの始め方次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Data Clean Room

    忘年会シーズンに「DCRごっこ」のご提案

    こんにちは、喜田です。本投稿は Snowflake Advent C…

  2. Python

    Streamlit in Snowflakeによるダッシュボード作成

    こんにちは、エクスチュアの石原です。前回に引き続き、Stre…

  3. Snowflake

    Snowflake無料トライアルの始め方

    こんにちは、中村です。意外にも弊社ブログで記事がなかったので、今回は…

  4. Cortex

    #ai-datacloud勉強会でマルチモーダルに触れた日

    こんにちは、喜田です。SnowVillageのSlackワー…

  5. Data Clean Room

    SnowflakeのData Clean Roomを基礎から一番詳しく解説(3回目)

    こんにちは、喜田です。この記事では、複雑なSnowflake…

  6. Data Clean Room

    PostgreSQLによるデータクリーンルームの可能性について

    こんにちは、喜田です。本投稿は PostgreSQL Adv…

カテゴリ
最近の記事
  1. dbt Projects on Snowflake使ってみた…
  2. Cortex Analystを使ってみた
  3. SnowflakeのAI_SQLと再帰CTEで遊ぶ(Snow…
  4. dbt Fusion使ってみた
  5. Manusを使ってみたうえでManusに感想ブログを書かせて…
  1. ObservePoint

    Webサイトのプライバシー検証(4/6):CMPはすべての可能な同意プロファイル…
  2. Tableau

    Tableau Desktop 2020.1の新機能を全て解説してみた。
  3. Adobe Audience Manager

    Adobe Audience Manager: REST APIを使ってTrai…
  4. ブログ

    ダッシュボードに使うべき10のグラフ①
  5. ブログ

    東南アジアのデジタルマーケティング
PAGE TOP