各レシピの最大、最小、平均実行時間の算出
この記事では、各レシピ(正確には、単一データセットの単一パーティションに対するレシピ実行であるアクティビティ)の最大、最小、平均実行時間を算出する方法をご紹介します。
Dataiku DSS では、internal stats データセットという、Dataiku DSS インスタンスの内部情報を取得できるデータセットが提供されています。このデータセットの種類の一つとして、 Object states という、各オブジェクト(データセットやモデルなど)の状態の履歴を取得できるものが提供されています。この情報を利用することで、以下のように、各アクティビティの最大、最小、平均実行時間を算出することができます。
1. Internal stats データセットの作成
フローのページより "+ DATASET" > "Internal" > "Internal stats" を選択します。
遷移先の "New Internal stats dataset" のページにて、"Type" に "Object states" を選択して "UPDATE PREVIEW" ボタンをクリックします。その後、"New dataset name" にデータセット名を入力して "CREATE" ボタンをクリックします。
以下のような、各オブジェクトの各パーティションに対するアクティビティの情報が格納されている internal stats データセットが作成されます。
2. データの整形加工
次に、Prepare レシピを作成して、前述のステップで作成した internal stats データセットのデータを整形加工します。フローのページより、作成した internal stats データセットを選択した状態で "Prepare" をクリックします。
表示されるモーダルウインドウにて、"Output dataset" に任意の情報を入力し、"CREATE RECIPE" をクリックします。
Prepare レシピが表示されます。
まずは、各プロジェクトの各アクティビティを一意に識別するための ID を生成します。internal stats データセットの "project_key" カラムと "activity_id" カラムの値を連結することで、この ID を作成することができます。"+ ADD A NEW STEP" をクリックし、"Concatenate columns" ステップを追加します。
追加されたステップに以下の通り情報を入力し、"project_key" カラムと "activity_id" カラムの値を連結した値を保持する "project_activity_id" カラムを追加します。
- Columns to concatenate: "project_key" と "activity_id"
- Delimiter to use: _ (アンダースコア)
- Output column: "project_activity_id"
次に、データセットのデータが正常終了したアクティビティの情報のみとなるよう、"outcome" カラムの値でフィルタリングを行います。"outcome" > "Filter" をクリックします。
表示されるメニューで、"SUCCESS" のみをチェックして "+ ADD AS A STEP" ボタンをクリックします。
最後に、各アクティビティの処理時間を算出します。データセットに、各アクティビティの開始時間、終了時間がそれぞれ格納されている "time_start", "time_end" カラムがあるため、これらのカラムの値を使用して、各アクティビティの処理時間を算出します。"time_start" > "Compute time since" をクリックします。
追加されたステップに以下の通り情報を入力し、各アクティビティの処理時間(秒単位)を保持する "duration" カラムを追加します。
- Time since column: "time_start"
- until: "Another date column"
- Other column: "time_end"
- Output time unit: "Seconds"
- Output column: "duration"
データの整形加工を行うステップの定義が完了したため、"RUN" ボタンをクリックして Prepare レシピを実行します。
データを整形加工した結果が保持されるデータセットが作成されました。
3. 各アクティビティの最大、最小、平均実行時間の算出
最後に、整形加工したデータを集計し、各プロジェクトの各アクティビティの最大、最小、平均実行時間を算出します。フローのページにて、整形加工したデータが格納されているデータセットを選択した状態で "Group" をクリックします。
表示されるモーダルウインドウにて、"Group By" に "project_activity_id" を選択し、"Output dataset" に任意の情報を入力して "CREATE RECIPE" をクリックします。
表示される Group レシピのページにて、"duration" の "Min", "Max", "Avg" をクリックします。その後、 "RUN" ボタンをクリックして Group レシピを実行します。
各プロジェクトの各アクティビティについて、最大、最小、平均実行時間と実行回数が算出され、その結果が格納されるデータセットが作成されます。
このデータセットの "Charts" タブにてグラフを作成することで、例えば、平均実行時間の降順にアクティビティを並べて可視化したりすることができます。
この記事では、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 をご参照ください。