Slide 1

Slide 1 text

dbt test + Elementaryによって Data Observability を高める CARTA HOLDINGS Inc.

Slide 2

Slide 2 text

● snowflake + dbtを中心としたデータ基盤に対して、Data Observabilityを高めるための施策を 行った話 概要 CARTA HOLDINGS Inc. fluctとfluctが扱うデータについて 01 Data Observabilityについて 02 具体的に行った施策について 03 今後の展望 04 dbt testの追加 / Elementary OSS, Cloudの導入

Slide 3

Slide 3 text

Data Observabilityを高めるために実践した具体的な施策の話 話すこと CARTA HOLDINGS Inc.

Slide 4

Slide 4 text

Data Observabilityとは?みたいな抽象的な話 話さないこと CARTA HOLDINGS Inc.

Slide 5

Slide 5 text

自己紹介 CARTA HOLDINGS Inc. yanyan CARTA HOLDINGS fluct プロダクト開発本部 エンジニア @YangYang_pareto ストリートファイター6 / HoYoverse / キーボード

Slide 6

Slide 6 text

fluctとfluctが扱うデータについて CARTA HOLDINGS Inc. https://techblog.cartaholdings.co.jp/entry/programmatic-ad-for-advertisers-dsps メディア向けのインターネット広告 配信プラットフォーム 広告配信に関するデータを扱う インプレッション数 クリック数 メディアの収益 自社計測のデータも、他社計測のデータもある

Slide 7

Slide 7 text

1. 日々のレポーティング a. メディアやfluct社内の人がインプレッション数や収益をウォッチしている 2. 支払金額の計算 a. fluctからメディアに対して広告配信で発生した収益を支払っている 3. 配信制御 a. 広告在庫の配信比率を過去の実績から自動調整 b. 予算消化のペーシング etc… fluctのデータの利用用途 CARTA HOLDINGS Inc. 人々の日々の営みから、ビジネスの重要な部分まで様々なところで使われている

Slide 8

Slide 8 text

fluctのデータ基盤 CARTA HOLDINGS Inc.

Slide 9

Slide 9 text

fluctのデータ基盤の課題 CARTA HOLDINGS Inc. データの問題に素早く気付けないこと ECSからのエラー通知とかdbtのエラーとかは通知を飛ばすようになっていたが、 データの問題はそれだけでは気付けないことがある e.g.) ● 普段なら10分ごとにロードされてくるログが1時間くらいロードされてな い ● dbtの加工のロジックミスによってファントラップが起き、インプレッ ション数が倍になっちゃった 上記のような問題に素早く気づく仕組みはなかったので、 メディアや社内のレポートを見てる人からの指摘で問題に気づくことが多かった

Slide 10

Slide 10 text

問題に素早く気付けないことの何が問題なのか CARTA HOLDINGS Inc. データの問題は気づくのが遅れるほど修正が必要な範囲が広がる 問題の原因を解消するだけではなく、問題によっておかしくなってしまったデータ も直す必要があるから 原因の解消に時間がかかるほど問題の影響を受けたデータは増えていくので、直す 必要があるデータもその分増える

Slide 11

Slide 11 text

問題に素早く気付けないことの何が問題なのか CARTA HOLDINGS Inc. 復旧に時間がかかるほど、問題が及ぼす影響の深刻度が増していく 数十分や1時間程度であれば大した影響はないかもしれない 問題が数日続くようなレベルになっていくと、ユーザーからのデータに対する信頼 が損なわれてしまったり、データに基づいた意思決定がしづらくなってしまう可能 性がある データの問題に素早く気付き、fluctのデータの信頼性を担保したい!!

Slide 12

Slide 12 text

Data Observability CARTA HOLDINGS Inc. What is Data Observability? 5 Key Pillars To Know の定義を引用 > Data observability provides full visibility into the health of your data AND data systems so > you are the first to know when the data is wrong, what broke, and how to fix it. Data Observabilityはデータとデータを扱うシステムの状態を可視化し、データが間違ってい るときに何が壊れているのか、どうやって直せばいいのかをいち早く知ることができる。 Data Observabilityを高めることで、データの問題に素早く気付けないという課題 に立ち向かえる!

Slide 13

Slide 13 text

● Freshness: データの鮮度 ● Volume: データ量 ● Quality: データの品質 ● Schema: データのスキーマ ● Lineage: リネージ 5本の柱 CARTA HOLDINGS Inc. Data Observabilityのために具体的にどういう観点を観測すればよいか

Slide 14

Slide 14 text

● Freshness: データの鮮度 ○ 想定よりもデータの取り込みや加工が遅くなってしまっていないか ● Volume: データ量 ○ データ量が意図しない増減をしていないか ● Quality: データの品質 ○ あるカラムが取りうる値は想定した範囲に収まっているか ○ プライマリキーがあるようなテーブルではレコードのユニーク性が担保されているか ● Schema: データのスキーマ ○ データ構造が変化したときに気づけるか ● Lineage ○ データソースやテーブルの依存関係を表したもの 5本の柱 CARTA HOLDINGS Inc.

Slide 15

Slide 15 text

Data Observabilityを高めるために実践したこと CARTA HOLDINGS Inc. fluctのデータ基盤では Freshness / Volume / Quality の3つの観点でのObservability が足りないと考え、それぞれObservabilityを高めるためのアプローチを実践する Schema / Lineage は現状の仕組みで十分と判断して頑張らないことにした ● Schema ○ 生データから必要な値を取り出して型をつけたり、カラム名をつける dbtのレイヤーがある ○ データ構造に破壊的変更が起きたらそのレイヤーの加工が失敗して気付 ける ● Lineage ○ dbt Cloud上でdbt modelのリネージが見れる

Slide 16

Slide 16 text

dbt testの追加 CARTA HOLDINGS Inc. dbtはmodelやsourceに対してテストが書ける (公式ドキュメント) fluctでは、一部のモデルに対してaccepted_valuesや加工ロジックのテストを書く程 度で、Observabilityを高めるにはテストを足す必要があると判断 ● source freshness test ● not null test の2つをまずは追加することにした

Slide 17

Slide 17 text

source freshness test CARTA HOLDINGS Inc. dbtで加工する前のテーブル (= source) に対する鮮度のテスト fluctにおけるsourceの種類 ● S3からロードされてきた生ログや無加工の他社のデータが入っているテーブル ● ディメンションとして使うために業務システムのDBからロードされたテーブル 前者のデータは広告の配信実績なので、sourceに新鮮なデータが入ってないというこ とはユーザーに提供するレポートが遅延していることを意味する レポートの遅延はfluctにとっていち早く気づきたい問題 今回は前者のテーブルに対してfreshness testを足した

Slide 18

Slide 18 text

Why source freshness test? CARTA HOLDINGS Inc. Extractor / Loaderの問題か、Transformerの問題かを素早く切り分けることができる

Slide 19

Slide 19 text

not null test CARTA HOLDINGS Inc. nullを許容したくないカラムに対してnullがないことをテストする あらゆるモデルでやろうと思えばできるが、きりがない nullだと後段の加工や集計で困るレイヤーとカラムに絞ることにした ● sourceから必要なカラムを抜き出したり、最低限のリネームをするレイヤー ○ ここでnot nullを担保できれば、後段の加工の際にnullで困らない

Slide 20

Slide 20 text

Elementary OSS + Cloud の導入 CARTA HOLDINGS Inc. データやデータ基盤の状態を1つの場所でまとめて見れるData Observability ツール OSS: Data Observabilityを高めるためのテストを簡単に追加できるdbt package Cloud: テスト結果やリネージを一覧できるダッシュボードのホスティングや、ア ラート、自動異常検知ができる

Slide 21

Slide 21 text

Elementaryを導入した理由 CARTA HOLDINGS Inc. ● 他のData Observabilityツールと比べて安い ● dbt nativeなので組み込みやすい ● 社内で導入事例があるため知見共有できる ● automated anomaly detectionを使いたかった Elementary以外にもSaaSのData Observabilityツールはいくつかあったが...

Slide 22

Slide 22 text

automated anomaly detection CARTA HOLDINGS Inc. Cloud版まで導入をした大きな理由の一つ anomaly test自体はOSS版でも書くことができる (Docs) しかし、人間が手動で異常とはどんな状態かを定義するのは難しい 設定する必要のあるパラメータが多く、職人芸になりがち モデルごとに設定するのも現実的ではない いい感じに勝手に異常検知をしてほしい!!!

Slide 23

Slide 23 text

Elementary Cloudのダッシュボード CARTA HOLDINGS Inc. データの状態を一覧できる ● modelやtestの実行状況 ● freshnessやvolumeの状態 詳細な情報に飛ぶこともできる

Slide 24

Slide 24 text

automated volume testの具体例 CARTA HOLDINGS Inc. volumeに関するautomated anomaly test volumeの推移を見ることができる

Slide 25

Slide 25 text

まとめ CARTA HOLDINGS Inc. dbt testの追加やElementaryの導入によってData Observabilityの向上を目指した話 ● dbt testによってfreshness / quality の観点での問題に素早く気付けるように ● Elementaryの導入によってデータの状態を一覧できるようになったり、 freshness / volume の異常検知ができるようになった

Slide 26

Slide 26 text

今後の展望 CARTA HOLDINGS Inc. レコード数以外のvolume anomaly detection 一定期間のインプレッション数の合計のような、ファクトの合計に対する異常検知もしたい qualityを更に担保できるようなテストの追加 今回はnot nullしか書いてないが、uniquenessとか取りうる値の分布を見たりとかやれること はまだある Data Observabilityを高める余地が残っている

Slide 27

Slide 27 text

宣伝 CARTA HOLDINGS Inc. 今回の話はCARTAのテックブログに掲載されています https://techblog.cartaholdings.co.jp/entry/dbt-elementary-data-observability ElementaryのCustomer Storyとして英語に翻訳されたバージョンを載せてもらいま した https://www.elementary-data.com/customer-stories/improving-data-observabilit y-with-dbt-tests-and-elementary