/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2023/03/11 読んだ記事まとめ(Snowflake Streams on Views の正式版公開, Data Vault on Snowflake, Modern Data Stack)

今の業務柄いつも Snowflake の記事が多めですが、実務で使えそうな機能がどんどん登場していたり、データウェアハウスに特化しているのでユーザ目線でどう使ったら良いかという情報も集めやすくて、面白い記事が多いです。今日は新機能1つと Data Vault 2.0 を Snowflake 上で構築するための記事です。

Snowflake / Streams on Views GA

Snowflake 3月の更新に、Streams on Views という機能が正式版になったと記載がありました。

この機能は Snowflake のテーブルではなくビューに対して変更履歴を追跡し(Change Data Capture, CDC)、ストリームを構築できるというものです。ただし元となるデータソースは Snowflake のネイティブテーブルである必要があり、その他にもマテリアライズドビューには適用できないなど制約も多いです。

特に GROUP BY を使って集約している場合は適用できません。集計粒度を変えないような、フィルタリングやクレンジング、名寄せなどを行うビューなら使いやすそうだなと感じました。

Introduction to Streams | Snowflake Documentation

この機能を有効にするには、ビュー作成時か ALTER VIEW を使って、CHANGE_TRACKINGTRUE に設定します:

CREATE SECURE VIEW v CHANGE_TRACKING = TRUE AS SELECT col1, col2 FROM t;
ALTER VIEW v2 SET CHANGE_TRACKING = TRUE;

Managing Streams | Snowflake Documentation

Data Vault on Snowflake (オフィシャルブログより)

Snowflake のシニアソリューションアーキテクト Patrick Cuba 氏により、Snowflake 公式ブログに Data Vault 2.0 を Snowflake 上で構築するためのノウハウが公開されています。全9本立てで記事1つ1つのボリュームもたっぷりです:

www.snowflake.com

1本目の記事ではサテライトテーブルの End Date の扱い方について紹介されています。Data Vault 2.0 では新しい属性データが来た場合に、古いレコードの End Date を更新して新しいレコードを追加しますが、Update 処理にかかるコストが高いことと、LEAD ウィンドウ関数を使うことで後から End Date の計算が可能なため、End Date ではなく Start Date だけを記録して追記していくだけで十分なようです。Snowflake のマイクロパーティショニングによって Start Date とハッシュキーによる自動クラスタリングが行われるため、明示的なクラスタリングキーの指定も必要ありません。

2本目の記事は SnowSight のダッシュボード機能を利用して、Data Vault のデータ検証レポートを作成する例が紹介されています。

3本目の記事は PIT テーブルの必要性と、実際に速度検証した結果が共有されています。愚直に Hub, Satellite をジョインすると8時間以上掛かっているクエリが、PIT を使うと20秒と劇的に速度改善することが紹介されています。

概念の説明だけでなく、Snowflake のどういった機能を利用するとよいかが丁寧に説明されていて、文量が多いですが参考になります。Snowflake で Data Vault 2.0 によるデータウェアハウスを構築したい場合の指南になりそうです。まだ残り6本残っているので、時間を見つけてまた読んでみます。

The problems in the Modern Data Stack

本文中に目新しい内容はなかったのですが、Modern Data Stack の図が分かりやすかったのでご紹介。データウェアハウスの変遷と課題、Modern Data Stack と呼ばれるテクノロジースタックについての解説です。

https://medium.com/@diogo22santos/the-problems-in-the-modern-data-stack-e163faf90fa0 より抜粋

レポーティングが主な目的だったデータウェアハウスから、データ戦略やデータサイエンスなど様々な用途で使われるようになりました。それに応じて様々な課題が現れ、テクノロジーも様々なものが登場してきています。

テクノロジーだけでなく、ソフトウェアエンジニアはデータをどんな目的で生成しているか、データエンジニアはパイプライン構築/管理だけでなくビジネス目的を理解した上で業務に取り組めているか、データマネジメントやデータガバナンスに関する取り組みが行えているかなど、業務プロセスや組織体制についても考え直す必要があるとのことです。