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

dbtとLookerにたどり着いたデータ基盤 ~しくじり先生俺みたいになるなを添えて~

tenajima
July 07, 2022

dbtとLookerにたどり着いたデータ基盤 ~しくじり先生俺みたいになるなを添えて~

2022/07/06の「Vertical SaaS Study #2 急成長企業を支えるデータ分析基盤の作り方」にて話した内容になっています。
1年前データ基盤を0から作り、1年間運用してたどり着いた設計、そこにいたるまでの経緯、今だったらこうやって始めたかったという話をしました。
これからデータ基盤を作ろうとしている人の一助になれば幸いです。

tenajima

July 07, 2022
Tweet

More Decks by tenajima

Other Decks in Technology

Transcript

  1. © Unipos Inc. All Rights Reserved. 自己紹介 speaker 2 •

    水谷優斗 • インターネット 世界で @tenajima • Unipos 株式会社 ◦ 2018年新卒入社 • アナリティクスエンジニア ◦ (2018-2019)データサイエンティスト ◦ (2019-2020)データアナリスト • アイコン 妻が描いてくれました
  2. © Unipos Inc. All Rights Reserved. Uniposについて speaker 3 •

    Uniposと ピアボーナスを実現する Web サービ ス • 感謝や称賛、激励 メッセージに加えてポイントを添 えます、ポイント 金銭などに交換できます • 共感した投稿に対してワンクリックで称賛をすること ができます、拍手 ポイントとして投稿を送った人・ もらった人に送られます • 感情報酬を社会基盤に
  3. © Unipos Inc. All Rights Reserved. 話すこと Table of Contents

    4 • データ基盤に用いている技術について 
 • 今 データ基盤 設計に至った経緯 
 • 1年間で踏み抜いた地雷 数々 
 • 今 記憶を持って1年前に戻ったらど ように立ち回るか 

  4. © Unipos Inc. All Rights Reserved. 話さないこと Table of Contents

    5 • データモデリングについて • 各技術について 詳しい説明、及び使い方
  5. © Unipos Inc. All Rights Reserved. 現在 設計 Unipos データ基盤

    現在地 7 • Github Actions と Cloud Build 使って dbt をキックする 
 ◦ E L 管理 dbtで行う 
 • DWH に Big uery を用いる 
 ◦ nipos が GC ネイティブな で昔から Big uery を使う文化だった 
 • データ アクセスに Looker を用いる 
 ◦ 分析チームに分析依頼やデータ抽出依頼が殺到する を解消するため 
 ◦ データガバナンスを効かせるため 
 ◦ こ 部分 Google Cloud Japan Born Digital ummit で 話したも がある でよかったら ご覧ください

  6. © Unipos Inc. All Rights Reserved. 釈迦に説法コーナー Unipos データ基盤 現在地

    8 • dbt と 
 ◦ L コンパイルと L 実行を行ってくれるツール 
 ◦ メリット
 ▪ コード 再利用性を上げてくれる 
 ▪ テストが書きやすい、実行しやすい 
 ▪ docs をコードとともに管理できる 
 ◦ デメリット
 ▪ ど ように実行するか考える必要がある 
 ▪ aa 版を使うとデメリット ほぼ全てが解消されるがお金がかかる 

  7. © Unipos Inc. All Rights Reserved. 釈迦に説法コーナー Unipos データ基盤 現在地

    9 • Lookerと 
 ◦ 雑に言うと BI ツール 
 ◦ ユーザーが見たいも に応じて、DWH にクエリを投げて返ってきた結果を描画できる 
 ◦ メリット
 ▪ ど ようにクエリをコンパイルするかを定義できる で、定義 ズレが起きにくい 
 ▪ データガバナンスを効かせやすい 
 ▪ アナリストが本当に必要なメンテナンスに集中できる 
 ◦ デメリット
 ▪ ど ようにコンパイルするかを定義しないと何もできない 
 ▪ それなりにお高い

  8. © Unipos Inc. All Rights Reserved. データ基盤 変遷 Unipos データ基盤、1年

    歩み 12 • データ基盤という概念が導入される 
 ◦ それまで プロダクト バックアップを見ていた 
 ◦ スケジュールクエリで頑張ってバックアップを取る 
 ◦ 層という概念がなくてカオスになる 
 • Looker 導入
 ◦ 層という概念が生まれる 
 ◦ Looker をデータマート層として使い始める 
 • dbt 導入
 ◦ snapshot 層、staging 層、mart 層を整備できるようになる 
 ◦ テストを実行できるようになる 
 

  9. © Unipos Inc. All Rights Reserved. データ利用者から 視点 Unipos データ基盤、1年

    歩み 13 • データポータルでダッシュボードを提供されている 
 • 足りないデータ Big uery ジョブ権限を一時的に付与されて、Big uery にクエリを投げる 
 ◦ 自分が欲しいデータ クエリがかけない場合 分析チームに依頼が来る 
 • Looker ダッシュボードに移行、データ Looker 経由して見るしかないようにする 
 ◦ Big uery 権限 付与停止(絞り込み) 

  10. © Unipos Inc. All Rights Reserved. しくじりポイント、お品書き しくじり先生俺みたいになるなよ 16 •

    スケジュールクエリ、最初 いいがあとあと管理しきれない 
 • データポータル、管理飽和問題 
 • 何を血迷ったか、分析に使いやすいように非正規化して持ってほしいってオーダーする 
 • スナップショット対象データを取捨選択していた 

  11. © Unipos Inc. All Rights Reserved. スケジュールクエリ、最初 いいがあとあと管理しきれない
 しくじり先生俺みたいになるなよ 17

    • (最初に)良かった点 
 ◦ 日次でデータを取り込むに 手を出しやすい 
 ◦ 取り込み時間分割テーブルを使え パーティションも簡単にできる 
 • 依存関係 ある処理を書くときに制御できない 
 ◦ あ クエリが終わったらこ クエリを実行するって を制御できない(5分開けて実行するとか 地獄みたいなことしたく ない) 
 ◦ 結果 D Y じゃない L が増えていく 
 • テストしづらい
 ◦ リリース たびに人がクエリ書いて「ヨシッ!」って確認していた 
 • ずーっと _partitiondate と付き合い続ける 本当に大変 

  12. © Unipos Inc. All Rights Reserved. データポータル、管理飽和問題
 
 しくじり先生俺みたいになるなよ 18

    • (最初に)良かった点 
 ◦ 無料でさくさくっとダッシュボードが作れる 
 ◦ フィルターもあるし、ちょっとしたクエリもかけるし最初便利 
 • クエリで色々表現していた場合、定義変わったら全部 ダッシュボード 修正をかけなきゃいけない 
 • データ基盤 修正 影響でダッシュボードが見れない!ってなったら全部 ダッシュボード 修正を かけなきゃいけない 
 • 夜な夜なダッシュボード 修正をする日々でした 

  13. © Unipos Inc. All Rights Reserved. 非正規化して持ってほしいってオーダーする
 しくじり先生俺みたいになるなよ 20 •

    良いところない
 • 層 概念を持っていなかったがゆえ 大失敗 
 • 依頼も多いし、ダッシュボードも管理しなきゃだし、よく使うデータ 塊で予めデータを作ってもらうよ うにオーダーしてしまっていました 
 • 何を join して何を join しないかが不明瞭で後々 dbt 移行も大変になりました 
 • あ 頃 自分を殴り倒したい 

  14. © Unipos Inc. All Rights Reserved. スナップショット対象データを取捨選択していた
 しくじり先生俺みたいになるなよ 21 •

    変わりうるデータ(メンバー情報など) スナップショットとしてしっかり取っておいたほうが良いと思う 
 ◦ あとから遡れないも 残す姿勢とても大事、今分析に必要なくても将来もそうと 限らない 
 • テーブル 中でこれ 残す、これ 残さないというやり方をやると、あとあとマイグレーションで困る こともある
 ◦ と いえ個人情報 取扱に 細心 注意を 

  15. © Unipos Inc. All Rights Reserved. データ基盤 しくじり先生俺みたいになるなよ 24 •

    もともとデータエンジニアが組織にいたわけで なかった 
 • できたて チームだった で存在証明をしていく が先だった 
 
 • アナリスト(僕) 経験をもとに「こういうも があったら使いやすい で 」という を手探りで構築し ながら走っていくしかなかった 
 

  16. © Unipos Inc. All Rights Reserved. 今1年前に戻れるならこうする しくじり先生俺みたいになるなよ 25 •

    データエンジニアがいない であれ 、一時的にでも顧問として入ってくれる人を探す 
 ◦ 層 考え方とか、dbt こととか知らなかったから苦労したってことが多い 
 ◦ 逆に知っていたらだいぶ有利なことって多いなと感じる 
 ◦ マイグレーションが心と時間を持っていきがち 
 • とりあえず dbt で管理して、とりあえず dbt snapshot で履歴をとりまくる 
 ◦ 変わりうるデータもこれで管理する 
 ◦ とりあえずで dbt を導入する 個人的にありだと思う 
 • 取り込み時間パーティションテーブル 使わない 
 ◦ けっこうこいつが管理しづらい、これでパーティション 指定を必須にすると地獄を見る 

  17. © Unipos Inc. All Rights Reserved. 地雷をいっ い踏み抜いたけど 最後に 27

    • 今で 、 が新機能 評価分析を自分でするようになったり、C データ抽出依頼をほぼ無くす ことができたり、データが価値を持って使われ始めた 
 • ちゃんと分析チームに投資されていると感じるし、現状を見れ うまくやってきた方かなと 
 • 最近 Data Engineering 界隈盛り上がってる でどんどん飛び込んで学ぶ に適している 
 • 色んなイベント参加したり、色んな人と話したりして「知る」って が大きい 
 • また1年後も「あー、こうしていれ よかった」って 出てくるだろうけど、それ それで伸びしろで す ぇ(ポジティブ)