SnowflakeのTimeTravel機能を使って履歴データを可視化してみた。
2023.10.31
2024.06.19
こんにちは!データマーケティングチームです。
皆さん、SnowflakeのTimeTravel機能をご存じでしょうか?
この機能はSnowflakeのオブジェクト(スキーマやテーブルなど)のデータを指定期間保持し、更新されたテーブルに対して任意の特定時点のデータを取り出すことが可能です。
利用用途としては、削除されたテーブルなどのオブジェクトデータの復元や過去データの複製など、バックアップの側面が多いかと思いますが、今回は過去のデータを取り出してTableauで可視化する方法をご紹介します。
■STEP1:Snowflakeでテーブルを作成
今回は、Salesforceの商談オブジェクトを模したダミーデータにおけるフェーズ履歴の可視化を実施していきます。
まずは、Snowflake上にデータを保持するテーブルを作成します。サンプルではテーブルを単純にするために、ID、作成日、商談名、フェーズ及び金額の5つの項目のみで構成しております。
create or replace table opportunity (
id varchar,
created_at timestamp_ntz,
name varchar,
stage_name varchar,
amount number
)
DATA_RETENTION_TIME_IN_DAYS = 14;
ここで重要なのが、オプションパラメータであるDATA_RETENTION_TIME_IN_DAYSの値となります。この値は、TimeTravel機能を使うことのできる期間(日数)を示します。Snowflakeのエディションによって指定できる日数の上限が異なり、Standard Editionの場合は最大1日、Enterprise Edition以上では最大90日まで設定することが可能です(サンプルコードでは14日分のデータを保持する設定としております)。なお、デフォルトでは1日で設定されております。
もし、既にあるテーブルでTimeTravel機能を使える期間を変更したい場合は、ALTERコマンドにて設定することが可能です。その際、コマンドを実行後に設定が反映されるため、例えば設定値を1日から14日に変更した場合、コマンド実行時点では14日分のバックアップはされていないので、注意が必要です。
ALTER TABLE <テーブル名> SET DATA_RETENTION_TIME_IN_DAYS = <指定期間>;
■STEP2:可視化用テーブルを作成
上記のテーブルを作成し、データの連携が完了したら、Tableauでの可視化用にデータを作成していきます。
まずは、実際にデータの取得ができるかSnowflake上で確認してみましょう。上記テーブルに1週間以上のデータが保持されていると仮定し、同IDの1週間前のフェーズを取得します。
with B as (
select
ID,
stage_name as before_stage -- 過去のフェーズをBEFORE_STAGEで定義
from opportunity
at (offset => -3600*24*7) -- 取得したい時点の秒数を入力(今回は7日前のため、7日前の秒数を指定)
)
select
T.*,
B.before_stage
from opportunity as T
left join B
on T.ID = B.ID
;
すると、現在のフェーズと過去のフェーズが取得できていることが確認できました。
上記の結果をデータセットとしてTableauで可視化すると、以下のように現時点でのフェーズ別商談件数と1週間前のフェーズ別商談件数を表示することが可能となります。
■おわりに
いかがだったでしょうか。
今回は、SnowflakeのTimeTravel機能を活用して、Tableauで過去データの可視化をする方法をご紹介しました。
Salesforceをデータソースとしたときの可視化をご支援する上で、過去のステータスとの比較をしたいとのご要望を受けることが多いのですが、Snowflakeにデータを集めることによって上記のように実現することが可能です。また、その他のデータもSnowflake上に集約すれば、他のシステムからのデータと掛け合わせた高度な分析が可能になるかと思います。
弊社データマーケティングチームでは、Snowflakeの構築からTableauなどのBIツールでの可視化まで、一貫してのご支援が可能です。データ活用に対してお困りごとがございましたら、お気軽にお問い合わせください。
✔BIツールの導入を検討している、活用に困っている。
✔Account Engagement を使用しているが、それぞれの機能をうまく活用できていない。
上記のようなお悩みをお持ちの方は、ぜひ!お問い合わせください。
\お困り事はお気軽にご相談ください/