はじめに
Growth&SuccessでStailerのデータウェアハウスの開発をしています@kazk1018です。この記事では、先日社内で開催した「Data Vault勉強会」を基にData Vaultについて簡単に紹介するとともに、10Xでどのように利用しているかを紹介したいと思います!
Data Vaultについて
「Data Vault」はエンタープライズデータウェアハウス(EDW)を構築するためのモデリング手法です。最初に提案されたのは2000年なので20年以上の歴史があり、2013年には「Data Vault 2.0」が提案され、非構造データへの対応やより実践的なプラクティスなどが追加されました。*1
Data Vaultではデータウェアハウスを構築する全体の流れから、各レイヤーで用いるスキーマの設計まで幅広い範囲のアプローチや手法が提案されています。中でもHub、Link、Satelliteという3つのデータモデルから構成されるRaw VaultやBusiness Vaultは非常に柔軟性の高い設計を実現させています。
ここではData Vaultの詳細については割愛し、次にData Vaultの特徴を説明した後、10Xでどのように利用しているかについて紹介したいと思います。簡単な概要を知りたいという方は以下の資料を参考にしてください。
Data Vaultの特徴
Data Vaultには次のような利点があると言われています。
- Agileなデータウェアハウスの構築が可能である
- Scalabilityが高い
- 複数のデータソースに対応することが簡単に行える
- 生データから履歴ありで保存されていること
- 監査性がある
特にこれまでのデータウェアハウスのモデリング手法である3NFやDimensional Modeling*2と比べて、柔軟性が高く、両者の良いところをうまく取り入れているという印象があります。Dimensional ModelingはData Vaultを理解する上でも、実際に利用する上でも有益な知識が多いので、先に学んでおくことをおすすめします。
上記で紹介した多くの利点もありますが、以下のような欠点もあります。
- 従来のモデリング手法よりもJOINが多い
- Data Vaultのスキーマは分析に向いていない
特に二つ目については、Data Vaultを紹介している本やWebページにはDimensional Modelingで利用されるFactやDimensionのテーブルを最終的に作成しているものがほとんどです。10XでもデータウェアハウスからFactやDimensionを作成して利用者に公開する形を取っています。
Why Data Vault?
Stailerのデータウェアハウスを構築するに当たって特に課題となりそうだった点は次の通りです。
ビジネスの変化や検証を進めるためにビジネスロジックやシステムの仕様変更に対してどのように対応するか
我々はスタートアップ企業であり、Stailerもこれから多方面に事業を拡大していく中でデータウェアハウスにも多くの変更が求められることが想定されます。Data Vaultの特徴であるAgileにデータウェアハウスの構築を進められる、かつScalabilityがあることはこのような状況に非常に向いているといえます。
外部のシステムから受け取ったデータをダッシュボードなどに利用する際にどのようにして追加するか
小売事業者側のシステムはサプライチェーン全体を複数のシステムで運用している傾向にあり、事業者毎にも異なるシステムを利用しているため、複数のソースシステムからのデータの取り込みを想定する必要がありました。一般的に既存のデータウェアハウスに新たなデータソースを追加することは既存のデータに対しても変更を加える必要が出てしまうことが問題となりますが、Data Vaultではこのような処理にも柔軟に対応することできます。
dbtとBigQueryによる実装
10XではデータウェアハウスとしてBigQueryを利用しており、データレイクからデータマートのトランスフォーメーションをdbtを用いて構築しています。詳しい内容は以下のスライドやリンクを参考にしてください。
また、Data Vaultを開発する上での特徴として、スキーマの仕様が標準化されており、開発時にテンプレートSQLを用いることで効率化できるという点があります。この特徴をdbtにうまく取り込んでいるのがdbtvaultというdbtのpackageです。このツールを用いることでHub、Link、SatelliteやBusiness Vaultのテーブルを簡単に作成することが可能になります。
Data Vault勉強会
Data Vaultの欠点として、多くの概念が体系的にまとまっている分、開発や利用する際に多くの知識を学ぶ必要があるのですが、日本語の情報が不足していることは否めません。そこで少しでもData Vaultについて社内での理解を深めてもらうために勉強会を開催しました。データウェアハウスという本来データの利用者が触れる機会の少ない部分であるにも関わらず、日頃データ分析を行っている人からアプリ開発をしているエンジニア、BizDevの方まで多くの方に参加いただけました。
さいごに
この記事では、DWHを構築するモデリング手法である「Data Vault」を紹介し、データの民主化として社内向けに勉強会を開催した話を書きました。
今回紹介した「Data Vault」を利用したDWHの構築後は、データ利用者向けのデータマートを構築したり、データカタログを整備したり、更に多くのデータを取り込めるようなデータパイプラインの構築を進める予定です。
最後に10Xではデータウェアハウスを構築したり、データの民主化を促進するアナリティクスエンジニアを募集しています!
ご興味のある方はぜひご応募お待ちしております!
*1:Building a Scalable Data Warehouse with Data Vault 2.0
*2:https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/