HightouchでSourceにSnowflakeを設定してみた

2023.06.20

さがらです。

Reverse ETLのサービスであるHightouchでは送信元のデータをSourceとして設定する必要がありますが、このSourceの設定にSnowflakeを設定してみたので、手順をまとめてみます。

参考

Snowflake側の設定

まず、Snowflake側でロール・ウェアハウスなどHightouchでの接続に必要なオブジェクトを定義する必要があります。

  • 必須
    • ロール:HightouchからSnowflakeにクエリを実行する際に使用されるロール。Hightouchで転送させたいデータを保持するデータベース・スキーマへのUSAGE権限とテーブルへのSELECT権限が必須。
    • ウェアハウス:HightouchからSnowflakeにクエリを実行する際に使用されるウェアハウス
    • データベース:Hightouchで転送させたいデータを保持するデータベース
  • 推奨
    • ユーザー:HightouchからSnowflakeに認証を行う際のユーザー
  • Lightning engineを使う場合必須
    • スキーマ:HightouchのCDC処理で取得したデータを格納するスキーマ
    • ロールへの権限追加:上述のCDC処理で取得したデータを格納するスキーマへの書き込み権限(OWNERSHIP権限を付与するのが早いです)

Hightouchのドキュメントでは、上記の内容でオブジェクトを定義するためのクエリも記述されていますので、参考にしてみてください。

Hightouch側の設定

続いて、HightouchでのSourceの設定をしていきます。

画面左のSourcesを押してから、画面が切り替わったらAdd sourceを押します。

いろんなサービスが表示されますが、Snowflakeを選択します。

より詳細なSnowflakeの接続情報の入力画面が出てきます。以下のように入力します。

  • Account identifier
    • 設定するSnowflakeアカウントの`https://ACCOUNT_IDENTIFIER.snowflakecomputing.com`の形式のURLにおいて、`ACCOUNT_IDENTIFIER`を入力
    • 具体例:xy12345.ap-northeast-1.aws
  • Warehouse
    • Snowflake側の設定で準備した、ウェアハウスの名称を入力
  • Database
    • Snowflake側の設定で準備した、Hightouchで転送させたいデータを持つデータベースの名称を入力

Choose your sync engineでは、100万行を超えるデータをSyncさせたい場合はLightning sync engineを選択し、少量のデータの場合はStandard sync engineを選択しましょう。

※この使い分けは、公式Docにも「Hightouch recommends using the Lightning sync engine when syncing more than one million rows of data.」と記載があります。

Snowflake側の設定でも少し触れましたが、Lightning sync engineを選択する場合は、CDC処理で取得したデータを格納するスキーマと、そのスキーマへの書き込み権限を使用するロールに付与するのを忘れないようにしましょう。

続いて、使用するユーザー・ロール・認証情報について入力します。

入力が終わったら、右下のContinueを押します。

すると、接続テストが行われ、問題なければTesting successfulと表示されます。

最後に、Hightouch上で区別するためのSourceの名称を入力し、右下のFinishを押します。これでSnowflakeをSouceとして設定する手順は完了です!

最後に

Hightouchで送信元のデータとなるSourceにSnowflakeを設定してみました。手順はそれほど難しくないと思います!

あとは、データの送信先となるDestinationsを設定して、Snowflake上のデータを外部のアプリケーションでも活用していきましょう!