3年ぶん動かした処理に、直近30日ぶんの誤りが見つかりました。全部を作り直すと73.0時間かかります。
日ごとに分けてあれば2.0時間で済みます。差の71.0時間は、正しい結果を作り直していた時間です。
作る手順の並びではなく、存在すべき結果を宣言します。手順はその付属物になります。
Dagsterが単位にするのはできあがるものです。出典はこれを次のように定めています。
資産の定義とは、存在すべき資産と、それをどう作り、どう更新するかを、コードで記述したものであるという言い方です。
主語が結果になっています。「この表があるべきで、作り方はこう」という順で書きます。
処理を単位にすると、依存関係は処理と処理のあいだに引かれます。結果を単位にすると、依存関係は結果と結果のあいだに引かれます。
3番目が、あとで測る作り直しの話につながります。やり直す範囲が自動的に決まるという性質です。
宣言にすると、途中の状態を書く場所がなくなります。結果として残らないものは、この形では表せません。
そのため一時ファイルや中間の集計も、資産として名前を付けることになります。数が増えて、一覧が長くなります。
処理の並びそのものを単位にする書き方はApache Airflowの記事で扱っています。どちらが良いかではなく、依存を引く場所が違います。
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
結果が日ごとに分かれていれば、誤った日だけを作り直せます。分かれていなければ全部です。
Dagsterで扱う資産は、保管された物です。出典もそう定めています。
資産とは、表・ファイル・保存された機械学習の模型といった、永続的な保管先にある物であるという説明です。
物である以上、分けて持てます。日ごとに分けた場合と分けなかった場合を測りました。
1日1回動かす処理を3年ぶん回し、あとから変換の誤りが見つかった場面です。1日ぶんの作り直しに4分かかるとしました。
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時間になります。
分けていないと、直す量に関係なく全部を作り直す。
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
作り始める合図をどう取るかで、見に行く回数が桁で変わります。遅れの縮み方はそこまで急ではありません。
Dagsterで結果を作る行為には名前がついています。資産を実体化するとは、その関数を動かし、結果を永続的な保管先に保存する行為であるというのが出典の定めです。
問題はいつ動かすかです。上流のファイルが届いたら動かす、という形にすると待ち受けが要ります。
上流のファイルが180分の幅でばらついて届くとし、決めた間隔で見に行きました。
上流のファイルが届くのを待つ。届く時刻は 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%です。後続の長さと比べて決めるのが実際的でした。
遅れを縮めるほど、見に行く回数が急に増える。
届く時刻は180分の幅で一様に置きました。実際には特定の時刻に集中することが多く、その場合は集中する時刻の直後だけ細かく見る形が有利になります。作り直しの4分という値も置いたものです。ここで見せているのは、遅れは間隔に比例して縮むだけなのに、回数は反比例で増えるという関係です。
Materializing an asset is the act of running its function and saving the results to persistent storage.原文Dagster 公式ドキュメント「Assets」(Build guides) この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る