同じケース内のすべてのイベントにわたって値を集計する関数です。
ケース集計について
プロセスマイニングでは、ケースはプロセスの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) 現在のケースに含まれるすべてのイベントの数値属性の平均を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | 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) → ケース内の一意の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アクティビティの平均Duration |
caseCountIf
(condition) 現在のケースで条件に一致するイベントを数えます。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseCountIf(Status == "Error") → ケース内のErrorイベントの数 |
caseMinIf
(attribute, condition) 条件に一致するイベントの最小値を返します。
| パラメーター | | attribute | number | 最小値を求める属性 | | condition | boolean | 絞り込む条件 | |
| 戻り値 | 数値 |
| 例 | caseMinIf(Timestamp, Activity == "Start") → 最初のStartアクティビティのTimestamp |
caseMaxIf
(attribute, condition) 条件に一致するイベントの最大値を返します。
| パラメーター | | attribute | number | 最大値を求める属性 | | condition | boolean | 絞り込む条件 | |
| 戻り値 | 数値 |
| 例 | caseMaxIf(Timestamp, Activity == "End") → 最後のEndアクティビティのTimestamp |
累積集計
累積集計は、現在のイベントまで(現在のイベントを含む)の累積値を計算します。ケース内のイベントを時系列順に進むと、累積値が更新されます。
次の用途に便利です。
- 累積合計を追跡する(累積合計)
- イベントの位置を特定する(累積件数)
- 移動平均を計算する
累積集計のパターン
-
累積合計:ケース内で値がどのように累積するかを追跡します。
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) 現在のイベントを含め、そこまでの累積平均を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningAvg(Duration) → この時点までの平均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) → ケース内のDurationの90パーセンタイル値 |
caseVariance
(attribute) 現在のケース内における属性の分散を計算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseVariance(ProcessingTime) → ケース内のProcessingTimeの分散 |
関連トピック