Slide 1

Slide 1 text

0 TROCCOとdbtで サクッとやるデータ品質テスト 2025.01.31 #p_UG vol.10 株式会社サミーネットワークス ゲーム事業本部 マーケティング部 デジタルリサーチ分析課 森 和也

Slide 2

Slide 2 text

1 1 発表者 名前:森 和也 所属:株式会社サミーネットワークス 所属:ゲーム事業本部 マーケティング部 デジタルリサーチ分析課 業務:データ分析・レポーティング・BIダッシュボード作成 業務:データ基盤の整備と改善 業務:機械学習モデリングを用いた事業への利益貢献 2019年にサミーネットワークスに入社 2020年データ基盤の再構築PJTに立ち上げより参加

Slide 3

Slide 3 text

2 自社におけるdbtの使いどころって? 2 非エンジニアにとっては壁が高い COMEATAにある データ品質管理に課題あり Jinja と macros Git 管理 データカタログ機能 リネージ テスト機能 GUI大好き 1人1サービス担当体制 TROCCOのデータマートで作成済み メタデータを整備しなおすのは辛い

Slide 4

Slide 4 text

3 3 たびたび起こるデータ品質問題 「Tableauの数字おかしくないですか?」

Slide 5

Slide 5 text

4 4 dbtはテストが簡単にできるらしい Generic Test Singular Test Unit Test 存在してはいけないデータを出すクエリを書く 結果が返ってきてしまったらテスト失敗 あらかじめ用意されている規定のテスト ymlを使ってテーブルやカラムに適用できる テストデータを用意して行う単体テスト SQLの1つ1つのロジックに対してテストができる

Slide 6

Slide 6 text

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…指定した間隔で連続した値を含む などなど

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

7 7 TROCCOでdbt連携のワークフローを作る Gitリポジトリ 連携 dbtジョブ設定 ワークフロー作成 GitリポジトリのURLとブランチ を登録してGitリポジトリを連携 *dbtのバージョンは1.8か1.7 ジョブを定期実行するために ワークフローを作成 テストが失敗したら通知を飛ば すように設定 実行したいコマンドをdbtジョブ として設定(オプション設定可) コマンドはまとめて実行可能 各ステップほぼひとつの設定画面のみで完結

Slide 9

Slide 9 text

8 8 おわりに ・簡単にできてよかった やりたかったテストはpackageにあったのでymlを書くだけだった 非エンジニアがつまづきやすい定期実行もTROCCOで簡単に設定できた ・テストのためだけにdbt使うのもあり TROCCOとCOMEATAを利用している環境でdbtを利用する明確な意義 テストだけのためであればチーム全員がdbtを使えるようになる必要はない ・Unit testやelementaryも使っていきたい データの信頼性を高めたり、データ監視を行ったりデータ品質をさらに高めたい 利便性を伝えていけばチームへのdbt布教も進むかもしれない

Slide 10

Slide 10 text

9