
CensusでDestinationにSlackを設定してSnowflakeのデータをSyncしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
さがらです。
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の一つですので、気軽に導入できるのも良いですね!







