CensusでDestinationにSlackを設定してSnowflakeのデータをSyncしてみた
さがらです。
CensusでDestinationにSlackを設定してSnowflakeのデータをSyncしてみたので、とても簡素な内容になりますが本記事で内容をまとめてみます。
SnowflakeをSourceに設定
CensusのSourceにSnowflakeを設定する方法については、下記のブログをご覧ください。
SlackをDestinationに設定
次に、CensusのDestinationにSlackを設定していきます。
左のメニューのDestinations
から、+ Add a Destination
を押します。
Slackを選択します。
Nameを入れたら、AuthorizationのLogin
を押します。
その後、Censusと対象のSlack workspaceを連携してよいかの確認画面が出ますので、Allow
を押します。
するとCensusの画面に戻り接続Testが行われるので、これが無事に終わったら右下のFinish
を押してDestinationの設定は完了となります。
Syncの設定
次に、設定したSourceとDestinationを用いて、Syncの設定をしていきます。
左のSyncs
から、Create a sync
を押します。
まず、Select a Source
から使用するデータを設定します。今回はAny Warehouse Table
で、Snowflake上のテーブルを設定することにします。
次にSelect a Destination
から、SlackのどのObjectに対してSyncを行うか設定します。(これはMessage
のみとなっています。)
Select a Sync Key
は、Sync対象のテーブルのレコード変更を検知できるユニークなカラムを選択します。
Select a Channel ID
は、Slackでメッセージを送りたいチャンネルを指定します。
Set Up Slack Notification
は、送信したいメッセージを記入します。エディター上でSourceのテーブルのカラムを選択するだけで入力できるのはとても楽ですね。また、任意のSlackチャンネルへのリンクを貼ることもできます。
Slackのユーザーの「member ID」を用いて@<取得したmember ID>
と入れると、メンションも可能です。
Should existing data be synced?
では、Backfill All Records
にチェックを入れると既存のレコードすべてが一度Slackに送られ、Skip Current Records
にチェックを入れると今後新規で入ったレコードだけが対象となります。
※今回はBackfill All Records
でやってみます。通常はSkip Current Records
の方がマッチするケースは多いと思います。
Run a Test Sync
では、実際に正しくメッセージが届くかテストすることが出来ます。(1行だけテスト実行できるのが親切だと感じました。)
ここまで設定ができたら、右下のNext
を押します。
最後に、スケジュール実行のタイミングを設定し、Create
を押します。Continuous
に設定すると、約1分おきに新しいレコードがないかチェックして、変更があったらメッセージを送る形を取ることが出来ます。(公式ドキュメントより)
初回Sync
スケジュール実行のタイミングをContinuous
にしていたため、1分ほど経つと自動で初回Syncが動きます。
Should existing data be synced?
では、Backfill All Records
にチェックを入れていたため、Sycn対象のテーブルの全レコード(99件)分メッセージが送られました。
Sync Historyから確認すると、5分間かかっていました。
2回目Sync
スケジュール実行のタイミングをContinuous
にしている状態で、Sync対象のテーブルに対して以下のクエリを実行してみます。
INSERT INTO ORDERS_CLONE (ID, USER_ID, ORDER_DATE, STATUS)
VALUES (101, 201, '2024-10-25', 'completed');
この後、Censusの画面を見るとすぐに検知がされて、Slackにメッセージが送られました。
2024/10/31追記:Continuousにしていると、Snowflakeのウェアハウスをかなり消費します
今回のブログでは「Continuous」でSyncを試したのですが、このまま放置していたら下図のようにXSのウェアハウスでも毎日10~12クレジットを消費していました…
下記のようなクエリがCensusから発行されていました。
キャッシュが効かないクエリがCensusから発行されているようなので、Continuousにする際はご注意ください!
最後に
CensusでDestinationにSlackを設定してSnowflakeのデータをSyncしてみました。
2024年10月25日時点、SlackはCensusのFree Destinationの一つですので、気軽に導入できるのも良いですね!