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

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

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

Table of Contents

  1. Time Travel
  2. Zero Copy Cloning
  3. まとめ

Time Travel 

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

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

image9.png

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

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

Sample-data-from-GA.png

image5.png

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

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

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

Snowflake-source1.png

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



Snowflake-source1-step3.png

Offset

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

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

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

Snowflake-source2.png

これは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ドキュメントを参照してください。

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

Clone.png


Snowflake-dest1.png

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

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

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

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

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

Clone+Time-Travel.png

image1.png

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

Integrate Your Data Today!

Try Xplenty free for 7 days. No credit card required.

Octopus

まとめ

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