Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

2 自己紹介 氏名 相樂 悟 (サガラ サトシ) 所属 クラスメソッド株式会社 アライアンス統括部 主な担当 Modern Data Stackのプリセールス・プロサービス

Slide 3

Slide 3 text

3 クラスメソッドのModern Data Stack 今日お話すること ・Fivetran、Snowflakeの概要 ・データエンジニアを助けてくれるFivetran、Snowflakeの仕様・機能

Slide 4

Slide 4 text

Fivetran


Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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


Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

カラムの追加・削除の自動検知とは - データソース側でカラムの追加があった場合 - 対象のカラムを自動で追加してくれる - データソース側でカラムの削除があった場合 - 対象のカラムは基本そのまま残すが、削除された時から 対象のカラムのレコードにはNULLが入る 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Snowflake


Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

コンピューティングとストレージの分離 - 操作対象のデータ1つに対して、 複数の独立したコンピュートリソース(ウェアハウス)を確保できる - 何が良いのか? - リソースの取り合いがなく、 リソース管理に悩むことがない - 用途ごとに最適なスペックを 選定できる柔軟なアーキテクチャ - オートスケールも可能 機械学習(XL×1) BIツール (M×4) データ加工 (L×2) 対象のストレージは1つ 処理を行うウェアハウスは 用途別に分けられる 20

Slide 21

Slide 21 text

クローン・タイムトラベルなどの独自機能 - クローン:既存のデータをコピーすることなく、複製可能 - クローン先とクローン元それぞれへ違う更新処理が可能 - タイムトラベル:最大90日間、過去のデータに遡れる - なぜクローンやタイムトラベルが容易に出来る? - Snowflakeは差分が発生する度に、不変なデータを新規作成するから(下 図:超ざっくりマイクロパーティション紹介から引用) 21

Slide 22

Slide 22 text

マルチクラウド対応 - AWS・GoogleCloud・Azure、どのプラットフォーム上でも Snowflakeは動作可能 - メリット - S3・GCS・Blob Storage、どこからでも容易にロード可能 - プラットフォーム間のレプリケーションも容易に可能 22 M anagem ent Optimization Transactions Security M etadata Data Sharing

Slide 23

Slide 23 text

外部へのデータシェアリング - データの移動・コピー・ETL処理を不要で、外部のユーザーに対して最新の データを共有することができる - 共有先がSnowflakeアカウントを所持していなくても、 リーダーアカウントを設定することで共有可能 23

Slide 24

Slide 24 text

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


Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

データロードをした順番で勝手にクラスタリング? - 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ファイルから複数のマイクロパーティション生成、  といったことも実際には起こります

Slide 27

Slide 27 text

なぜこれがデータエンジニアの助けと言えるの? - 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'; ➟ すべてのパーティションをスキャン

Slide 28

Slide 28 text

デモ - 「Citi Bike」の利用状況データ6100万行を単純にロードしたテーブルを用いて、 絞り込むカラムに応じてスキャン量がどう変化するか - 下図は実際にロードするファイル名の一例、 「サービス利用開始日時の年月日」ごとにまとまっている - 検証内容:以下のカラムに対し絞り込みを行い、スキャン量を確認 - starttime:Citi Bikeの利用開始日時 - stoptime:Citi Bikeの利用終了日時 28

Slide 29

Slide 29 text

コンピュートリソースの管理不要なジョブ管理機能 - Serverless Taskを用いた「タスク」機能 - 定期的にCREATE TABLE AS SELECTなどのSQLを実行できる機能 - Serverless Taskならばウェアハウスの管理も不要 - Airflowなどのワークフロー管理のツールを用意せずとも、 Snowflake上だけで下図のようなワークフローを構築できる 29 Aテーブル データロード A’テーブル 最低限の加工 Bテーブル データロード B’テーブル 最低限の加工 A’とB'をJOINした データマート作成

Slide 30

Slide 30 text

まとめ


Slide 31

Slide 31 text

Fivetran × Snowflakeの事例 Fivetran × Snowflakeは、事例も多い組み合わせです 最近では国内のデータエンジニアも注目しています 31 引用元: [事例] Snowflake社の成長の秘密:Fivetranで業 界トップクラスのデータ分析基盤を構築 引用元: [レポート]みんなの考えた最強のデータアーキテクチャ #datatechjp

Slide 32

Slide 32 text

まとめ - Fivetran - ユーザーが行うのは「接続設定だけ」でよい - Snowflake - 「まずはデータを入れてみよう」から気軽に試して、 十分な性能が出ることが多い - Fivetran × Snowflake - データの準備を爆速で行い、本来すべき「データ活用」に専 念できる組み合わせ 32

Slide 33

Slide 33 text

ご清聴ありがとうございました