Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TROCCOとdbtでサクッとやるデータ品質テスト
Search
Kazuya Mori
February 03, 2025
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TROCCOとdbtでサクッとやるデータ品質テスト
Kazuya Mori
February 03, 2025
More Decks by Kazuya Mori
See All by Kazuya Mori
COMETAを用いたデータ品質管理と業務標準化への取り組み
sazimai
1
1.2k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Raft: Consensus for Rubyists
vanstee
141
7.5k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
860
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Test your architecture with Archunit
thirion
1
2.3k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
190
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
We Are The Robots
honzajavorek
0
240
Documentation Writing (for coders)
carmenintech
77
5.4k
Building Applications with DynamoDB
mza
96
7.1k
Transcript
0 TROCCOとdbtで サクッとやるデータ品質テスト 2025.01.31 #p_UG vol.10 株式会社サミーネットワークス ゲーム事業本部 マーケティング部 デジタルリサーチ分析課
森 和也
1 1 発表者 名前:森 和也 所属:株式会社サミーネットワークス 所属:ゲーム事業本部 マーケティング部 デジタルリサーチ分析課 業務:データ分析・レポーティング・BIダッシュボード作成
業務:データ基盤の整備と改善 業務:機械学習モデリングを用いた事業への利益貢献 2019年にサミーネットワークスに入社 2020年データ基盤の再構築PJTに立ち上げより参加
2 自社におけるdbtの使いどころって? 2 非エンジニアにとっては壁が高い COMEATAにある データ品質管理に課題あり Jinja と macros Git
管理 データカタログ機能 リネージ テスト機能 GUI大好き 1人1サービス担当体制 TROCCOのデータマートで作成済み メタデータを整備しなおすのは辛い
3 3 たびたび起こるデータ品質問題 「Tableauの数字おかしくないですか?」
4 4 dbtはテストが簡単にできるらしい Generic Test Singular Test Unit Test 存在してはいけないデータを出すクエリを書く
結果が返ってきてしまったらテスト失敗 あらかじめ用意されている規定のテスト ymlを使ってテーブルやカラムに適用できる テストデータを用意して行う単体テスト SQLの1つ1つのロジックに対してテストができる
5 5 Generic Test dbt 標準 dbt-expectations dbt-utils 以下の4種類のテストが可能 ・unique…すべてユニーク値である
・not_null…null を含まない ・accepted_values…指定した値以外含まない ・relationships…指定したモデルのカラムに含まれる 以下の7つのカテゴリに分けられた61種類のテストが可能 ・テーブルの形状に関するテスト ・欠損値、一意性、データ型を確認するテスト ・値の範囲に関するテスト ・文字列のマッチングを行うテスト ・集計関数によるテスト ・複数カラムに跨るテスト ・データのばらつきに関するテスト 15種類 6種類 5種類 10種類 17種類 6種類 3種類 値の範囲やテーブル間の関係性など17種類のテストが可能 ・not_empty_string…空文字 ’’を含まない ・sequential_values…指定した間隔で連続した値を含む などなど
6 6 dbtでテストを書く packages: - package: calogica/dbt_expectations version: [">=0.10.0", "<0.11.0"]
- package: calogica/dbt_date version: 0.10.1 - package: dbt-labs/dbt_utils version: 1.3.0 pakages.ymlに以下を記載 dbt-expectationsと dbt-utilsをインストールする dbt deps packageを インストール テストの用の モデルを作る テストを作る packages.yml dbt run SELECT id , user_id , ad_id , gacha_id , created_at FROM {{ source(‘XXX', 'gacha_logs') }} WHERE DATE(created_at) = {{yesterday()}} テストしたいデータを抽出する モデルを作成する 例はアプリのガチャログ latest_received_gacha_log.sql dbt test モデルのプロパティにテストを書く テーブルやカラムに対して行う Generic testを指定する models - name: gahca_logs tests: -dbt_expectations.expect_column_(略): column_name: gacha_id compare_model: ref(“m_gacha") compare_column_name: id - name: created_at tests: - not_null schema.yaml
7 7 TROCCOでdbt連携のワークフローを作る Gitリポジトリ 連携 dbtジョブ設定 ワークフロー作成 GitリポジトリのURLとブランチ を登録してGitリポジトリを連携 *dbtのバージョンは1.8か1.7
ジョブを定期実行するために ワークフローを作成 テストが失敗したら通知を飛ば すように設定 実行したいコマンドをdbtジョブ として設定(オプション設定可) コマンドはまとめて実行可能 各ステップほぼひとつの設定画面のみで完結
8 8 おわりに ・簡単にできてよかった やりたかったテストはpackageにあったのでymlを書くだけだった 非エンジニアがつまづきやすい定期実行もTROCCOで簡単に設定できた ・テストのためだけにdbt使うのもあり TROCCOとCOMEATAを利用している環境でdbtを利用する明確な意義 テストだけのためであればチーム全員がdbtを使えるようになる必要はない ・Unit
testやelementaryも使っていきたい データの信頼性を高めたり、データ監視を行ったりデータ品質をさらに高めたい 利便性を伝えていけばチームへのdbt布教も進むかもしれない
9