各レシピの最大、最小、平均実行時間の算出

KeijiY
Dataiker
各レシピの最大、最小、平均実行時間の算出

この記事では、各レシピ(正確には、単一データセットの単一パーティションに対するレシピ実行であるアクティビティ)の最大、最小、平均実行時間を算出する方法をご紹介します。

Dataiku DSS では、internal stats データセットという、Dataiku DSS インスタンスの内部情報を取得できるデータセットが提供されています。このデータセットの種類の一つとして、 Object states という、各オブジェクト(データセットやモデルなど)の状態の履歴を取得できるものが提供されています。この情報を利用することで、以下のように、各アクティビティの最大、最小、平均実行時間を算出することができます。

1. Internal stats データセットの作成

フローのページより "+ DATASET" > "Internal" > "Internal stats" を選択します。

Screen Shot 2022-02-18 at 1.18.48.png

遷移先の "New Internal stats dataset" のページにて、"Type" に "Object states" を選択して "UPDATE PREVIEW" ボタンをクリックします。その後、"New dataset name" にデータセット名を入力して "CREATE" ボタンをクリックします。

Screen Shot 2022-02-18 at 1.22.45.png

以下のような、各オブジェクトの各パーティションに対するアクティビティの情報が格納されている internal stats データセットが作成されます。

Screen Shot 2022-02-18 at 1.28.28.png

2. データの整形加工

次に、Prepare レシピを作成して、前述のステップで作成した internal stats データセットのデータを整形加工します。フローのページより、作成した internal stats データセットを選択した状態で "Prepare" をクリックします。

Screen Shot 2022-02-18 at 1.31.11.png

表示されるモーダルウインドウにて、"Output dataset" に任意の情報を入力し、"CREATE RECIPE" をクリックします。

Screen Shot 2022-02-18 at 1.36.42.png

Prepare レシピが表示されます。

Screen Shot 2022-02-18 at 1.43.51.png

まずは、各プロジェクトの各アクティビティを一意に識別するための ID を生成します。internal stats データセットの "project_key" カラムと "activity_id" カラムの値を連結することで、この ID を作成することができます。"+ ADD A NEW STEP" をクリックし、"Concatenate columns" ステップを追加します。

Screen Shot 2022-02-18 at 1.45.20.png

追加されたステップに以下の通り情報を入力し、"project_key" カラムと "activity_id" カラムの値を連結した値を保持する "project_activity_id" カラムを追加します。

- Columns to concatenate: "project_key" と "activity_id"
- Delimiter to use: _ (アンダースコア)
- Output column: "project_activity_id"

Screen Shot 2022-02-18 at 1.49.25.png

次に、データセットのデータが正常終了したアクティビティの情報のみとなるよう、"outcome" カラムの値でフィルタリングを行います。"outcome" > "Filter" をクリックします。

Screen Shot 2022-02-18 at 1.55.19.png

表示されるメニューで、"SUCCESS" のみをチェックして "+ ADD AS A STEP" ボタンをクリックします。

Screen Shot 2022-02-18 at 1.59.12.png

最後に、各アクティビティの処理時間を算出します。データセットに、各アクティビティの開始時間、終了時間がそれぞれ格納されている "time_start", "time_end" カラムがあるため、これらのカラムの値を使用して、各アクティビティの処理時間を算出します。"time_start" > "Compute time since" をクリックします。

Screen Shot 2022-02-18 at 2.04.51.png

追加されたステップに以下の通り情報を入力し、各アクティビティの処理時間(秒単位)を保持する "duration" カラムを追加します。

- Time since column: "time_start"
- until: "Another date column"
- Other column: "time_end"
- Output time unit: "Seconds"
- Output column: "duration"

Screen Shot 2022-02-18 at 2.08.27.png

データの整形加工を行うステップの定義が完了したため、"RUN" ボタンをクリックして Prepare レシピを実行します。

Screen Shot 2022-02-18 at 2.13.36.png

データを整形加工した結果が保持されるデータセットが作成されました。

Screen Shot 2022-02-18 at 2.16.02.png

3. 各アクティビティの最大、最小、平均実行時間の算出

最後に、整形加工したデータを集計し、各プロジェクトの各アクティビティの最大、最小、平均実行時間を算出します。フローのページにて、整形加工したデータが格納されているデータセットを選択した状態で "Group" をクリックします。

Screen Shot 2022-02-18 at 2.18.13.png

表示されるモーダルウインドウにて、"Group By" に "project_activity_id" を選択し、"Output dataset" に任意の情報を入力して "CREATE RECIPE" をクリックします。

Screen Shot 2022-02-18 at 2.19.55.png

表示される Group レシピのページにて、"duration" の "Min", "Max", "Avg" をクリックします。その後、 "RUN" ボタンをクリックして Group レシピを実行します。

Screen Shot 2022-02-18 at 2.24.23.png

各プロジェクトの各アクティビティについて、最大、最小、平均実行時間と実行回数が算出され、その結果が格納されるデータセットが作成されます。

Screen Shot 2022-02-18 at 2.27.51.png

このデータセットの "Charts" タブにてグラフを作成することで、例えば、平均実行時間の降順にアクティビティを並べて可視化したりすることができます。

Screen Shot 2022-02-18 at 2.36.35.png

この記事では、Dataiku DSS インスタンスの内部情報を取得できる internal stats データセットのデータを使用して、各レシピ(正確には、単一データセットの単一パーティションに対するレシピ実行であるアクティビティ )の最大、最小、平均実行時間を算出する方法をご紹介しました。また、今回ご紹介したように、internal stats データセットのデータを使用することで、Dataiku DSS の利用状況の可視化、モニタリングを、Dataiku DSS を使用して効率的に行うことができますので、もしよろしければ internal stats データセットも効果的にご活用いただければと思います。Internal stats データセットの詳細はこちらの Dataiku DSS ドキュメント https://doc.dataiku.com/dss/latest/connecting/internal-stats.html をご参照ください。

0 Replies