クラウドのエラスティックデータウェアハウスであるSnowflakeには、Virtual Warehouse、Time Travel、Zero Copy cloningSecure ViewUndropなど、いくつかのエキサイティングな機能があります。この提供を通じて、Snowflakeはデータウェアハウスができることを再定義し、再発明しました。この記事では、Integrate.ioの中から、これらのうちの2つ、Time Travel Zero Copy Cloningを探っていきます。 

Snowflakeのアーキテクチャの詳細については、こちらを参考にしてください。 

ネイティブインテグレーションについて、ここではIntegrate.ioからSnowflakeに接続する方法をご紹介します。

Time Travel 

Time Travelは、定義された期間内の任意の時点で履歴データにアクセスすることができます。デフォルトでは、『Time Travelの理解と使用』のSnowflakeドキュメントに記載されているように、最大保持期間は1日(つまり1つの24時間)です。Snowflake Enterprise Edition(およびそれ以上)では、このデフォルト値は90日までの任意の値に設定することができます。

簡単なデモンストレーションとして、Google AnalyticsコネクションからSnowflakeに1週間分のデータをインクリメンタルロードする、デイリーの定期的なデータパイプラインのサンプルを以下に示します。

thumbnail image

The table GA_USERS in Snowflake shows the current data (T2 from the image below): 

SnowflakeのGA_USERSというテーブルには、現在のデータ(下の画像のT2)が表示されています。 

thumbnail image

thumbnail image

T2 (現在の日)でT0 (昨日)のテーブルにタイムトラベルする必要があるとしましょう。これは、単一のクエリで簡単に行うことができます。

Integrate.ioから、Snowflakeテーブル(SnowflakeへはDBソースコンポーネントを介してアクセス可能です)からのデータを、クエリを使って別のパイプラインでソースにすることができます。

select * from GA_USERS at(timestamp => '2020-09-21 18:18:59.769 -0700'::timestamp)

thumbnail image

これは、20200921までの日付のレコードが返されます。



thumbnail image

Offset

Time-Travel機能を使用する際のもう一つのオプションは「オフセット」です。

T2からT1にタイムトラベルするには(例えばT2の60分前にタイムトラベルする)、現在から時間をオフセットしてデータを取得します。上記のパイプラインと同様に、Snowflake(DBソースコンポーネントからアクセス可能)からデータを取得し、クエリを実行してみましょう。

select * from GA_USERS at(offset => -60*60);  

thumbnail image

これは60分前のテーブル(3つのレコードが削除されていた)からデータを取得し、表示します。

Data_retention_time_in_days

上記のように、標準の保持期間は1日で、すべてのSnowflakeアカウントで自動的に有効になります。DATA_RETENTION_TIME_IN_DAYS は、Snowflakeアカウントのデフォルトの保持期間を設定または制御するために、ACCOUNTADMINロールを持つユーザーが使用できるオブジェクトパラメータです。これについての詳細は、こちらを参照してください。

タイムトラベル機能は、以下のような強力なツールです。

  1. テーブル上の希望の状態からピックアップして処理する。
  2. 過去のデータを処理して、データ上の偶発的な包含や削除を補う。 

Zero Copy Cloning

最も強力なSnowflake機能の1つとして知られているZero Copy Cloningは、データを物理的にコピーすることなく、データベースを簡単にクローンしてテストする方法を提供します。詳細については、Snowflakeドキュメントを参照してください。

以前のデータ処理をさらに進めたIntegrate.ioから、Prodデータベースのクローンを作成することができます。

thumbnail image


thumbnail image

Pre-action SQLコマンドとしてCREATE DATABASE DEV CLONE PROD;を使用すると、GA_USERSテーブルを持つデータベースのクローンであるDEVが作成されます。

(注意: データベースを作成するにはSYSADMIN権限が必要です)

あるいは、CREATE OR REPLACE TABLE GA_USERS_clone CLONE GA_USERS;でテーブルをクローンすることもできます。

これは、Trunctateを行う前にスナップショットを取得し、これを使用してインクリメンタルロードを比較するのに最適な方法でしょう。

プロセスをさらに一歩進めて、Integrate.io Snowflakeデスティネーション上でTime-Travel + Cloneを組み合わせて、テストDB上のテーブルの履歴スナップショットを取得し(ポストアクションSQL)、一方でDev上でクローンを作成します(Pre-action SQL)。

thumbnail image

thumbnail image

これにより、データ自体を複製することなくテーブルの複数のコピーが作成されます。また、実際にデータを複製するために追加のコストと時間をかけずに、複数のユーザーグループで使用できるようにデータを素早く作成する機能も提供しています。

まとめ

Zero copy cloningと Time Travel は、データウェアハウスをシンプルにしつつ機敏さを保つ、真に注目すべき機能です。これらの機能やその他の機能は、Integrate.ioの中から活用することができます。SnowflakeのIntegrate.ioとのネイティブ統合の詳細について確認したい方は、オンラインデモを予約してください。