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

TROCCOとdbtでサクッとやるデータ品質テスト

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Kazuya Mori Kazuya Mori
February 03, 2025
200

 TROCCOとdbtでサクッとやるデータ品質テスト

Avatar for Kazuya Mori

Kazuya Mori

February 03, 2025
Tweet

Transcript

  1. 1 1 発表者 名前:森 和也 所属:株式会社サミーネットワークス 所属:ゲーム事業本部 マーケティング部 デジタルリサーチ分析課 業務:データ分析・レポーティング・BIダッシュボード作成

    業務:データ基盤の整備と改善 業務:機械学習モデリングを用いた事業への利益貢献 2019年にサミーネットワークスに入社 2020年データ基盤の再構築PJTに立ち上げより参加
  2. 2 自社におけるdbtの使いどころって? 2 非エンジニアにとっては壁が高い COMEATAにある データ品質管理に課題あり Jinja と macros Git

    管理 データカタログ機能 リネージ テスト機能 GUI大好き 1人1サービス担当体制 TROCCOのデータマートで作成済み メタデータを整備しなおすのは辛い
  3. 4 4 dbtはテストが簡単にできるらしい Generic Test Singular Test Unit Test 存在してはいけないデータを出すクエリを書く

    結果が返ってきてしまったらテスト失敗 あらかじめ用意されている規定のテスト ymlを使ってテーブルやカラムに適用できる テストデータを用意して行う単体テスト SQLの1つ1つのロジックに対してテストができる
  4. 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…指定した間隔で連続した値を含む などなど
  5. 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
  6. 7 7 TROCCOでdbt連携のワークフローを作る Gitリポジトリ 連携 dbtジョブ設定 ワークフロー作成 GitリポジトリのURLとブランチ を登録してGitリポジトリを連携 *dbtのバージョンは1.8か1.7

    ジョブを定期実行するために ワークフローを作成 テストが失敗したら通知を飛ば すように設定 実行したいコマンドをdbtジョブ として設定(オプション設定可) コマンドはまとめて実行可能 各ステップほぼひとつの設定画面のみで完結
  7. 9