- リリース ノート
- はじめる前に
- 基本情報
- Integrations
- プロセス アプリを使用する
- アプリを作成する
- データを読み込む
- データ変換中
- ダッシュボードをカスタマイズする
- ダッシュボードをパブリッシュする
- アプリ テンプレート
- 通知
- その他のリソース

Process Mining
[タグ] ダッシュボードを使用してプロセス内のタグを分析する場合は、アプリ テンプレートにタグを定義する必要があります。
For certain app templates, there are out of the box tags available, which will be shown in the dashboard. In the documentation for your specific app template you will find an overview of the available tags. The App Templates page contains links to the documentation for all available app templates.
すべてのカスタム プロセス アプリ テンプレートには、異なるユーザーによって実行される再作業アクティビティがケースに含まれているかどうかを確認するタグが、すぐに使える状態で実装されています。
[タグ] ダッシュボードに利用可能なデータが無い場合は、データ変換を使用して独自のタグを設定する必要があります。ここでは、業務の必要性に応じて既定のタグを設定することもできます。次の表で、さまざまなアプリ テンプレートのタグ構成ファイルについて説明します。
基になるアプリ テンプレート |
タグ構成ファイル |
イベント ログ | models\5_business_logic\Tags_base.sql |
カスタム プロセス 1 | models\5_business_logic\Tags_base.sql |
Purchase-to-Pay | models\5_business_logic\Tags.sql |
Order-to-Cash | models\5_business_logic\Tags.sql |
Tags_raw.csv
file. Check out Custom process input fields.
最後の変換手順では、データ分析に必要なビジネス ロジックが追加されます。
タグ テーブルの各レコードは、特定のケースの 1 つのタグを表します。タグの例は次のとおりです。
- 契約の SLA 違反
- 権限を持たない人物による支払い
Case_ID
と Tag
です。
すべてのオブジェクトにタグが付くわけではありません。一部のオブジェクトには複数のタグが付く可能性もあります。
Refer to Data transformations editor for more information.
[データ変換] で SQL ステートメントを使用して、[タグ] ダッシュボードのタグに使用する追加の入力データを提供できます。すべてのタグに対して、次のフィールドを設定できます。
名前 |
入力 |
説明 |
Tag | テキスト |
タグの名前です。 |
Tag_type | テキスト |
タグの種類。 |
|
テキスト/整数型 |
タグが関連付けられているケースの ID。 |
このページでは、変換を使用してタグを設定するために使用できる SQL の例をいくつか示します。
Case_ID
を持つケースを使用します。SQL の例を使用して Purchase-to-Pay アプリ テンプレートまたは Order-to-Cash アプリ テンプレートのタグを定義する場合は、適切なオブジェクトと関連する内部 object_ID を使用してください。タグの実装を拡張する場合は、既存の実装に従います。
次のコード ブロックは、タグを定義する SQL クエリの例を示しています。
select
Time_to_resolved."Case_ID",
{{ pm_utils.as_varchar('Resolved in less than a day') }} as "Tag",
{{ pm_utils.to_varchar('Optional tag type') }} as "Tag_type"
from Time_to_resolved
where Time_to_resolved."Throughput_time" < 24
select
Time_to_resolved."Case_ID",
{{ pm_utils.as_varchar('Resolved in less than a day') }} as "Tag",
{{ pm_utils.to_varchar('Optional tag type') }} as "Tag_type"
from Time_to_resolved
where Time_to_resolved."Throughput_time" < 24
次のコード ブロックは、タグを構成するための共通テーブル式 (CTE) SQL クエリの例を示しています。
Time_to_resolved as (
select
Event_log."Case_ID",
{{ pm_utils.datediff('hour', 'min(Cases."Creation_date")', 'max(Event_log."Event_end")') }} as "Throughput_time"
from {{ ref('Event_log') }} as Event_log
left join {{ ref('Cases ') }} as Cases
on Event_log."Case_ID" = Cases."Case_ID"
where Event_log."Activity" = 'Set resolution to Done'
group by Event_log."Case_ID"
)
Time_to_resolved as (
select
Event_log."Case_ID",
{{ pm_utils.datediff('hour', 'min(Cases."Creation_date")', 'max(Event_log."Event_end")') }} as "Throughput_time"
from {{ ref('Event_log') }} as Event_log
left join {{ ref('Cases ') }} as Cases
on Event_log."Case_ID" = Cases."Case_ID"
where Event_log."Activity" = 'Set resolution to Done'
group by Event_log."Case_ID"
)
直後に続くアクティビティ
この SQL コードは、アクティビティ 'X' の直後にアクティビティ 'Y' が続くケースを識別し、それらに "Violation" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Event log with current activity and next activity
Event_log_extended as (
select
Event_log_base."Case_ID",
Event_log_base."Activity" as "Current_activity",
lead(Event_log_base."Activity") over (order by "Event_end") as "Next_activity"
from Event_log_base
),
-- This SQL code checks whether activity X is directly followed by Y in a given case
Directly_follows as (
select
Event_log_extended ."Case_ID",
{{ pm_utils.as_varchar('Activity X directly followed by activity Y') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_extended
where Event_log_extended ."Current_activity" = 'X' and Event_log_extended ."Next_activity" = 'Y'
group by Event_log_extended ."Case_ID"
)
select * from Directly_follows
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Event log with current activity and next activity
Event_log_extended as (
select
Event_log_base."Case_ID",
Event_log_base."Activity" as "Current_activity",
lead(Event_log_base."Activity") over (order by "Event_end") as "Next_activity"
from Event_log_base
),
-- This SQL code checks whether activity X is directly followed by Y in a given case
Directly_follows as (
select
Event_log_extended ."Case_ID",
{{ pm_utils.as_varchar('Activity X directly followed by activity Y') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_extended
where Event_log_extended ."Current_activity" = 'X' and Event_log_extended ."Next_activity" = 'Y'
group by Event_log_extended ."Case_ID"
)
select * from Directly_follows
間接的に続くアクティビティ
この SQL コードは、アクティビティ 'X' の直後、または間接的にアクティビティ 'Y' が続くケースを識別し、それらに "Violation" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases_with_activity_X as (
select
Event_log_base."Case_ID",
min(Event_log_base."Event_end") as "Event_end"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Activity X is directly or indirectly followed by activity Y
Indirectly_follows as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Activity X indirectly followed by activity Y') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_base
inner join Cases_with_activity_X
on Event_log_base."Case_ID" = Cases_with_activity_X."Case_ID"
where Event_log_base."Activity" = 'Y' and Event_log_base."Event_end" > Cases_with_activity_X."Event_end"
group by Event_log_base."Case_ID"
)
select * from Indirectly_follows
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases_with_activity_X as (
select
Event_log_base."Case_ID",
min(Event_log_base."Event_end") as "Event_end"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
),
-- Activity X is directly or indirectly followed by activity Y
Indirectly_follows as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Activity X indirectly followed by activity Y') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_base
inner join Cases_with_activity_X
on Event_log_base."Case_ID" = Cases_with_activity_X."Case_ID"
where Event_log_base."Activity" = 'Y' and Event_log_base."Event_end" > Cases_with_activity_X."Event_end"
group by Event_log_base."Case_ID"
)
select * from Indirectly_follows
Activity X multiple times
この SQL コードは、アクティビティ 'X' が複数回発生するケースを識別し、それらに "Inefficiency" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- This SQL code checks if Activity X occurs twice or more times in the same case
Activity_X_multiple_times as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Activity X multiple times') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
having count(Event_log_base."Activity") > 1
)
select * from Activity_X_multiple_times
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- This SQL code checks if Activity X occurs twice or more times in the same case
Activity_X_multiple_times as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Activity X multiple times') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Event_log_base
where Event_log_base."Activity" = 'X'
group by Event_log_base."Case_ID"
having count(Event_log_base."Activity") > 1
)
select * from Activity_X_multiple_times
Case has activity X
この SQL コードは、名前に 'X' を含むアクティビティが 1 つ以上あるケースを識別し、それらに "Inefficiency" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Case has activity with name like X
Case_has_activity_X as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Case has activity X') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Event_log_base
where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
group by Event_log_base."Case_ID"
)
select * from Case_has_activity_X
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Case has activity with name like X
Case_has_activity_X as (
select
Event_log_base."Case_ID",
{{ pm_utils.as_varchar('Case has activity X') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Event_log_base
where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
group by Event_log_base."Case_ID"
)
select * from Case_has_activity_X
ケースにアクティビティ X がない
この SQL コードは、名前に 'X' を含むアクティビティがないケースを識別し、それらに "Inefficiency" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases as (
select * from {{ ref('Cases') }}
),
-- Case has no activity with name like X
-- Obtained by subtracting the set of cases that have activity X from the set of all cases
Case_has_no_activity_X as (
select
Cases."Case_ID",
{{ pm_utils.as_varchar('Case has no activity X') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Cases
where Cases."Case_ID" not in (
-- Case has activity with name like X
select
Event_log_base."Case_ID"
from Event_log_base
where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
group by Event_log_base."Case_ID"
)
)
select * from Case_has_no_activity_X
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
Cases as (
select * from {{ ref('Cases') }}
),
-- Case has no activity with name like X
-- Obtained by subtracting the set of cases that have activity X from the set of all cases
Case_has_no_activity_X as (
select
Cases."Case_ID",
{{ pm_utils.as_varchar('Case has no activity X') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from Cases
where Cases."Case_ID" not in (
-- Case has activity with name like X
select
Event_log_base."Case_ID"
from Event_log_base
where {{ pm_utils.charindex('X', 'Event_log_base."Activity"') }} > 0
group by Event_log_base."Case_ID"
)
)
select * from Case_has_no_activity_X
次で始まる
この SQL コードは、アクティビティ 'X' で始まるケースを識別し、それらに "Violation" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Add row_number to initial event log
Event_log_base_numbered as (
select
Event_log_base."Case_ID",
Event_log_base."Activity",
Event_log_base."Event_end",
row_number() over (partition by Event_log_base."Case_ID" order by Event_log_base."Event_end") as "Row_number"
from Event_log_base
),
-- Case starts with activity X
Starts_with as (
select
Event_log_base_numbered."Case_ID",
{{ pm_utils.as_varchar('Case starts with activity X') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_base_numbered
where
Event_log_base_numbered."Row_number" = 1
and Event_log_base_numbered."Activity" = 'X'
)
select * from Starts_with
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Add row_number to initial event log
Event_log_base_numbered as (
select
Event_log_base."Case_ID",
Event_log_base."Activity",
Event_log_base."Event_end",
row_number() over (partition by Event_log_base."Case_ID" order by Event_log_base."Event_end") as "Row_number"
from Event_log_base
),
-- Case starts with activity X
Starts_with as (
select
Event_log_base_numbered."Case_ID",
{{ pm_utils.as_varchar('Case starts with activity X') }} as "Tag",
{{ pm_utils.as_varchar('Violation') }} as "Tag_type"
from Event_log_base_numbered
where
Event_log_base_numbered."Row_number" = 1
and Event_log_base_numbered."Activity" = 'X'
)
select * from Starts_with
Throughput time longer than 10 days
この SQL コードは、スループット時間が 10 日間を超えるケースを識別し、それらに "Inefficiency" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Throuput time of each case
Throughput_time_per_case as (
select
Event_log_base."Case_ID",
{{ pm_utils.datediff('day', 'coalesce(min(Event_log_base."Event_start"), min(Event_log_base."Event_end"))', 'max(Event_log_base."Event_end")') }} as "Throughput_time"
from Event_log_base
group by Event_log_base."Case_ID"
),
-- Case throughput time is longer than 10 days
Throughput_time_longer_than_10_days as (
select
Throughput_time_per_case."Case_ID",
{{ pm_utils.as_varchar('Throughput time is longer than 10 days') }} as "Tag",
{{ pm_utils.as_varchar('Inneficiency') }} as "Tag_type"
from Throughput_time_per_case
where Throughput_time_per_case."Throughput_time" > 10
)
select * from Throughput_time_longer_than_10_days
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- Throuput time of each case
Throughput_time_per_case as (
select
Event_log_base."Case_ID",
{{ pm_utils.datediff('day', 'coalesce(min(Event_log_base."Event_start"), min(Event_log_base."Event_end"))', 'max(Event_log_base."Event_end")') }} as "Throughput_time"
from Event_log_base
group by Event_log_base."Case_ID"
),
-- Case throughput time is longer than 10 days
Throughput_time_longer_than_10_days as (
select
Throughput_time_per_case."Case_ID",
{{ pm_utils.as_varchar('Throughput time is longer than 10 days') }} as "Tag",
{{ pm_utils.as_varchar('Inneficiency') }} as "Tag_type"
from Throughput_time_per_case
where Throughput_time_per_case."Throughput_time" > 10
)
select * from Throughput_time_longer_than_10_days
Duration more than 30 minutes
この SQL コードは、アクティビティ 'X' と 'Y' の間の期間が 30 分を超えるケースを識別し、それらに "Inefficiency" というタグを付けます。
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- First activity X of each case
First_activity_X_of_each_case as (
select
Event_log_base."Case_ID",
min(Event_log_base."Event_end") as "Event_end"
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_of_each_case as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end"
from Event_log_base
where Event_log_base."Activity" = 'Y'
group by Event_log_base."Case_ID"
),
-- Time between first X and last Y > 30 minutes
Duration_more_than_30_minutes as (
select
First_activity_X_of_each_case."Case_ID",
{{ pm_utils.as_varchar('Duration more than 30 minutes') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from First_activity_X_of_each_case
inner join Last_activity_Y_of_each_case
on First_activity_X_of_each_case."Case_ID" = Last_activity_Y_of_each_case."Case_ID"
where {{ pm_utils.datediff('minute', 'First_activity_X_of_each_case."Event_end"', 'Last_activity_Y_of_each_case."Event_end"') }} > 30
)
select * from Duration_more_than_30_minutes
with Event_log_base as (
select * from {{ ref('Event_log_base') }}
),
-- First activity X of each case
First_activity_X_of_each_case as (
select
Event_log_base."Case_ID",
min(Event_log_base."Event_end") as "Event_end"
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_of_each_case as (
select
Event_log_base."Case_ID",
max(Event_log_base."Event_end") as "Event_end"
from Event_log_base
where Event_log_base."Activity" = 'Y'
group by Event_log_base."Case_ID"
),
-- Time between first X and last Y > 30 minutes
Duration_more_than_30_minutes as (
select
First_activity_X_of_each_case."Case_ID",
{{ pm_utils.as_varchar('Duration more than 30 minutes') }} as "Tag",
{{ pm_utils.as_varchar('Inefficiency') }} as "Tag_type"
from First_activity_X_of_each_case
inner join Last_activity_Y_of_each_case
on First_activity_X_of_each_case."Case_ID" = Last_activity_Y_of_each_case."Case_ID"
where {{ pm_utils.datediff('minute', 'First_activity_X_of_each_case."Event_end"', 'Last_activity_Y_of_each_case."Event_end"') }} > 30
)
select * from Duration_more_than_30_minutes