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

Process Mining
タグを構成する
[タグ] ダッシュボードを使用してプロセス内のタグを分析する場合は、アプリ テンプレートにタグを定義する必要があります。
特定のアプリ テンプレートには、すぐに使えるタグが用意されており、それがダッシュボードに表示されます。特定のアプリ テンプレートに関するドキュメントに、利用可能なタグの概要が記述されています。[アプリ テンプレート] ページには、利用可能なすべてのアプリ テンプレートに関するドキュメントへのリンクがあります。
すべてのカスタム プロセス アプリ テンプレートには、異なるユーザーによって実行される再作業アクティビティがケースに含まれているかどうかを確認するタグが、すぐに使える状態で実装されています。
[タグ] ダッシュボードに利用可能なデータが無い場合は、データ変換を使用して独自のタグを設定する必要があります。ここでは、業務の必要性に応じて既定のタグを設定することもできます。次の表で、さまざまなアプリ テンプレートのタグ構成ファイルについて説明します。
基になるアプリ テンプレート |
タグ構成ファイル |
イベント ログ | 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
ファイルを使用してタグをアップロードすることもできます。「カスタム プロセスの入力フィールド」をご覧ください。
最後の変換手順では、データ分析に必要なビジネス ロジックが追加されます。
タグ テーブルの各レコードは、特定のケースの 1 つのタグを表します。タグの例は次のとおりです。
- 契約の SLA 違反
- 権限を持たない人物による支払い
Case_ID
と Tag
です。
すべてのオブジェクトにタグが付くわけではありません。一部のオブジェクトには複数のタグが付く可能性もあります。
詳しくは、「 データ変換エディター 」をご覧ください。
[データ変換] で 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
この 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
この 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
この 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
この 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
この 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