データ基盤

Dagsterとは|30日ぶんの誤りに73.0時間かけて、うち71.0時間が無駄だった

処理ではなく何を単位にするのか誤りが見つかったとき何をやり直すのか待ち受けの間隔はどう決めるのか

3年ぶん動かした処理に、直近30日ぶんの誤りが見つかりました。全部を作り直すと73.0時間かかります。

日ごとに分けてあれば2.0時間で済みます。差の71.0時間は、正しい結果を作り直していた時間です。

この記事の要点

  • 単位はできあがるもの
  • 30日ぶんなら2.0時間
  • 分けないと73.0時間
  • 間隔15分で遅れ7.4分

処理ではなく、できあがるものを書く

作る手順の並びではなく、存在すべき結果を宣言します。手順はその付属物になります。

Dagsterが単位にするのはできあがるものです。出典はこれを次のように定めています。

資産の定義とは、存在すべき資産と、それをどう作り、どう更新するかを、コードで記述したものであるという言い方です。

主語が結果になっています。「この表があるべきで、作り方はこう」という順で書きます。

何が変わるか

処理を単位にすると、依存関係は処理と処理のあいだに引かれます。結果を単位にすると、依存関係は結果と結果のあいだに引かれます。

  1. どの結果が古いかが分かる。上流が更新された結果を追える
  2. 誰が使っているかが分かる。結果から下流をたどれる
  3. やり直す範囲が決まる。誤った結果とその下流だけでよい
  4. 結果の場所が定義に書いてある。どこを見ればよいか迷わない

3番目が、あとで測る作り直しの話につながります。やり直す範囲が自動的に決まるという性質です。

書き方の代償

宣言にすると、途中の状態を書く場所がなくなります。結果として残らないものは、この形では表せません。

そのため一時ファイルや中間の集計も、資産として名前を付けることになります。数が増えて、一覧が長くなります

処理の並びそのものを単位にする書き方はApache Airflowの記事で扱っています。どちらが良いかではなく、依存を引く場所が違います。

出典Dagster 公式ドキュメント「Assets」(Build guides)2026-08-18 確認
An asset definition is a description, in code, of an asset that should exist and how to produce and update that asset.
原文Dagster 公式ドキュメント「Assets」(Build guides) この内容の有効期限2027-02-18

30日ぶんの誤りに73.0時間かけて、うち71.0時間が無駄だった

結果が日ごとに分かれていれば、誤った日だけを作り直せます。分かれていなければ全部です。

Dagsterで扱う資産は、保管された物です。出典もそう定めています。

資産とは、表・ファイル・保存された機械学習の模型といった、永続的な保管先にある物であるという説明です。

物である以上、分けて持てます。日ごとに分けた場合と分けなかった場合を測りました。

誤りが見つかった範囲を変える

1日1回動かす処理を3年ぶん回し、あとから変換の誤りが見つかった場面です。1日ぶんの作り直しに4分かかるとしました。

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

右の列はどの行でも73.0時間です。誤りが1日ぶんでも3年ぶんでも変わりません。

左の列だけが範囲に比例します。30日ぶんなら2.0時間で、36分の1です。

差は正しい結果の作り直し

30日ぶんの行の差71.0時間は、誤っていない1065日ぶんを作り直した時間です。

この時間は成果を生みません。作り直す前と同じ結果が、同じ場所に書き戻されるだけです。

並ぶのは最下行だけです。3年ぶん全部が誤っていた場合に限って、どちらも73.0時間になります。

分けていないと、直す量に関係なく全部を作り直す。

全部作り直す 73.0時間を100%とする(合計 73時間)誤っていた30日ぶん97.3%誤っていなかった1065日ぶん日ごとに分けてあれば、上の2.0時間だけで済む。下の71.0時間は同じ結果を書き戻すだけの時間。
図1 ── 30日ぶんの誤りを、全部作り直したときの内訳
出典Dagster 公式ドキュメント「Assets」(Build guides)2026-08-18 確認
An asset is an object in persistent storage, such as a table, file, or persisted machine learning model.
原文Dagster 公式ドキュメント「Assets」(Build guides) この内容の有効期限2027-02-18

待ち受けを1分ごとにしても、遅れは2分しか縮まない

作り始める合図をどう取るかで、見に行く回数が桁で変わります。遅れの縮み方はそこまで急ではありません。

Dagsterで結果を作る行為には名前がついています。資産を実体化するとは、その関数を動かし、結果を永続的な保管先に保存する行為であるというのが出典の定めです。

問題はいつ動かすかです。上流のファイルが届いたら動かす、という形にすると待ち受けが要ります。

見に行く間隔を変える

上流のファイルが180分の幅でばらついて届くとし、決めた間隔で見に行きました。

text
上流のファイルが届くのを待つ。届く時刻は 180分の幅でばらつく
決めた間隔で見に行く。届いていれば次へ進む

見に行く間隔  気づくまでの遅れ(平均)  99%点  見に行った回数(平均)
1分ごと                            0.5分     1.0分                   81.1回
5分ごと                            2.5分     5.0分                   16.6回
15分ごと                           7.4分    14.8分                    5.9回
30分ごと                          15.2分    29.7分                    3.2回
60分ごと                          31.5分    59.4分                    1.9回

15分ごとから1分ごとにすると、遅れは7.4分から0.5分になります。縮むのは6.9分です。

見に行く回数は5.9回から81.1回へ、13.7倍になります。ここが釣り合っていません。

どこで折り合うか

遅れは間隔のおよそ半分になります。間隔を半分にすれば遅れも半分で、それ以上の効きはありません。

回数のほうは間隔に反比例します。短くするほど、増え方が急になります

後続に3時間かかる処理なら、7.4分の遅れは全体の4%です。後続の長さと比べて決めるのが実際的でした。

遅れを縮めるほど、見に行く回数が急に増える。

気づくまでの遅れ(分)見に行った回数(回)→34.789.260分ごと30分ごと15分ごと5分ごと1分ごと180分の幅で届く場合を3000回試した平均。左下に寄るほど、少ない回数で早く気づける。
図2 ── 見に行った回数と、気づくまでの遅れ
余談 この計測での注意

届く時刻は180分の幅で一様に置きました。実際には特定の時刻に集中することが多く、その場合は集中する時刻の直後だけ細かく見る形が有利になります。作り直しの4分という値も置いたものです。ここで見せているのは、遅れは間隔に比例して縮むだけなのに、回数は反比例で増えるという関係です。

出典Dagster 公式ドキュメント「Assets」(Build guides)2026-08-18 確認
Materializing an asset is the act of running its function and saving the results to persistent storage.
原文Dagster 公式ドキュメント「Assets」(Build guides) この内容の有効期限2027-02-18

よくある質問

Dagsterは何を単位にしますか
できあがるものです。処理そのものではなく、保管される表やファイルを宣言し、その作り方を添えます。
誤りが見つかったときは何をやり直しますか
誤りが入っていた範囲だけです。日ごとに分けてあれば、30日ぶんの誤りなら30日ぶんで済みます。
分けていないとどうなりますか
全部を作り直します。この計測では3年ぶんで73.0時間かかり、うち71.0時間が正しい結果の作り直しでした。
待ち受けの間隔はどう決めますか
遅れと見に行く回数の釣り合いです。15分ごとなら平均7.4分の遅れで、回数は1分ごとの13分の1になりました。

まとめ

  • 単位は保管される物
  • 作り方を宣言として書く
  • 分ければ必要な分だけ直せる
  • 間隔は遅れとの釣り合い

今日から始められること

  1. いまの処理が何を作っているか書き出す
  2. その結果が日や月で分かれているか確かめる
  3. 分かれていない結果の作り直し時間を測る
  4. 待ち受けの間隔と許せる遅れを並べる

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

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

出品の仕組みを見る