Slide 1

Slide 1 text

1年間dbtで戦った話 DATUM STUDIO株式会社 向井 雄二 2022年12月14日

Slide 2

Slide 2 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 1 Whoami select * from employnee where name = ‘向井雄二’; name company role twitter job 向井雄二 DATUM STUDIO データエンジニア @ugmuka データ分析基盤の 受託開発

Slide 3

Slide 3 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 2 本日のターゲット Tokyo dbt meetup #4のアンケート結果 https://getdbt.slack.com/archives/C02NYJCRE80/p1661307153431409?thread_ts=1659666385.305389&cid=C02NYJCRE80 この人たち向け

Slide 4

Slide 4 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 3 話したいこと 年末なので1年を振り返ります ○○な課題が発生したよ ↓ dbtでこうやって解決したよ 技術選定 開発 運用 現在

Slide 5

Slide 5 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 4 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 6

Slide 6 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 5 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 7

Slide 7 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 6 DATUM STUDIOって? 基盤構築からMLOpsまで色々やってます unleash: 解き放つ

Slide 8

Slide 8 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 7 よくあるPJ お客様の声(例) ✓ Excelで毎回分析するのはしんどい ✓ アナリストがテーブル追加しすぎてカオ スになっている ✓ レポーティングに用いるSQLが秘伝の タレになっている ✓ そもそも施策にFBがない マーケティング指標を増やしたり、切り口を追加したり、整理したり 会員数 売上高 etc… 会員カテゴリ 商品カテゴリ etc… ○ ○ ○ × fact: 見たい指標 dimension: 見たい切り口

Slide 9

Slide 9 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 8 よくあるアーキテクチャ dbt × (Snowflake | Bigquery) × (Tableau | Looker) 基幹システムの DB S3 データレイク層 データウェア ハウス層 データマート層 BI ユーザー dbt Amazon Managed Workflows for Apache Airflow

Slide 10

Slide 10 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 9 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 11

Slide 11 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 10 dbtを選んだ理由 ✓ 依存関係は自動で解決するので、SQLだけ書いていればOK ✓ packageが豊富なので、煩雑なSQLはtemplate化できる ELTのTransformを管理するツールではデファクト 開発体験 ドキュメント化 エコシステム 活発に開発されている ✓ data catalog ✓ data quality ✓ data governance ✓ data observability コマンド一発でHTML生成 ✓ テーブル定義 ✓ DFD ✓ description

Slide 12

Slide 12 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 11 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 13

Slide 13 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 12 SQLが複雑すぎる DWHのSQLは長くなりがち with hoge as ( … ), fuga as ( … ), piyo as ( … ), … final as ( ) select * from final ここの処理はアナリストがいっつも入れている処理 上流がバグっているので、このクエリで吸収したい ついでにアレも計算しておきたい

Slide 14

Slide 14 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 13 SQLが複雑すぎる ✓ SQLを複数ファイルに分割 • デプロイは気にせずOK ✓ 複数の層に分割 • staging • 簡単な変換 • intermediate • joinなど • dwh • モデリング(dimensional modeling, data vaultなど) • mart • BIから参照する 長くなったSQLは分割→ファイル追加するだけでOK with hoge as ( … ), fuga as ( … ), piyo as ( … ), … final as ( ) select * from final with hoge as ( … ), fuga as ( … ), final as ( ) select * from final with piyo as ( … ), … final as ( ) select * from final

Slide 15

Slide 15 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 14 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 16

Slide 16 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 15 数字が合わない! 数値はズレます テーブルをきれいにする女性 joinしたら0件になった PKがPKになっていない 集計しても0

Slide 17

Slide 17 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 16 数字が合わない! 以下はymlに数行追加したら1コマンドでテスト可能 ✓ PKに指定したキーはuniqueかつnot nullか? ✓ 外部キーはきちんと外部キーになっているか? ✓ 各ディメンジョンに対して集計結果が1以上か? ✓ 特定の期間だけおかしな値になっていないか? dbt_utilsやdbt_expectationで集計結果確認 空いた時間でデータを掘ろう

Slide 18

Slide 18 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 17 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 19

Slide 19 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 18 この集計間違ってない? 急に値増えたんだけど、集計合ってます?

Slide 20

Slide 20 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 19 継続的に監視してデータを掘ろう この集計間違ってない? 開発時は通ったテストも運用始まったら通らなくなるかも? ✓ 月初に特殊な会計処理をしている ✓ マスタが更新される ✓ 上流システムのバグ 開発時のテストは運用でも継続的にモニタリングできる

Slide 21

Slide 21 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 20 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 22

Slide 22 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 21 異常なデータがないか監視したい 上流でバグ発生! → 分析基盤側でも検知したい

Slide 23

Slide 23 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 22 異常なデータがないか監視したい ✓ row_count ✓ null_count ✓ zero_count ✓ min ✓ max ✓ freshness elementaryを使うと、時系列でデータの監視ができる

Slide 24

Slide 24 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 23 目次 0. はじめに 1. 技術選定 1. dbtを選んだ理由 2. 開発 1. SQLが複雑すぎる 2. 数字が合わない! 3. 運用 1. この集計間違ってない? 2. 異常なデータがないか監視したい 4. 現在

Slide 25

Slide 25 text

© 2022 DATUM STUDIO Co. Ltd. PROPRIETARY & CONFIDENTIAL. 24 現在 ✓ 指標の細分化 • 個別の施策に対してきめ細やかにFBを得られる ✓ 指標の切り口の追加 • 施策の実施対象がより細かく同定できる ✓ 新指標の追加 • 新しいインサイトがあるかも? ✓ BIで自由分析 • アナリストは工数が減って嬉しい • データエンジニアはガバナンスが効いて嬉しい 指標を細分化したり、新しい切り口から分析できるようになる