Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データエンジニアを助けてくれるFivetranとSnowflakeの仕様&機能のご紹介

Sagara
January 19, 2023

 データエンジニアを助けてくれるFivetranとSnowflakeの仕様&機能のご紹介

「こんなことまでしてくれるの!?~データエンジニアを助けてくれるFivetranとSnowflake~」で発表した登壇資料です。
https://dev.classmethod.jp/news/230119_fivetran-snowflake

Sagara

January 19, 2023
Tweet

More Decks by Sagara

Other Decks in Technology

Transcript

  1. データエンジニアを助けてくれる
 FivetranとSnowflakeの仕様&機能紹介
 2023/1/19
 クラスメソッド株式会社 相樂 悟

  2. 2 自己紹介 氏名 相樂 悟 (サガラ サトシ) 所属 クラスメソッド株式会社 アライアンス統括部

    主な担当 Modern Data Stackのプリセールス・プロサービス
  3. 3 クラスメソッドのModern Data Stack 今日お話すること ・Fivetran、Snowflakeの概要 ・データエンジニアを助けてくれるFivetran、Snowflakeの仕様・機能

  4. Fivetran


  5. Fivetranとは - 開発や運用作業が不要なELT(Extract,Load,Transform)サービス - ロード時のスキーマ(テーブル構成)も定義済 - データ抽出前のスキーマ設計が不要 5

  6. 一般的なデータ抽出(イメージ像) データ抽出してDWHに入れるだけでしょ?簡単 でしょ! 6

  7. 一般的なデータ抽出(実情) 7

  8. Fivetranがあれば… が全て担ってくれます 8

  9. Fivetranでユーザーがすること 1.データソースへの接続定義 2.使用するテーブルの選択 9 「データ抽出&データロード用の加工処理開発」 「サーバー管理含めた、各種保守・運用」 全て不要です

  10. - 対応サービスごとに、スキーマのER図が用意されています (例)Shopify ※公式Docより Fivetranにより構築されるスキーマ 10

  11. データエンジニアを助けてくれる
 Fivetranの仕様・機能


  12. データエンジニアを助けてくれるFivetranの仕様・機能 - データ型の自動割当・自動変更 ※デモ予定 - カラムの追加・削除の自動検知 ※デモ予定 - レコード削除の自動検知(対応するデータソースのみ) - レコード変更履歴の自動保持 12

  13. データ型の自動割当・自動変更とは - Fivetranは対象のデータソースで データ型が明示的に定められていない場合、 データの値を見てデータ型を割り当てる - 例:あるカラムで以下の値を確認 - 「9.90」➟DOUBLEと推測 -

    「9」➟INTと推測 - どちらにも対応できる「DOUBLE」を割当 13 Fivetranによる データ型の割当時の上下関係
  14. カラムの追加・削除の自動検知とは - データソース側でカラムの追加があった場合 - 対象のカラムを自動で追加してくれる - データソース側でカラムの削除があった場合 - 対象のカラムは基本そのまま残すが、削除された時から 対象のカラムのレコードにはNULLが入る

    14
  15. デモ - Fivetranを介してスプレッドシートのデータをSnowflakeに同期する - 2回目の同期前に、明らかにデータ型が異なる値を入れたり、新しいカラ ムが追加された場合どうなるか - 1回目 - 2回目

    15
  16. レコード削除の自動検知(対応するデータソースのみ) - Capture Deletes ※対応しているデータソースのみ - 「_fivetran_deleted」カラムをテーブルに追加し、データソース側で 削除されたレコードは「_fivetran_deleted = TRUE」となる 16

  17. レコード変更履歴の自動保持 - History Mode ※コストが通常よりもかかるため注意 - 対象のテーブルに変更があった場合、レコードの有効期間を 1レコードずつ保持し、変更履歴をすべて保持できる - 「_fivetran_start」:対象レコードの有効開始日時 -

    「_fivetran_end」:対象レコードの有効終了日時 - 「_fivetran_active」:対象のレコードが現在有効かどうかのフラグ 17
  18. Snowflake


  19. Snowflakeとは - クラウドのメリットを最大限活かしたデータウェアハウス - 強み - コンピューティングとストレージの分離 - クローン・タイムトラベルなどの独自機能 -

    マルチクラウド対応 - 外部へのデータシェアリング 19
  20. コンピューティングとストレージの分離 - 操作対象のデータ1つに対して、 複数の独立したコンピュートリソース(ウェアハウス)を確保できる - 何が良いのか? - リソースの取り合いがなく、 リソース管理に悩むことがない -

    用途ごとに最適なスペックを 選定できる柔軟なアーキテクチャ - オートスケールも可能 機械学習(XL×1) BIツール (M×4) データ加工 (L×2) 対象のストレージは1つ 処理を行うウェアハウスは 用途別に分けられる 20
  21. クローン・タイムトラベルなどの独自機能 - クローン:既存のデータをコピーすることなく、複製可能 - クローン先とクローン元それぞれへ違う更新処理が可能 - タイムトラベル:最大90日間、過去のデータに遡れる - なぜクローンやタイムトラベルが容易に出来る? -

    Snowflakeは差分が発生する度に、不変なデータを新規作成するから(下 図:超ざっくりマイクロパーティション紹介から引用) 21
  22. マルチクラウド対応 - AWS・GoogleCloud・Azure、どのプラットフォーム上でも Snowflakeは動作可能 - メリット - S3・GCS・Blob Storage、どこからでも容易にロード可能 -

    プラットフォーム間のレプリケーションも容易に可能 22 M anagem ent Optimization Transactions Security M etadata Data Sharing
  23. 外部へのデータシェアリング - データの移動・コピー・ETL処理を不要で、外部のユーザーに対して最新の データを共有することができる - 共有先がSnowflakeアカウントを所持していなくても、 リーダーアカウントを設定することで共有可能 23

  24. データエンジニアを助けてくれる
 Snowflakeの仕様・機能


  25. データエンジニアを助けてくれるSnowflakeの仕様・機能 - 基本的にデータロードをした順番で、 勝手にクラスタリングしてくれる ※デモ予定 - コンピュートリソースの管理不要なジョブ管理機能 25

  26. データロードをした順番で勝手にクラスタリング? - Snowflakeで単純にデータロードした時の仕様 - データロード日時と比例する値を持つカラムで絞り込めば、 自然とスキャン対象のマイクロパーティションが減る 26 starttime stoptime station

    2013-01-01 2013-04-01 aaa 2013-04-01 2013-04-01 aaa 2013-05-01 2013-05-02 ccc 2013-07-01 2013-07-02 aaa 2013-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ファイルから複数のマイクロパーティション生成、  といったことも実際には起こります
  27. なぜこれがデータエンジニアの助けと言えるの? - BigQueryの場合、ユーザー側でパーティショニングの設定がほぼ必須、かつ パーティショニングに用いたカラムで絞り込まないと、 スキャン量が削減できない - BigQueryはクラスタリングもあるが、 ユーザー側での設定が必須 27 starttime

    stoptime station 2013-01-01 2013-04-01 aaa 2013-04-01 2013-04-01 aaa 2013-05-01 2013-05-02 ccc 2013-07-01 2013-07-02 aaa 「starttime」でパーティションした BigQueryテーブル パーティションその1 パーティションその2 パーティションその3 パーティションその4 select * from trips where starttime = '2013-01-01'; ➟ 「その1」のみスキャン   select * from trips where stoptime = '2013-04-01'; ➟ すべてのパーティションをスキャン
  28. デモ - 「Citi Bike」の利用状況データ6100万行を単純にロードしたテーブルを用いて、 絞り込むカラムに応じてスキャン量がどう変化するか - 下図は実際にロードするファイル名の一例、 「サービス利用開始日時の年月日」ごとにまとまっている - 検証内容:以下のカラムに対し絞り込みを行い、スキャン量を確認

    - starttime:Citi Bikeの利用開始日時 - stoptime:Citi Bikeの利用終了日時 28
  29. コンピュートリソースの管理不要なジョブ管理機能 - Serverless Taskを用いた「タスク」機能 - 定期的にCREATE TABLE AS SELECTなどのSQLを実行できる機能 -

    Serverless Taskならばウェアハウスの管理も不要 - Airflowなどのワークフロー管理のツールを用意せずとも、 Snowflake上だけで下図のようなワークフローを構築できる 29 Aテーブル データロード A’テーブル 最低限の加工 Bテーブル データロード B’テーブル 最低限の加工 A’とB'をJOINした データマート作成
  30. まとめ


  31. Fivetran × Snowflakeの事例 Fivetran × Snowflakeは、事例も多い組み合わせです 最近では国内のデータエンジニアも注目しています 31 引用元: [事例]

    Snowflake社の成長の秘密:Fivetranで業 界トップクラスのデータ分析基盤を構築 引用元: [レポート]みんなの考えた最強のデータアーキテクチャ #datatechjp
  32. まとめ - Fivetran - ユーザーが行うのは「接続設定だけ」でよい - Snowflake - 「まずはデータを入れてみよう」から気軽に試して、 十分な性能が出ることが多い

    - Fivetran × Snowflake - データの準備を爆速で行い、本来すべき「データ活用」に専 念できる組み合わせ 32
  33. ご清聴ありがとうございました