データエンジニアを助けてくれるFivetranとSnowflakeの仕様&機能のご紹介
by
Sagara
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
ご清聴ありがとうございました