- はじめる前に
- 基本情報
- Integrations
- プロセス アプリを使用する
- アプリを作成する
- データを読み込む
- プロセス アプリをカスタマイズする
- ダッシュボードをパブリッシュする
- アプリ テンプレート
- その他のリソース
- すぐに使えるタグと期限日
- ローカル環境でデータ変換を編集する
- ローカルのテスト環境を設定する
- イベント ログをデザインする
- SAP Ariba の抽出ツールを拡張する
- パフォーマンス特性
Process Mining ユーザー ガイド
はじめに
[期限日] ダッシュボードには、期限を守ったオブジェクトまたは超過したオブジェクトに関する情報と、関連するコストが表示されます。プロセスにおける重要な段階やアクティビティの期限を設定するために、期限日を事前に定義しておくことができます。[期限日] ダッシュボードを使用すると、プロセス内の期限日をさまざまな観点から分析できます。このダッシュボードを使用することで、支払期限や、期限までに達成する必要のある SLA 項目など、プロセスで事前に定義された期限日について調べることができます。
期限日には、期限日を超過した場合のコストを関連付けることができます。
Purchase-to-Pay アプリ テンプレートおよび Order-to-Cash アプリ テンプレートのすぐに使える期限日について詳しくは、「 すぐに使えるタグと期限日 」をご覧ください。
データ変換で期限日を設定する方法について詳しくは、「 期限日を設定する 」をご覧ください。
期限日を設定する
[期限日] ダッシュボードを使用して期限日を分析するには、アプリ テンプレートに期限日が定義されている必要があります。
アプリ テンプレートにすぐに使える期限日がある場合、その期限日が [期限日] ダッシュボードに表示されます。特定のアプリ テンプレートに関するドキュメントに、利用可能な期限日の概要が記述されています。[アプリ テンプレート] ページには、利用可能なすべてのアプリ テンプレートに関するドキュメントへのリンクがあります。
[期限日] ダッシュボードに利用可能なデータが無い場合は、データ変換を使用して models\5_business_logic\Due_dates_base.sql ファイル内に独自の期限日を設定する必要があります。ここでは、業務の必要性に応じて既定の期限日を設定することもできます。
カスタム プロセスでは、Due_dates_raw.csv ファイルを使用して期限日をアップロードすることもできます。「 カスタム プロセスの入力フィールド」をご覧ください。
変換にビジネス ロジックを追加する
最後の変換手順では、データ分析に必要なビジネス ロジックが追加されます。
期限日テーブルの各レコードは、特定のオブジェクトの 1 つの期限日を表します。期限日の例は次のとおりです。
- 支払対象の支払期限
- 購買依頼の承認期限。
このテーブルの必須フィールドは、Event_ID、Due_date、Actual_date、Expected_date です。
すべてのイベントに期限日が設定されているわけではありません。また、複数の期限日が設定されているイベントもあります。
詳しくは「データ変換」をご覧ください。
dbt シードを使用して期限日設定の入力を提供する
[ 期限日 ] ダッシュボードの計算に使用する追加の入力データは、 dbt シード ファイルを使用して提供できます。アプリ テンプレートのアプリ変換の seeds\ フォルダーには、Due_dates_configuration_raw.csv ファイルが含まれています。すべての期限日に対して、以下のフィールドを指定できます。
| 名前 | 入力 | 説明 |
|---|---|---|
| Due_date | テキスト | 期限日の名前です。 |
| Due_date_type | テキスト | 期限日の種類です。 |
| Fixed_costs | Boolean | コストが固定か、時間ベースかを示します。 |
| コスト | フローティング | 固定コスト: コストの金額です。 変動コスト: Time および Type_type あたりのコストの金額です。 |
| Time | Integer | 時間ベースのコストの場合の時間を示す数値です。 |
| Time_type | テキスト | コストを計算する期間の種類です。day、hour、minute、second、millisecond のいずれかの値を指定できます。 |
次の図にシード ファイルの例を示します。
「変換」をご覧ください。
期限日を設定する SQL の例
このページでは、変換を使用して期限日を設定するために使用できる SQL の例をいくつか示します。
SQL の例は、イベント ログとカスタム プロセスのアプリ テンプレートをベースとし、Case_IDを持つケースを使用します。SQL の例を使用して Purchase-to-Pay アプリ テンプレートまたは Order-to-Cash アプリ テンプレートの期限日を定義する場合は、適切なオブジェクトと関連する内部object_IDを使用してください。Purchase-to-Pay の場合は、Purchase_order_item_end_to_end_events イベント ログ、Purchase_order_items オブジェクト、Purchase_order_item_ID_internalをCase_IDとして使用できます。Order-to-Cash の場合は、Sales_order_item_end_to_end_events イベント ログ、Sales_order_items オブジェクト、Sales_order_item_ID_internalをCase_IDとして使用できます。
次のコード ブロックは、期限日を定義する SQL クエリの例を示しています。
select
tableA."Case_ID",
{{ pm_utils.as_varchar('Name of Due date') }} as "Due_date",
tableB."SLA_date" as "Expected_date",
tableA."Executed_date" as "Actual_date"
from {{ ref('tableA') }} as tableA
left join {{ ref('tableB') }} as tableB
on tableA."Case_ID" = tableB."Case_ID"
select
tableA."Case_ID",
{{ pm_utils.as_varchar('Name of Due date') }} as "Due_date",
tableB."SLA_date" as "Expected_date",
tableA."Executed_date" as "Actual_date"
from {{ ref('tableA') }} as tableA
left join {{ ref('tableB') }} as tableB
on tableA."Case_ID" = tableB."Case_ID"
次のコード ブロックは、期限日を設定する SQL クエリの例を示しています。
select
Due_dates_base."Case_ID",
Due_dates_base."Due_date",
Due_dates_base."Actual_date",
Due_dates_base."Expected_date",
{{ pm_utils.as_varchar('Type of Due date') }} as "Due_date_type",
case
when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
then {{ pm_utils.to_boolean('true') }}
else {{ pm_utils.to_boolean('false') }}
end as "On_time",
case
-- when actual or expected date are null
when Due_dates_base."Actual_date" is null or Due_dates_base."Expected_date" is null
then {{ pm_utils.to_double('null') }}
-- when the due date is on time, the cost is 0
when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
then {{ pm_utils.to_double('0') }}
-- when the due date is late, configure a cost
when Due_dates_base."Expected_date" > Due_dates_base."Actual_date"
then {{ pm_utils.to_double('10') }}
end as "Cost",
{{ pm_utils.datediff('millisecond', 'Due_dates_base."Expected_date"', 'Due_dates_base."Actual_date"') }} as "Difference"
from Due_dates_base
select
Due_dates_base."Case_ID",
Due_dates_base."Due_date",
Due_dates_base."Actual_date",
Due_dates_base."Expected_date",
{{ pm_utils.as_varchar('Type of Due date') }} as "Due_date_type",
case
when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
then {{ pm_utils.to_boolean('true') }}
else {{ pm_utils.to_boolean('false') }}
end as "On_time",
case
-- when actual or expected date are null
when Due_dates_base."Actual_date" is null or Due_dates_base."Expected_date" is null
then {{ pm_utils.to_double('null') }}
-- when the due date is on time, the cost is 0
when Due_dates_base."Actual_date" <= Due_dates_base."Expected_date"
then {{ pm_utils.to_double('0') }}
-- when the due date is late, configure a cost
when Due_dates_base."Expected_date" > Due_dates_base."Actual_date"
then {{ pm_utils.to_double('10') }}
end as "Cost",
{{ pm_utils.datediff('millisecond', 'Due_dates_base."Expected_date"', 'Due_dates_base."Actual_date"') }} as "Difference"
from Due_dates_base
Activity X done before date Y
この SQL コードは、アクティビティ 'X' の最後の発生が日付 'Y' より前に行われたケースを識別します。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases_base as (
select * from {{ ref('Cases_base') }}
),
-- Last activity X of each case
Last_activity_X as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Last activity X should be done before Case date field Y
Activity_X_done_before_date_Y as (
select
Last_activity_X."Case_ID",
{{ pm_utils.as_varchar('Last activity X before Cases date field Y') }} as "Due_date",
Last_activity_X."Event_end" as "Actual_date",
Cases_base."Case_date_field_Y" as "Expected_date",
Last_activity_X."Event_ID"
from Last_activity_X
inner join Cases_base
on Last_activity_X."Case_ID" = Cases_base."Case_ID"
)
select * from Activity_X_done_before_date_Y
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases_base as (
select * from {{ ref('Cases_base') }}
),
-- Last activity X of each case
Last_activity_X as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Last activity X should be done before Case date field Y
Activity_X_done_before_date_Y as (
select
Last_activity_X."Case_ID",
{{ pm_utils.as_varchar('Last activity X before Cases date field Y') }} as "Due_date",
Last_activity_X."Event_end" as "Actual_date",
Cases_base."Case_date_field_Y" as "Expected_date",
Last_activity_X."Event_ID"
from Last_activity_X
inner join Cases_base
on Last_activity_X."Case_ID" = Cases_base."Case_ID"
)
select * from Activity_X_done_before_date_Y
Activity X done within 5 days after activity Y
この SQL コードは、アクティビティ 'X' の最後の発生がアクティビティ 'Y' の最後の発生後 5 日以内に起きたケースを識別します。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Last activity X of each case
Last_activity_X as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Last activity Y of each case
Last_activity_Y as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'Y'
group by Event_log_base."Case_ID"
),
-- Last activity X should be done at date of last Event Y + 5 days
Activity_X_done_within_5_days_after_activity_Y as (
select
Last_activity_Y."Case_ID",
{{ pm_utils.as_varchar('Last activity X before last activity Y + 5 days') }} as "Due_date",
{{ pm_utils.dateadd('day', 5, 'Last_activity_Y."Event_end"') }} as "Expected_date",
Last_activity_X."Event_end" as "Actual_date",
Last_activity_Y."Event_ID" as "Event_ID"
from Last_activity_Y
inner join Last_activity_X
on Last_activity_Y."Case_ID" = Last_activity_X."Case_ID"
)
select * from Activity_X_done_within_5_days_after_activity_Y
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Last activity X of each case
Last_activity_X as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Last activity Y of each case
Last_activity_Y as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end",
max(Event_log_base."Event_ID") as "Event_ID"
from Event_log_base
where Event_log_base."Activity" = 'Y'
group by Event_log_base."Case_ID"
),
-- Last activity X should be done at date of last Event Y + 5 days
Activity_X_done_within_5_days_after_activity_Y as (
select
Last_activity_Y."Case_ID",
{{ pm_utils.as_varchar('Last activity X before last activity Y + 5 days') }} as "Due_date",
{{ pm_utils.dateadd('day', 5, 'Last_activity_Y."Event_end"') }} as "Expected_date",
Last_activity_X."Event_end" as "Actual_date",
Last_activity_Y."Event_ID" as "Event_ID"
from Last_activity_Y
inner join Last_activity_X
on Last_activity_Y."Case_ID" = Last_activity_X."Case_ID"
)
select * from Activity_X_done_within_5_days_after_activity_Y
期限日を分析する
[期限日] ダッシュボード
[期限日] ダッシュボードを使用すると、プロセス内で発生する期限日を分析できます。
[期限日] ダッシュボードを表示するには、以下の手順に従います。
- ダッシュボードの左側にあるメニューで [期限日] を選択します。
[期限日] ダッシュボードが表示されます。
次の表で、[期限日] ダッシュボードで利用可能なグラフについて説明します。
| グラフ | 説明 | 利用可能なメトリック |
|---|---|---|
| 期限日の詳細 | 選択したメトリックに基づいて、期限日に関連する詳細を表示する棒グラフです。 | オブジェクトの数 合計遅延時間 平均時間遅延率 時間どおりの割合 合計コスト* 平均コスト* |
| 遅延の履歴 | 選択したメトリックに基づいて、選択した期間の期限日情報を表示する履歴グラフです。 | 合計遅延時間 平均時間遅延率 時間通りの割合 合計コスト* 平均コスト* |
| 差異の分布 | 遅延日数に関連する期限日の数を示す分布グラフです。 |
- [合計遅延コスト ] と [ 平均遅延コスト ] は、 期限日に [Fixed_cost ] と [コスト ] が設定されている場合にのみ使用できます。
[概要] タブ
[概要] タブのグラフでは、プロセスに対して定義されている期限日が強調表示されます。各期限日について、選択した期間のケース数 ([遅延ケース]) と合計遅延時間が表示されます。
詳細タブ
[詳細] タブには、遅延アクティビティをより詳細に分析できるグラフが複数表示されます。以下の画像に例を示します。
以下に、[期限日] ダッシュボードで利用可能なグラフの概要を示します。
| グラフ | 説明 | 利用可能なメトリック |
|---|---|---|
| 節約が見込まれる時間 | データセットで定義された期限日で節約が見込まれる時間を示す円グラフです。 | 合計遅延時間 平均遅延時間 合計コスト* 平均コスト* |
| 遅延の履歴 | 選択したメトリックに基づいて、選択した期間の期限日情報を表示する履歴グラフです。 | 合計遅延時間 平均時間遅延率 時間通りの割合 合計コスト* 平均コスト* |
| 期限日の詳細 | 選択したメトリックに基づいて、期限日に関連する詳細を表示する棒グラフです。 | ケース数 合計遅延時間 平均時間遅延時間 時間オン時間の割合 合計コスト* 平均コスト* |
| 差異の分布 | 遅延日数に関連する期限日の数を示す分布グラフです。 |
- 合計遅延コスト と 平均遅延コスト は、Due_dates_configuration_raw.csvシード ファイルを使用して Fixed_cost と コスト が提供されている場合にのみ使用できます。
期限日の詳細
詳細 - 期限日のグラフでは、さまざまなメトリックとフィールドに基づいて詳細な期限日情報を表示できます。次の各フィールドを選択できます。
| フィールド | 説明 |
| 期限日 | 期限日の名前です。 |
| 期限日の種類* | 期限日の種類です。 |
| コスト* | 期限日に関連するコストです。 |
| 予定日 | アクティビティの実行予定日です。 |
| 実際の日付 | アクティビティの実際の実行日です。 |
| 期限内 | 期限内または遅延のアクティビティです。 注: 遅延 アクティビティとは、 実際の日付 が 予定日 よりも後であるアクティビティです。 |
| 違い | 予定日から実際の日付までの時間です。 |
- [期限日の種類 ] と [ コスト ] は、これらのフィールドが 期限日に設定されている場合にのみ利用できます。