同じケース内のすべてのイベントにわたって値を集計する関数です。
ケース集計関数の概要
プロセスマイニングでは、ケースはプロセスの1つの実行単位(例:1件の注文、1件のチケット、1人の顧客の利用経路)を表します。各ケースには複数のイベント(個々のステップやアクティビティ)が含まれます。
ケース集計関数は、ケース内のすべてのイベントを対象に値を計算し、その結果を各イベントで利用できるようにします。これにより、次のことができます。
- ケースの合計値を計算する(例:注文金額の合計)
- ケース内のパターンを見つける(例:再作業イベントの件数)
- 個々のイベントとケース単位の統計値を比較する
よく使われるパターン
-
ケースの合計を計算:
caseSum(ItemAmount) // Total order value
caseCount() // Number of events in case
caseCountDistinct(Resource) // Unique resources involved
-
最大値・最小値を検索:
caseMin(Timestamp) // First event time
caseMax(Timestamp) // Last event time
caseMax(Timestamp) - caseMin(Timestamp) // Total case duration
-
条件付き集計:
caseCountIf(Status == "Error") // Error count
caseSumIf(Amount, Activity == "Payment") // Total payments
caseAvgIf(Duration, Activity == "Review") // Avg review time
-
イベントとケースを比較:
Duration / caseAvg(Duration) // Is this event faster/slower than average?
caseSum
(attribute) 現在のケースに含まれるすべてのイベントについて、数値属性の合計を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseSum(ItemAmount) → ケース内のItemAmountの合計 |
caseAvg
(attribute) 現在のケースに含まれるすべてのイベントについて、数値属性の平均を計算します。
| パラメーター | | attribute | number | 平均を計算する属性 | |
| 戻り値 | 数値 |
| 例 | caseAvg(ProcessingTime) → イベントごとの平均処理時間 |
caseMin
(attribute) 現在のケースに含まれるすべてのイベントの属性値の最小値を返します。
| パラメーター | | attribute | number | 最小値を返す属性 | |
| 戻り値 | 数値 |
| 例 | caseMin(ItemPrice) → ケース内の最低価格 |
caseMax
(attribute) 現在のケースに含まれるすべてのイベントの属性値の最大値を返します。
| パラメーター | | attribute | number | 最大値を返す属性 | |
| 戻り値 | 数値 |
| 例 | caseMax(ItemPrice) → ケース内の最高価格 |
caseCount
() 現在のケースに含まれるイベント数を返します。
caseMedian
(attribute) 現在のケースに含まれるすべてのイベントの属性値の中央値を返します。
| パラメーター | | attribute | number | 中央値を返す属性 | |
| 戻り値 | 数値 |
| 例 | caseMedian(Duration) → ケース内のDurationの中央値 |
caseCountDistinct
(attribute) 現在のケースに含まれる属性の値の種類数を数えます。
| パラメーター | | attribute | any | 値の種類数を数える属性 | |
| 戻り値 | 数値 |
| 例 | caseCountDistinct(Resource) → ケース内の一意なリソース数 |
caseStdDev
(expr) ケース内のイベントの標準偏差を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseStdDev(Amount) → ケース内の標準偏差 |
caseSumIf
(attribute, condition) 条件に一致するイベントのみを対象に、値の合計を計算します。
| パラメーター | | attribute | number | 合計する属性 | | condition | boolean | 絞り込み条件 | |
| 戻り値 | 数値 |
| 例 | caseSumIf(Amount, Status == "Approved") → StatusがApprovedのイベントにおけるAmountの合計 |
caseAvgIf
(attribute, condition) 条件に一致するイベントのみを対象に、値の平均を計算します。
| パラメーター | | attribute | number | 平均を計算する属性 | | condition | boolean | 絞り込み条件 | |
| 戻り値 | 数値 |
| 例 | caseAvgIf(Duration, Activity == "Review") → Reviewアクティビティの平均所要時間 |
caseCountIf
(condition) 条件に一致する、現在のケース内のイベント数を数えます。
| パラメーター | | condition | boolean | 件数を数える条件 | |
| 戻り値 | 数値 |
| 例 | caseCountIf(Status == "Error") → ケース内のエラーイベント数 |
caseMinIf
(attribute, condition) 条件に一致するイベントの最小値を返します。
| パラメーター | | attribute | number | 最小値を返す属性 | | condition | boolean | 絞り込み条件 | |
| 戻り値 | 数値 |
| 例 | caseMinIf(Timestamp, Activity == "Start") → 最初のStartアクティビティのタイムスタンプ |
caseMaxIf
(attribute, condition) 条件に一致するイベントの最大値を返します。
| パラメーター | | attribute | number | 最大値を返す属性 | | condition | boolean | 絞り込み条件 | |
| 戻り値 | 数値 |
| 例 | caseMaxIf(Timestamp, Activity == "End") → 最後のEndアクティビティのタイムスタンプ |
累積集計
累積集計では、現在のイベントまで(現在のイベントを含む)の累積値を計算します。ケース内のイベントを時系列順に確認すると、累積値が更新されます。
次のような用途に役立ちます。
- 累積合計の追跡(累積合計)
- イベントの位置の特定(累積件数)
- 移動平均の計算
累積集計のパターン
-
累積合計:ケース内で値がどのように積み上がるかを追跡します。
caseRunningSum(ItemAmount) // Cumulative order total at each event
| イベント | 金額 | caseRunningSum(Amount) |
| 1 | 100 | 100 |
| 2 | 50 | 150 |
| 3 | 75 | 225 |
-
イベントの位置:ケース内の順序でイベントがどこに位置するかを特定します。
caseRunningCount() // 1, 2, 3, 4...
-
移動平均:現在の位置までの平均を計算します。
caseRunningAvg(Duration) // Average duration so far
-
位置に基づくロジック:
if(caseRunningCount() == 1, "First",
if(caseRunningCount() == caseCount(), "Last", "Middle")
)
caseRunningSum
(attribute) 現在のイベントまでを含む累積合計を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningSum(ItemAmount) → 各イベント時点での累積合計 |
caseRunningCount
() ケース内のイベント番号を、1から始まる番号で返します。
| 戻り値 | 数値 |
| 例 | caseRunningCount() → イベントの位置:1、2、3、... |
caseRunningAvg
(attribute) 現在のイベントまでを含む累積平均を計算します。
| パラメーター | | attribute | number | 平均を計算する属性 | |
| 戻り値 | 数値 |
| 例 | caseRunningAvg(Duration) → この時点までの平均所要時間 |
caseRunningMin
(expr) 現在のイベントまでの最小値を順次計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningMin(Amount) → 順次計算したAmountの最小値 |
caseRunningMax
(expr) 現在のイベントまでの最大値を順次計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningMax(Amount) → 順次計算したAmountの最大値 |
統計関数
ケース内の値の分布を分析する統計関数です。
-
パーセンタイル:ケース内のほかの値と比べて、値がどの位置にあるかを調べます。パーセンタイルは0から1までの小数で指定します。たとえば、0.9は90パーセンタイルを表します。
casePercentile(Duration, 0.5) // Median duration in this case
casePercentile(Duration, 0.9) // 90th percentile
-
分散:値のばらつきの大きさを測定します。
caseVariance(Amount) // Variation within this case
casePercentile
(attribute, percentile) 現在のケース内で、属性のパーセンタイルを計算します。
| パラメーター | | attribute | number | 分析する属性 | | percentile | number | 0から1までの割合で指定するパーセンタイル(0.9 = 90パーセンタイル) | |
| 戻り値 | 数値 |
| 例 | casePercentile(Duration, 0.9) → ケース内の所要時間の90パーセンタイル |
caseVariance
(attribute) 現在のケース内で、属性の分散を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseVariance(ProcessingTime) → ケース内の処理時間の分散 |
関連トピック