データ基盤

dbtとは|1つ直すと巻き込むのは中央値6個、それでも99%点は121個だった

1つ直すと何個が作り直しになるのか増分にするとどれだけ速いのか誤りを直すとき何が要るのか

300個のモデルで1つ直したとき、巻き込むのは中央値6個、2分12秒でした。

ところが99%点は121個で44分22秒です。同じ操作なのに20倍の開きがあります。

この記事の要点

  • 中央値は6個・2分12秒
  • 99%点は121個・44分22秒
  • 増分にすると27.4倍
  • 日ごとに分ければ2.0時間

巻き込むのは中央値6個、99%点は121個

1つ直せば下流すべてに伝わります。その範囲は、どの層を触ったかで20倍変わります。

dbtでは、直した内容が下流に伝わります。公式はモデルを一度直せば、その変更は依存するすべてに伝わるので、書き直すことなく正典となる業務の論理を出せると述べています。

伝わる範囲はどれくらいなのか。300通りすべてを試して数えました。

1つずつ直してみる

text
モデル 300個・6層。1つ直すと、それを参照している側をすべて作り直す
1個あたり 22秒として、300通りすべてを試した結果

やり方                    作り直すモデル      かかる時間
全部作り直す                              300個          110分0秒
下流だけ(中央値)                             6個           2分12秒
下流だけ(平均)                           15.9個           5分50秒
下流だけ(90%点)                           44個          16分8秒
下流だけ(99%点)                          121個          44分22秒

半分の変更では6個、2分12秒で終わります。全部作り直す110分に比べれば軽いものです。

しかし99%点は121個で44分22秒です。同じ「1つ直す」なのに、20倍の開きがあります。

どの層を触ったかで決まる

text
※ 下の層にあるモデルほど、直したときの巻き込みが大きくなる。
※ 中央値と99%点が離れているので、平均で見積もると外れる。

平均は15.9個ですが、中央値は6個です。この2つが離れているとき、平均は使えません

下の層は少数です。その少数を直す日だけ、ほぼ全部の作り直しに近づきます

普段は軽い。ただし下の層を触った日だけ重い。

単位: 個全部300個99%点121個90%点44個平均15.9個中央値6個モデル300個・6層での実測。時間は順に2分12秒・5分50秒・16分8秒・44分22秒・110分0秒。
図1 ── 1つ直したときに作り直すモデルの数
出典dbt 公式ドキュメント「What is dbt?」2026-08-18 確認
Change a model once and the change propagates to all its dependencies, so you can publish canonical business logic without reimplementing it.
原文dbt 公式ドキュメント「What is dbt?」 この内容の有効期限2027-02-18

増えた分だけ処理すると27.4倍速い

毎日の作り直しが費用の芯です。増える割合が小さいほど、増分にする利点が大きくなります。

dbtは、置き場の生データを作り替えます。公式はdbtは置き場の生データを、信頼できるデータ製品へと作り替えると述べています。

作り替えは毎日行います。全量と増分でどれだけ違うのか実際に計算して比べました。

1日に増える割合を変える

text
元の表 5億行。1秒に 40万行を処理できる
増えた分だけを処理する場合は、毎回 45秒の下ごしらえがかかる

1日に増える割合      全量(1回)      増分(1回)      比      1年ぶんの合計時間の比
         0.05%           20.8分            0.8分     27.4倍                   27.4倍
         0.20%           20.8分            0.8分     26.3倍                   26.3倍
         1.00%           20.8分            1.0分     21.7倍                   21.7倍
         5.00%           20.8分            1.8分     11.6倍                   11.6倍

1日0.05%しか増えないなら、増分は27.4倍速く終わります。0.8分と20.8分です。

5%まで増えると11.6倍まで縮みます。増える割合が大きいほど、全量との差は小さくなります

下ごしらえが底になる

0.05%と0.20%は、どちらも0.8分です。処理する行数は4倍違うのに同じ時間になりました。

45秒の下ごしらえが効いています。ここより速くはならないので、細かく刻んでも意味がありません

処理する量そのものを減らす手はParquetの記事で扱っていて、読む項目を絞ると量の比がそのまま出ます。

出典dbt 公式ドキュメント「What is dbt?」2026-08-18 確認
dbt transforms raw warehouse data into trusted data products.
原文dbt 公式ドキュメント「What is dbt?」 この内容の有効期限2027-02-18

日ごとに分けてあれば、直しは2.0時間で済む

誤りが見つかったときに効きます。分けていなければ、1日ぶんの誤りでも全部を作り直します。

dbtの動かす側は、依存の図をたどって実行します。公式はdbtの動力部は、企画をまとめ上げ、作り替えの図を実行し、付随する情報を生み出すと述べています。

誤りが見つかったとき、作り直す範囲が問題になります。実際に比べて数えました。

誤りの期間を変える

text
1日1回動かす処理。1日ぶんの作り直しに 4分かかる
誤りが見つかったとき、日ごとに分けてあれば必要な日だけ、分けていなければ全部を作り直す

誤りが入っていた期間  日ごとに分ける(時間)  全部作り直す(時間)  差
30日ぶん                                  2.0                  73.0    71.0
180日ぶん                                12.0                  73.0    61.0
365日ぶん                                24.3                  73.0    48.7
1095日ぶん                               73.0                  73.0     0.0

30日ぶんの誤りなら、分けてあれば2.0時間です。分けていなければ73.0時間かかります。

3年ぶん全部が誤っていた場合だけ、両者は同じになります。それ以外では必ず分けたほうが軽く済みます

決めるのは作るとき

この分け方は、誤りが見つかってからでは変えられません。作るときに決めておく必要があります

最初の節で見た層の深さも同じです。あとから浅くするのは、作り直しとほぼ同じ手間になります。

余談 この計測での注意

3つの計測はいずれも手元で書いた模型で、実際のdbtを動かしたものではありません。モデル300個の依存関係は生成したもので、実際の構成しだいで中央値と99%点の開きは変わります。1個22秒や1秒40万行、45秒の下ごしらえはすべて置いた値です。増える割合も一定と置いており、日によるばらつきは含めていません。ここで見せているのは、同じ「1つ直す」でも巻き込む範囲が20倍変わるという点と、増分にする利点は増える割合で決まるという点の2つです。

出典dbt 公式ドキュメント「What is dbt?」2026-08-18 確認
The dbt engine compiles your project, executes your transformation graph, and produces metadata.
原文dbt 公式ドキュメント「What is dbt?」 この内容の有効期限2027-02-18

よくある質問

dbtとは何ですか
置き場の生データを、信頼できるデータ製品に作り替える仕組みです。SQLのselectを書くだけで済むと説明されています。
1つ直すと下流はどうなりますか
すべてに伝わります。300個のうち巻き込むのは中央値6個でしたが、99%点では121個でした。
増分にするとどれだけ速いですか
1日0.05%増える条件で27.4倍でした。増える割合が大きいほど、差は縮まります。
誤りを直すときはどうしますか
日ごとに分けてあれば必要な日だけで済みます。30日ぶんなら2.0時間、分けていなければ73.0時間でした。

まとめ

  • 変更は下流に伝わる
  • 巻き込む数は層で決まる
  • 増分は割合しだい
  • 分けておくと直しが軽い

今日から始められること

  1. モデルの層の数を数える
  2. 下の層にあるモデルを洗い出す
  3. 1日に増える割合を測る
  4. 日ごとに分けられているか確かめる

実務で組んだdbtのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る