FINNでのクラウドソーデッドデータ品質テストと警告のためのDBT


この記事はどのように我々はデータ品質を確保するスニークピークですFINN . それはなぜ我々がデータ品質に関してモニターして、警戒する理由について説明します.さらに、記事は、すべてのチームがデータ品質に貢献するのを許容することによって、ビジネスプロセスに関する分散知識を活用する方法を示します.

Finnへの影響

  • ビジネスロジックデータのテストの70 %以上は私たちのコアデータ工学チームの一部ではない人々から来ている.
  • FINのすべての運営部門の100 %は、データテストに貢献します.
  • これまで、何百ものデータテストは、1/4の範囲内で分散した(「群衆供給された」方法で実施されました).
  • 背景- DBTは何ですか?


    "dbt is a transformation workflow that lets teams quickly and collaboratively deploy analytics code following software engineering best practices like modularity, portability, CI/CD, and documentation. Now anyone who knows SQL can build production-grade data pipelines." source


    FINNはデータ品質について監視し警告する理由


    FINN's 2021年の成長は、全体的な技術基盤の課題を引き起こしました.FINN サインされたサブスクリプションの数で10 xを増やしました、そして、従業員の数は6ヵ月で倍増しました.
    この成長の間に、データ生成ビジネスプロセスは急速に変化して発展するFINN's 製品この急速な発展は、データロジックのどのような変化も分析パイプラインを有効にするためにデータパイプラインで考慮される必要があるためデータウェアハウジングに挑戦する.さらに、多くのものが非デジタル世界で間違って行くことができるので、動く身体的な資産(自動車)は挑戦的です.
    すべての艦隊/ビジネス状態の任意の時点で防弾解析を生成するために、データ工学チームは、分析、データサイエンス、およびマシンの学習チームが構築できるスケーラブル/成功したデータプラットフォームを構築する必要があります.

    成功したデータプラットフォームは、データ品質を保証します。


    つの成功メートルFINN's データプラットフォームは、我々が他のチームに提供するデータの品質です.したがって、我々はデータ品質をテストするための技術的なソリューションを開発し、データの所有者に警告、時間をかけてデータの品質を追跡し、すべてのチームがテストに貢献することができます.
    具体的には、次のようにテストする必要があります.
  • 基本的なデータ品質:ユニークさ、Nullness、タイプ、受け入れられた値
  • ビジネスロジック:「サインされたサブスクリプションは、フィールドXYZが満たされる必要があります」、「州Xの車は、フィールドXYZで満たされる必要があります」
  • データ品質への貢献は分散化されるべきである。


    データ工学チームは、データ品質テストのためのボトルネックであるべきではありません.ビジネスロジックの専門家は、ミッションベースのチームの一部です.したがって、各チームはプロセスによって生成されたデータのテストを実装する必要があります.

    ターゲットシステムに設定する要件。

  • REQ - 1 :異なるチームは、集中しない方法でテストを実行します.
  • REQ - 2 :データ品質テストはSQL経由で実装するのが簡単です.
  • REQ - 3:我々は各テストのスラックを介して対応するチームに通知を送信します.
  • REQ - 4:テストパフォーマンスに関する歴史を追跡します.
  • ターゲットのアーキテクチャと実行。



    次のコンポーネントが表示されます.
  • model.yml : データモデル定義の横にあるGitリポジトリの一部であるYMLファイル.これらのファイルは、通常DBTdocument data models and run tests at column or table level .
  • FINN DWH dbt GIT Repo : Gitリポジトリには、フィンランドのデータモデルと対応するドキュメントが含まれます.
  • dbt Cloud Internals : DBTクラウドはスケジュールされたデータ変換を実行し、データモデル(テーブル)(Gitリポジトリで定義)を作成します.これらのスケジュールされたデータ変換を作成job Artefacts 私たちはdbt Cloud API .
  • DWH dbt_tests_output : 失敗した行の詳細を含むデータウェアハウスのテーブル.
  • FINN Data Quality Alerting Service : 整数文字make DBTクラウドからジョブアーティファクトを取得するためのロジックを実装するシナリオでは、データウェアハウスから対応する失敗行を取得し、対応するスラックチャネルに転送します.
  • 実行は以下のようになります.
  • スケジュールされた(毎時)DBT雲仕事実行dbt test –store-failures ( DBTバージョンv 1.0.0で動作します).
  • によるとmodel configurations ( . ymlファイル)dbt macros ) はカラムおよびテーブルレベルで実行される.ジョブのアーティファクトが保存されます.
  • データ品質アラートサービス( Integrmat )make を介してジョブアーティファクトを取得するdbt Cloud API .
  • サービスはデータの倉庫から対応する結果(失敗した行)をアーティファクトに従って問い合わせます.
  • サービスは、解決の説明を含む対応するチーム(スラックチャンネル)に失敗した行を送信します.
  • 一歩一歩踏み込んでください.

    ✅ REQ - 1 :上記のシステムの中心柱はDBTです。これは、分散データのテストワークフロー(および大いに多く)を有効にします。


    dbt 特にデータ変換を実行するのに良い.DBTのまわりのツールは、我々のデータ人々がソフトウェア工学のように感じる開発ワークフローで働くのを許します.データ工学に集中しない他のチームも、データ変換への変更を貢献するために権限を与えられます.リクエスト、コードレビュー、データテスト、およびカラムプロファイリングDatafold ) 変更が確実に下流データモデルを壊さないことを確認してください.これらの機能は、チーム間で分散化されたデータ(テスト)エンジニアリングをスケールすることを可能にします.
    (データスタック:Fivetran , BigQuery , dbt , DBTクラウドLooker , Datafold )

    ✅ REQ - 2 :テストを実装する簡単なSQL。


    次のイメージは、典型的なデータ品質テストを示します.この設定ではスラックチャンネルを指定しますが、対応するチームは失敗したテストを解決するのに役立つでしょう.
    SQLステートメントは、間違った行の問い合わせ方法を説明します.クエリが0行以上を返す場合、これらの不正な行はスラックチャネルで報告され、すぐに解決されます.
    {{ config(
        enabled=True,
        tags= ['fleet_alert', 'fleet_intelligence_data_quality_alerts'],
        description= 'Test to verify VIN aligning between invoice and fleet car'
    ) }}
    
    WITH cars AS (
        SELECT
            cars.vin AS fleet_car_vin,
            invoices.invoice_vin AS invoice_vin,
            cars.lookup_financing_partner
        FROM cars
        LEFT JOIN invoices
            ON cars.finn_car_unit_id = invoices.finn_car_unit_id
    )
    
    SELECT *
    FROM cars
    WHERE invoice_vin != fleet_car_vin
    

    ✅ REQ - 3 :データ品質警告サービスは警告を出す


    サービスmake DBTのクラウドAPIを介して頻繁に新しいテスト結果を探し、データウェアハウスからの対応する故障(任意の)行を取得し、適切なスラックチャネルに送信します.失敗した行は手動でデータソースでチェックされ、ここからクリーンアップされます.

    ✅ テスト出力の毎日のスナップショットは、時間をかけて追跡を可能にします


    我々は、テスト結果の毎日のスナップショットを取り、集計し、送信Looker 適切なチームへのダッシュボード.

    読書ありがとう!💜


    あなたが詳細に興味があるならば、ここでコメントするか、コメントするのを遠慮なく感じてください.
    投稿者と社会的な関連
    データプロダクトマネージャー
    シャフ-データエンジニア:
    Philippic -シニアデータプロダクトマネージャー:
    アレックス- VPデータ工学
    技術リードデータ工学
    次の手順
  • オープンソース実装
  • のデータスタックFINN
  • もっと記事FINN エンジニア


  • ところで、我々は雇用している!(


  • .

  • ドイツで.

  • Top reviews on Glassdoor .
  • トン信じられないほどの人々を学ぶ.🚀
  • おかげで、そして、これの草稿を読んでください!