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

MeetUP5_ETL_20230209

BrainPad
February 15, 2023

 MeetUP5_ETL_20230209

BrainPad

February 15, 2023
Tweet

More Decks by BrainPad

Other Decks in Programming

Transcript

  1. 西尾 友佑
    2023年2月9日 BrainPadエンジニアトーク#5
    ETL-実例に基づくケーススタディ-

    View Slide

  2. © BrainPad Inc. 2
    ● ETLとは
    ● 生まれた背景
    ● 活用事例
    ● ETLを支える技術
    ● まとめ
    アジェンダ

    View Slide

  3. ETLとは

    View Slide

  4. © BrainPad Inc. 4
    ● Extract(抽出)
    Transform(変換)
    Load(格納)の略で
    データ統合時に発生する各プロセスの
    頭文字をとったものです
    ETLとは

    View Slide

  5. © BrainPad Inc. 5
    ● ETL
    ○ 抽出後に変換してから格納
    ○ DBの容量を逼迫しない
    ○ 加工では開発の知識が必要になる
    ● ELT
    ○ 抽出後に格納してから変換
    ○ 取り込みのスピードが早い
    ○ DBの容量を逼迫しやすい
    ETLとELTの違い

    View Slide

  6. © BrainPad Inc. 6
    ● 決まった時間にお客様の環境にアクセスし
    データを取りに行くこともできます
    ● ストレージにデータが置かれたタイミングを
    トリガーとして受け渡しすることもできます
    データ受け渡し方法

    View Slide

  7. 生まれた背景

    View Slide

  8. © BrainPad Inc. 8
    プロダクトマップ
    基幹システムデータ
    顧客固有データ
    WEB
    アプリ
    アプリ
    Push
    メール
    LINE
    データ統合 分析 可視化 意思決定 実行
    オウンド
    データ
    ソーシャル
    データ
    パブリックDMP、データセラー、
    位置情報、天候データなど
    Rtoasterタグ、SDK
    各プロダクト実行ログ
    外部
    データ
    個別
    データ
    広告媒体
    データ
    顧客接点
    データ統合基盤(CDP)
    SNS
    拡張分析ツール
    ソーシャルメディア 分析ツール
    マーケティングオートメーション(MA)
    パーソナライズ・レコメンド
    マッチングエンジン
    メッセージ(Push配信)
    分析ツール
    スポンサードサーチ
    ディスプレイアドネットワーク
    (YDN)

    View Slide

  9. © BrainPad Inc. 9
    ETLのカバー範囲
    基幹システムデータ
    顧客固有データ
    WEB
    アプリ
    アプリ
    Push
    メール
    LINE
    データ統合 分析 可視化 意思決定 実行
    オウンド
    データ
    ソーシャル
    データ
    パブリックDMP、データセラー、
    位置情報、天候データなど
    Rtoasterタグ、SDK
    各プロダクト実行ログ
    外部
    データ
    個別
    データ
    広告媒体
    データ
    顧客接点
    データ統合基盤(CDP)
    SNS
    拡張分析ツール
    ソーシャルメディア 分析ツール
    マーケティングオートメーション(MA)
    パーソナライズ・レコメンド
    マッチングエンジン
    メッセージ(Push配信)
    分析ツール
    スポンサードサーチ
    ディスプレイアドネットワーク
    (YDN)
    連携 連携
    連携
    連携

    View Slide

  10. © BrainPad Inc. 10
    ● 元々action+と連携する時
    いくつかの方法が用意されていた
    ● どの方法も先方によるデータ加工が
    必要となってしまうため加工部分を
    action+側で担保して欲しいという要望があった
    ● 上記の要望を叶えるためにETLが誕生
    役割としてはaction+に対するETL部分を
    担うことが主な目的であった
    誕生

    View Slide

  11. © BrainPad Inc. 11
    ● action+への連携に特化することで
    各プロダクトで機能開発とは異なる汎用化しきれない
    連携業務の省力化に繋がった
    ● ファイルの圧縮・解凍、カラム名の変更といった
    本質的ではない細かいエッジケースへの対応を
    ETLに寄せることが出来た
    ● 開発リソースを持たないクライアントからの
    要望を拾うことが出来たことで
    連携可能になるケースもあった
    誕生

    View Slide

  12. © BrainPad Inc. 12
    ● 基本は1日1回のバッチ処理です
    ○ ポーリング機能もありニアリアルタイム起動も可能です
    ● 状態を永続的に保存するものではありません
    ○ データのステータスなどの情報は保持しません
    ● 案件ごとに仕様が異なるため以下の情報は案件毎に算出します
    ○ 初期費用・運用費・開発工数
    ● クライアントが設定変更するものではありません
    ○ ETL担当エンジニアが実施します
    弊社でのETL

    View Slide

  13. 活用事例

    View Slide

  14. © BrainPad Inc. 14
    ● お客様がオンライン販売と実店舗販売、両方持っており、
    実店舗での売上データもaction+に投入したい
    ● お客様のシステムで持っているアイテムやユーザーデータを
    action+に投入したい
    ● action+からの出力ファイルを、お客様のシステムに連携したい
    ● Rtoasterファミリー/Probance/Conomi等を導入したいが
    各サービスとお客様側を連携する部分の開発が必要だ
    ○ 具体例
    ■ ファイルの整形
    ■ データのフィルタ
    どんな時にETLを使うことを検討するのか

    View Slide

  15. © BrainPad Inc. 15
    基本イメージ
    ● 他社環境に配置されたデータを加工して
    BrainPadの仲介用サーバーなど取得可能な環境にファイルを出力
    他社環境 ETL
    ファイル
    取得

    連携用
    ファイル
    配置
    仲介用
    サーバー
    A A
    B B

    View Slide

  16. © BrainPad Inc. 16
    分割
    ● 分割して連携する
    他社環境 ETL
    ファイル
    加工
    Aは
    そのまま
    Bは分割
    仲介用
    サーバー
    A
    B
    A
    B1
    B2 B3

    View Slide

  17. © BrainPad Inc. 17
    統合
    ● 統合して連携する
    他社環境 ETL
    ファイル
    統合
    仲介用
    サーバー
    A
    B
    C

    View Slide

  18. © BrainPad Inc.
    ● 分割し複数のプロダクトに連携する
    18
    複数のプロダクトへ渡す
    他社環境 ETL
    ファイル
    加工
    仲介用
    サーバー
    s3
    MAツール

    View Slide

  19. © BrainPad Inc. 19
    ● お客様がオンライン販売と実店舗販売、両方持っており、実店舗
    での売上データもaction+に投入したい
    ● お客様のシステムで持っているアイテムやユーザーデータを
    action+に投入したい
    ● action+からの出力ファイルを、お客様のシステムに送りたい
    ● Rtoasterファミリー/Probance/Conomi等を導入したいが
    各サービスとお客様側を連携する部分の開発が必要だ
    ○ 具体例
    ■ ファイルの整形
    ■ データのフィルタ
    どんな時にETLを使うことを検討するのか
    主に各種加工について
    話します

    View Slide

  20. © BrainPad Inc. 20
    ● action+やinsight+から取得したデータを加工して
    BrainPadの仲介用サーバーや他社環境などへ出力します
    各種加工(データアウトプット)
    データレイク
    ETL
    トラッキング
    ログ取得

    連携用
    ファイル
    作成
    tracking
    仲介用
    サーバー

    View Slide

  21. © BrainPad Inc.
    ● 他社環境に配置されたデータを加工して
    BrainPadの仲介用サーバーなど
    取得可能な環境にファイルを出力
    21
    各種加工(データインポート)
    他社環境 ETL
    ファイル
    取得

    連携用
    ファイル
    作成
    仲介用
    サーバー

    View Slide

  22. © BrainPad Inc. 22
    ● 出力結果そのままのフォーマットでは
    実現出来ないプロダクト間連携をETLで加工することで
    プロダクト間連携時のハブ役割を果たします
    各種加工(プロダクト間連携)
    ファイル
    取得

    連携用
    ファイル
    作成
    ETL

    View Slide

  23. ETLを支える技術

    View Slide

  24. © BrainPad Inc. 24
    ● 弊社でOSS化したライブラリcliboaを使用しています
    ● cliboaとは
    ■ BrainPad社内で開発・運用が行われていた
    ETL処理機能の共通基盤部分を
    アプリケーションフレームワークとして
    設計・実装し直したもの
    ○ PyPi
    ■ https://pypi.org/project/cliboa/
    ○ GitHub
    ■ https://github.com/BrainPad/cliboa
    ■ プルリクエストお待ちしています
    ETLを支える技術

    View Slide

  25. © BrainPad Inc. 25
    設定例
    SFTPを使用してダウンロード
    S3へアップロード

    View Slide

  26. © BrainPad Inc. 26
    アーキテクチャ
    スケジュール
    登録
    プログラム
    アップロード
    スケジュール
    実行
    インスタンス
    作成
    実行

    インスタンス
    終了
    プログラム
    取得




    ⑤ ⑥

    View Slide

  27. まとめ

    View Slide

  28. © BrainPad Inc. 28
    ● ETL自体は連携において必要不可欠なものです
    都度開発していると対応コストがかかってしまいます
    ● 汎用化しきれないケースも多いです
    ● モジュール化して対応コスト省力化を測ったり
    インスタンスを並列実行出来るように
    都度改善し続けて今の状態があります
    ● これからも改善を続けていきます
    まとめ

    View Slide