「こんなことまでしてくれるの!?~データエンジニアを助けてくれるFivetranとSnowflake~」で発表した登壇資料です。 https://dev.classmethod.jp/news/230119_fivetran-snowflake
データエンジニアを助けてくれる FivetranとSnowflakeの仕様&機能紹介 2023/1/19 クラスメソッド株式会社相樂 悟
View Slide
2自己紹介氏名相樂 悟 (サガラ サトシ)所属クラスメソッド株式会社 アライアンス統括部主な担当Modern Data Stackのプリセールス・プロサービス
3クラスメソッドのModern Data Stack今日お話すること・Fivetran、Snowflakeの概要・データエンジニアを助けてくれるFivetran、Snowflakeの仕様・機能
Fivetran
Fivetranとは- 開発や運用作業が不要なELT(Extract,Load,Transform)サービス- ロード時のスキーマ(テーブル構成)も定義済- データ抽出前のスキーマ設計が不要5
一般的なデータ抽出(イメージ像)データ抽出してDWHに入れるだけでしょ?簡単でしょ!6
一般的なデータ抽出(実情) 7
Fivetranがあれば…が全て担ってくれます8
Fivetranでユーザーがすること1.データソースへの接続定義 2.使用するテーブルの選択9「データ抽出&データロード用の加工処理開発」「サーバー管理含めた、各種保守・運用」全て不要です
- 対応サービスごとに、スキーマのER図が用意されています(例)Shopify ※公式DocよりFivetranにより構築されるスキーマ 10
データエンジニアを助けてくれる Fivetranの仕様・機能
データエンジニアを助けてくれるFivetranの仕様・機能- データ型の自動割当・自動変更 ※デモ予定- カラムの追加・削除の自動検知 ※デモ予定- レコード削除の自動検知(対応するデータソースのみ)- レコード変更履歴の自動保持12
データ型の自動割当・自動変更とは- Fivetranは対象のデータソースでデータ型が明示的に定められていない場合、データの値を見てデータ型を割り当てる- 例:あるカラムで以下の値を確認- 「9.90」➟DOUBLEと推測- 「9」➟INTと推測- どちらにも対応できる「DOUBLE」を割当13Fivetranによるデータ型の割当時の上下関係
カラムの追加・削除の自動検知とは- データソース側でカラムの追加があった場合- 対象のカラムを自動で追加してくれる- データソース側でカラムの削除があった場合- 対象のカラムは基本そのまま残すが、削除された時から対象のカラムのレコードにはNULLが入る14
デモ- Fivetranを介してスプレッドシートのデータをSnowflakeに同期する- 2回目の同期前に、明らかにデータ型が異なる値を入れたり、新しいカラムが追加された場合どうなるか- 1回目- 2回目15
レコード削除の自動検知(対応するデータソースのみ)- Capture Deletes ※対応しているデータソースのみ- 「_fivetran_deleted」カラムをテーブルに追加し、データソース側で削除されたレコードは「_fivetran_deleted = TRUE」となる16
レコード変更履歴の自動保持- History Mode ※コストが通常よりもかかるため注意- 対象のテーブルに変更があった場合、レコードの有効期間を1レコードずつ保持し、変更履歴をすべて保持できる- 「_fivetran_start」:対象レコードの有効開始日時- 「_fivetran_end」:対象レコードの有効終了日時- 「_fivetran_active」:対象のレコードが現在有効かどうかのフラグ17
Snowflake
Snowflakeとは- クラウドのメリットを最大限活かしたデータウェアハウス- 強み- コンピューティングとストレージの分離- クローン・タイムトラベルなどの独自機能- マルチクラウド対応- 外部へのデータシェアリング19
コンピューティングとストレージの分離- 操作対象のデータ1つに対して、複数の独立したコンピュートリソース(ウェアハウス)を確保できる- 何が良いのか?- リソースの取り合いがなく、リソース管理に悩むことがない- 用途ごとに最適なスペックを選定できる柔軟なアーキテクチャ- オートスケールも可能機械学習(XL×1)BIツール(M×4)データ加工(L×2)対象のストレージは1つ処理を行うウェアハウスは用途別に分けられる20
クローン・タイムトラベルなどの独自機能- クローン:既存のデータをコピーすることなく、複製可能- クローン先とクローン元それぞれへ違う更新処理が可能- タイムトラベル:最大90日間、過去のデータに遡れる- なぜクローンやタイムトラベルが容易に出来る?- Snowflakeは差分が発生する度に、不変なデータを新規作成するから(下図:超ざっくりマイクロパーティション紹介から引用)21
マルチクラウド対応- AWS・GoogleCloud・Azure、どのプラットフォーム上でもSnowflakeは動作可能- メリット- S3・GCS・Blob Storage、どこからでも容易にロード可能- プラットフォーム間のレプリケーションも容易に可能22ManagementOptimizationTransactions SecurityMetadataData Sharing
外部へのデータシェアリング- データの移動・コピー・ETL処理を不要で、外部のユーザーに対して最新のデータを共有することができる- 共有先がSnowflakeアカウントを所持していなくても、リーダーアカウントを設定することで共有可能23
データエンジニアを助けてくれる Snowflakeの仕様・機能
データエンジニアを助けてくれるSnowflakeの仕様・機能- 基本的にデータロードをした順番で、勝手にクラスタリングしてくれる ※デモ予定- コンピュートリソースの管理不要なジョブ管理機能25
データロードをした順番で勝手にクラスタリング?- Snowflakeで単純にデータロードした時の仕様- データロード日時と比例する値を持つカラムで絞り込めば、自然とスキャン対象のマイクロパーティションが減る26starttime stoptime station2013-01-01 2013-04-01 aaa2013-04-01 2013-04-01 aaa2013-05-01 2013-05-02 ccc2013-07-01 2013-07-02 aaa2013-08-01 2013-08-02 kkkロード対象のファイルマイクロパーティションその1マイクロパーティションその2マイクロパーティションその3ロード後のテーブルselect * from trips where starttime = '2013-01-01'; ➟ 「その1」のみスキャン select * from trips where stoptime = '2013-04-01'; ➟ 「その1」「その2」のみスキャン※複数ファイルから1つのマイクロパーティション生成、 1ファイルから複数のマイクロパーティション生成、 といったことも実際には起こります
なぜこれがデータエンジニアの助けと言えるの?- BigQueryの場合、ユーザー側でパーティショニングの設定がほぼ必須、かつパーティショニングに用いたカラムで絞り込まないと、スキャン量が削減できない- BigQueryはクラスタリングもあるが、ユーザー側での設定が必須27starttime stoptime station2013-01-01 2013-04-01 aaa2013-04-01 2013-04-01 aaa2013-05-01 2013-05-02 ccc2013-07-01 2013-07-02 aaa「starttime」でパーティションしたBigQueryテーブルパーティションその1パーティションその2パーティションその3パーティションその4select * from trips where starttime = '2013-01-01'; ➟ 「その1」のみスキャン select * from trips where stoptime = '2013-04-01'; ➟ すべてのパーティションをスキャン
デモ- 「Citi Bike」の利用状況データ6100万行を単純にロードしたテーブルを用いて、絞り込むカラムに応じてスキャン量がどう変化するか- 下図は実際にロードするファイル名の一例、「サービス利用開始日時の年月日」ごとにまとまっている- 検証内容:以下のカラムに対し絞り込みを行い、スキャン量を確認- starttime:Citi Bikeの利用開始日時- stoptime:Citi Bikeの利用終了日時28
コンピュートリソースの管理不要なジョブ管理機能- Serverless Taskを用いた「タスク」機能- 定期的にCREATE TABLE AS SELECTなどのSQLを実行できる機能- Serverless Taskならばウェアハウスの管理も不要- Airflowなどのワークフロー管理のツールを用意せずとも、Snowflake上だけで下図のようなワークフローを構築できる29AテーブルデータロードA’テーブル最低限の加工BテーブルデータロードB’テーブル最低限の加工A’とB'をJOINしたデータマート作成
まとめ
Fivetran × Snowflakeの事例Fivetran × Snowflakeは、事例も多い組み合わせです最近では国内のデータエンジニアも注目しています31引用元:[事例] Snowflake社の成長の秘密:Fivetranで業界トップクラスのデータ分析基盤を構築引用元:[レポート]みんなの考えた最強のデータアーキテクチャ #datatechjp
まとめ- Fivetran- ユーザーが行うのは「接続設定だけ」でよい- Snowflake- 「まずはデータを入れてみよう」から気軽に試して、十分な性能が出ることが多い- Fivetran × Snowflake- データの準備を爆速で行い、本来すべき「データ活用」に専念できる組み合わせ32
ご清聴ありがとうございました