これらの関数ファミリーは、式言語を補完します。以下の各グループでは、パラメーター、戻り値の型、例とともに関数を一覧にしています。
テキストとパターンの関数
正規表現関数
正規表現でパターンを照合・置換するための関数です。
regexMatch
(text, pattern) 文字列が正規表現のパターンに一致するかを確認します。
| パラメーター | | text | string | 確認する文字列 | | pattern | string | 正規表現のパターン | |
| 戻り値 | ブール値 |
| 例 | regexMatch("abc123", "[0-9]+") → true regexMatch("hello", "^[0-9]+$") → false |
| 関連項目 | |
regexReplace
(text, pattern, replacement) 文字列内にある正規表現のパターンをすべて置換します。
| パラメーター | | text | string | 入力文字列 | | pattern | string | 照合する正規表現のパターン | | replacement | string | 置換後の文字列 | |
| 戻り値 | 文字列 |
| 例 | regexReplace("abc123def456", "[0-9]+", "#") → abc#def# regexReplace("hello world", "\s+", " ") → hello world |
| 関連項目 | |
(text, pattern, group?) 文字列から正規表現のパターンに最初に一致する部分を抽出します。特定のキャプチャグループを指定して抽出することもできます。
| パラメーター | | text | string | 入力文字列 | | pattern | string | 正規表現のパターン | | group (任意) | number | キャプチャグループのインデックス。完全一致の場合は0です。 (既定値: 0) | |
| 戻り値 | 文字列 |
| 例 | regexExtract("abc123def", "[0-9]+") → 123 regexExtract("2025-01-15", "(\d{4})-(\d{2})", 1) → 2025 |
| 関連項目 | |
文字列ユーティリティ
文字列を操作する追加の関数です。
repeat
(text, count) テキストを指定した回数だけ繰り返します。
| パラメーター | | text | string | 繰り返すテキスト | | count | number | 繰り返す回数 | |
| 戻り値 | 文字列 |
| 例 | repeat("ab", 3) → "ababab" |
countOccurrences
(text, search) 部分文字列が重複せずに出現する回数を数えます。
| パラメーター | | text | string | 検索対象のテキスト | | search | string | 検索する部分文字列 | |
| 戻り値 | 数値 |
| 例 | countOccurrences("abcabc", "abc") → 2 |
split
(text, delimiter, index) 区切り文字でテキストを分割し、1から数えたn番目の部分を返します。
| パラメーター | | text | string | 分割するテキスト | | delimiter | string | 分割に使用する区切り文字 | | index | number | 返す部分の1始まりのインデックス | |
| 戻り値 | 文字列 |
| 例 | split("a-b-c", "-", 2) → "b" |
exact
(a, b) 大文字と小文字を区別して文字列を比較します。両方の文字列が同一の場合にtrueを返します。
| パラメーター | | a | string | 1つ目の文字列 | | b | string | 2つ目の文字列 | |
| 戻り値 | ブール値 |
| 例 | exact("Hello", "hello") → false |
日付と期間のヘルパー
期間ヘルパー
ミリ秒単位のDurationを一般的な時間単位に変換します。
durationInDays
(ms) ミリ秒を日数に変換します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInDays(86400000) → 1 durationInDays(caseThroughputTime) → 日単位のスループット時間 |
durationInHours
(ms) ミリ秒を時間に変換します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInHours(3600000) → 1 durationInHours(stepDuration) → 時間単位のStep Duration |
durationInMinutes
(ms) ミリ秒を分に変換します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInMinutes(60000) → 1 durationInMinutes(waitingTime) → 分単位の待機時間 |
durationInSeconds
(ms) ミリ秒を秒に変換します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInSeconds(1500) → 1.5 |
日付の作成
日付の各要素から日付を作成したり、文字列を日付に変換したりします。
date
(year, month, day) 年、月、日からUTCの日付を作成します。
| パラメーター | | year | number | 年 | | month | number | 月(1~12) | | day | number | 月の日 | |
| 戻り値 | 日付 |
| 例 | date(2024, 1, 1) → 1704067200000 date(2024, 6, 15) → 2024年6月15日 |
toDate
(value, format?) 値を日付に変換します。エポックミリ秒などの数値、または文字列を指定できます。
| パラメーター | | value | any | 日付に変換する値 | | format (任意) | string | 日付形式のパターン(任意) | |
| 戻り値 | 日付 |
| 例 | toDate(1704067200000) → 1704067200000 toDate("2024-01-15") → 2024年1月15日 toDate("31/12/2024 23:45:59", "dd/MM/yyyy HH:mm:ss") → 1735688759000 |
| 注記 | 形式を指定する場合は、formatDateと同じ対応トークンを使用します。変換はUTCを基準に行われます。 |
today
() 現在の日付をUTCの午前0時として返します。
日付期間の境界
日付を期間の境界に合わせて切り捨てたり、丸めたりします。
startOfDay
(date) 日付をその日の開始時点、つまり午前0時に切り捨てます。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | startOfDay(StartTime) → 同日の午前0時 |
startOfWeek
(date) 週の開始日である月曜日を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | startOfWeek(StartTime) → 同じ週の月曜日 |
startOfMonth
(date) 月の初日を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | startOfMonth(StartTime) → 月の初日 |
startOfYear
(date) その年の1月1日を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | startOfYear(StartTime) → 1月1日 |
endOfWeek
(date) 週の終了日時である日曜日の23:59:59を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | endOfWeek(StartTime) → 日曜日の終日 |
endOfMonth
(date) 月末の23:59:59を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | endOfMonth(StartTime) → 月の最終日、終日 |
endOfYear
(date) 12月31日の23:59:59を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | endOfYear(StartTime) → 12月31日、終日 |
日付ショートカット
日付の差分や加算に使用する一般的な便利関数です。
daysBetween
(date1, date2) 2つの日付の差を日数で返します。
| パラメーター | | date1 | date | 開始日 | | date2 | date | 終了日 | |
| 戻り値 | 数値 |
| 例 | daysBetween(StartTime, EndTime) → 2つの日付の期間(日数) |
hoursBetween
(date1, date2) 2つの日付の差を時間数で返します。
| パラメーター | | date1 | date | 開始日 | | date2 | date | 終了日 | |
| 戻り値 | 数値 |
| 例 | hoursBetween(StartTime, EndTime) → 2つの日付の期間(時間) |
minutesBetween
(date1, date2) 2つの日付の差を分数で返します。
| パラメーター | | date1 | date | 開始日 | | date2 | date | 終了日 | |
| 戻り値 | 数値 |
| 例 | minutesBetween(StartTime, EndTime) → 2つの日付の期間(分) |
secondsBetween
(date1, date2) 2つの日付の差を秒数で返します。
| パラメーター | | date1 | date | 開始日 | | date2 | date | 終了日 | |
| 戻り値 | 数値 |
| 例 | secondsBetween(StartTime, EndTime) → 2つの日付の期間(秒) |
addDays
(date, days) 日付に日数を加算します。
| パラメーター | | date | date | 基準日 | | days | number | 加算する日数 | |
| 戻り値 | 日付 |
| 例 | addDays(StartTime, 5) → 5日後の日付 |
addHours
(date, hours) 日付に時間数を加算します。
| パラメーター | | date | date | 基準日 | | hours | number | 加算する時間数 | |
| 戻り値 | 日付 |
| 例 | addHours(StartTime, 3) → 3時間後の日付 |
addMinutes
(date, minutes) 日付に分数を加算します。
| パラメーター | | date | date | 基準日 | | minutes | number | 加算する分数 | |
| 戻り値 | 日付 |
| 例 | addMinutes(StartTime, 30) → 30分後の日付 |
addSeconds
(date, seconds) 日付に秒数を加算します。
| パラメーター | | date | date | 基準日 | | seconds | number | 加算する秒数 | |
| 戻り値 | 日付 |
| 例 | addSeconds(StartTime, 45) → 45秒後の日付 |
endOfDay
(date) 指定した日付の終日である23:59:59.999を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | endOfDay(StartTime) → 同日の23:59:59 |
startOfQuarter
(date) 指定した日付が属する四半期の初日を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | startOfQuarter(StartTime) → 6月の日付の場合は2024-04-01 |
endOfQuarter
(date) 指定した日付の四半期末の時刻を返します。
| パラメーター | |
| 戻り値 | 日付 |
| 例 | endOfQuarter(StartTime) → 6月の日付の場合は2024-06-30T23:59:59Z |
論理のヘルパー
複数分岐条件
値を複数のケースと照合します。
switch
(value, match1, result1, ..., default?) 値をケースの一覧と照合し、対応する結果を返します。複数分岐のifに相当します。
| パラメーター | | value | any | 照合する値 | | match1, result1, ... | any | 照合値と結果の組 | | default (任意) | any | 一致しない場合のデフォルト結果、任意 | |
| 戻り値 | 任意 |
| 例 | switch("a", "a", 1, "b", 2, 0) → 1 switch(Status, "Open", 1, "Closed", 2, 0) → Openの場合は1、Closedの場合は2、それ以外は0 |
| 注記 | 可変長の引数を受け取ります:switch(value, match1, result1, match2, result2, ..., default) |
範囲チェック
値が範囲内にあるかを確認し、必要に応じて範囲内に収めます。
between
(value, low, high) 値がlow以上high以下の範囲内にある場合にtrueを返します。
| パラメーター | | value | number | 確認する値 | | low | number | 下限 | | high | number | 上限 | |
| 戻り値 | ブール値 |
| 例 | between(Amount, 100, 1000) → Amountが100以上1000以下の場合はtrue |
clamp
(value, min, max) 値を[min, max]の範囲内に制限します。
| パラメーター | | value | number | 範囲内に収める値 | | min | number | 最小値 | | max | number | 最大値 | |
| 戻り値 | 数値 |
| 例 | clamp(Score, 0, 100) → 0~100の範囲に制限したScore |
Letバインディング
複雑な式で使用する中間値を名前に割り当てます。
let
(name, value, body) 値を名前に割り当て、その割り当てを利用できる状態で本体の式を評価します。
| パラメーター | | name | string | 変数名、文字列リテラル | | value | any | 割り当てる式 | | body | any | 割り当てた変数を使用する式 | |
| 戻り値 | 任意 |
| 例 | let("avg", caseAvg(Amount), Amount - avg) → ケース平均からの偏差 let("x", Amount * 2, let("y", x + 3, x * y)) → 入れ子になったletの割り当て |
フロー、アクティビティ、SLAの関数
先行関係述語
ケース内で、アクティビティの前に別のアクティビティがあるかどうかを確認します。
directlyPrecededBy
(activity, predecessor) ケース内で、最初のアクティビティの直前に2番目のアクティビティがある場合はtrueを返します。
| パラメーター | | activity | string | 確認するアクティビティ | | predecessor | string | 想定される前のアクティビティ | |
| 戻り値 | ブール値 |
| 例 | directlyPrecededBy("Approve", "Review") → Reviewの直後にApproveが続く場合はtrue |
| 関連項目 | |
eventuallyPrecededBy
(activity, predecessor) ケース内で、最初のアクティビティより前に2番目のアクティビティが現れる場合はtrueを返します。
| パラメーター | | activity | string | 確認するアクティビティ | | predecessor | string | 想定される前のアクティビティ | |
| 戻り値 | ブール値 |
| 例 | eventuallyPrecededBy("Ship", "Order") → ケース内でOrderがShipより前に現れる場合はtrue |
| 関連項目 | |
再作業の検出
ケース内でアクティビティが繰り返される再作業パターンを特定します。
isRework
Property 現在のアクティビティがケース内で以前に発生している場合にtrueです。
reworkCount
Property ケース内で繰り返されたアクティビティ実行の合計数
activityOccurrence
Property ケース内でのこのアクティビティの出現回数です。初回は1回目、2回目は2回目として数えます。
アクティビティクエリ
ケース内のアクティビティの有無と回数を確認します。
hasActivity
(activityName) 指定したアクティビティがケース内のどこかに存在する場合にtrueを返します。
| パラメーター | | activityName | string | 確認するアクティビティ名 | |
| 戻り値 | ブール値 |
| 例 | hasActivity("Approve") → ケースにApproveアクティビティが含まれる場合はtrue |
activityCount
(activityName) 指定したアクティビティがケース内に出現する回数を返します。
| パラメーター | | activityName | string | 数えるアクティビティ名 | |
| 戻り値 | 数値 |
| 例 | activityCount("Review") → ケース内のReviewアクティビティの回数 |
アクティビティ間のタイミング
ケース内の特定のアクティビティ間の時間を測定します。
timeBetween
(activityA, activityB) アクティビティAの初回発生からアクティビティBの初回発生までの時間を返します。
| パラメーター | | activityA | string | 1つ目のアクティビティ | | activityB | string | 2つ目のアクティビティ | |
| 戻り値 | 数値 |
| 例 | timeBetween("Submit", "Approve") → SubmitからApproveまでの時間(ミリ秒) |
timeSinceActivity
(activityName) 現在のイベントより前に指定したアクティビティが最後に発生してからの経過時間です。
| パラメーター | | activityName | string | アクティビティ名 | |
| 戻り値 | 数値 |
| 例 | timeSinceActivity("Start") → 最後のStartアクティビティからの経過時間 |
timeToActivity
(activityName) 現在のイベントより後に指定したアクティビティが次に発生するまでの時間です。
| パラメーター | | activityName | string | アクティビティ名 | |
| 戻り値 | 数値 |
| 例 | timeToActivity("Complete") → 次のCompleteアクティビティまでの時間 |
SLA関数
サービスレベル合意(SLA)の監視と違反の検出です。
slaBreached
(duration, threshold) 期間がSLAのしきい値を超えた場合にtrueを返します。
| パラメーター | | duration | number | 実際の期間 | | threshold | number | SLAのしきい値 | |
| 戻り値 | ブール値 |
| 例 | slaBreached(100000, 86400000) → false slaBreached(caseThroughputTime, 86400000) → ケースが24時間のSLAを超えた場合はtrue |
slaRemaining
(startDate, slaDuration) SLA違反までの残り時間を返します。違反後は負の値になります。
| パラメーター | | startDate | date | 開始タイムスタンプ | | slaDuration | number | SLA期間(ミリ秒) | |
| 戻り値 | 数値 |
| 例 | slaRemaining(caseStartTime, 172800000) → 48時間のSLAに対する残り時間 |
caseAge
Property ケース開始からの経過時間です。最初のイベントから現在までをミリ秒で返します。
自己ループの検出
同じアクティビティが連続して発生する自己ループパターンを検出し、件数を数えます。
isSelfLoop
Property 現在のアクティビティがケース内の直前のアクティビティと同じ場合にtrueを返します。
selfLoopCount
Property 現在のケースで同じアクティビティが連続して繰り返された回数です。
リソース分析
ケース内のリソースの引き継ぎと変更を検出します。
isResourceChange
(expr) 式の値が直前のイベントから変わった場合にtrueを返します。
| パラメーター | |
| 戻り値 | ブール値 |
| 例 | isResourceChange(Resource) → リソースが直前のイベントと異なる場合はtrue |
resourceHandoffCount
(expr) ケース全体で値の変更回数を数えます。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | resourceHandoffCount(Resource) → Alice→Alice→Bob→Bob→Aliceの場合は2 |
| 注記 | Athenaを基盤とする式ではまだ利用できません。バックエンドクエリでは、派生属性でisResourceChange(expr)とcaseCountIf(...)を組み合わせて使用してください。 |
統計、ランキング、値の変化
ランキング関数
ケース内またはすべてのイベントを対象に、式の値でイベントを順位付けします。
caseRank
(expr) 式の値で並べた、ケース内での現在のイベントの順位です。同順位の場合は順位を飛ばします。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRank(Amount) → ケース内でAmountに基づく順位 |
caseDenseRank
(expr) ケース内の密順位です。同順位があっても順位を飛ばしません。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseDenseRank(Amount) → ケース内でAmountに基づく密順位 |
allRank
(expr) すべてのイベントを対象に順位付けします。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | allRank(Duration) → Durationに基づく全体順位 |
allPercentRank
(expr) すべてのイベントを対象にしたパーセント順位を0~1で返します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | allPercentRank(Duration) → パーセント順位(0~1) |
値の変更検出
イベント間で値が変化したタイミングを検出します。
changed
(expr) 式の値が前のイベントと異なる場合にtrueを返します。
| パラメーター | |
| 戻り値 | ブール値 |
| 例 | changed(Resource) → 前のイベントからResourceが変わっている場合はtrue |
caseChanges
(expr) ケース内のすべてのイベントにおける値の変化回数を数えます。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseChanges(Resource) → ケース内のリソース引き継ぎ回数 |
| 注記 | Athenaを基盤とする式ではまだ利用できません。バックエンドクエリでは、派生属性でchanged(expr)とcaseCountIf(...)を組み合わせて使用してください。 |
条件付き累積集計
現在のイベントまでを対象に、条件付きの累計値を計算します。
caseRunningSumIf
(expr, condition) 現在のイベントまでの条件付き累計を返します。
| パラメーター | | expr | number | 合計する式 | | condition | boolean | イベントを絞り込む条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningSumIf(Amount, Status == "Paid") → StatusがPaidであるイベントのAmountの累計 |
caseRunningCountIf
(condition) 現在のイベントまでの条件付き累計件数を返します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningCountIf(Activity == "Error") → Errorアクティビティの累計件数 |
caseRunningAvgIf
(expr, condition) 現在のイベントまでの条件付き平均を返します。
| パラメーター | | expr | number | 平均する式 | | condition | boolean | イベントを絞り込む条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningAvgIf(Duration, Priority == "High") → 優先度が高いイベントのDurationの累計平均 |
経過時間プロパティ
ケース内の進捗と経過時間を測定するためのプロパティです。
elapsedSinceStart
Property ケース開始からの経過時間をミリ秒単位で返します。
remainingInCase
Property ケース終了までの残り時間をミリ秒単位で返します。
percentComplete
Property ケースの進捗を0から1までの割合で返します。
拡張条件付き集計
中央値、標準偏差、重複しない値の件数を求める追加の条件付き集計関数です。
caseMedianIf
(expr, condition) 条件がtrueとなるケースイベントの条件付き中央値を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | caseMedianIf(Amount, Activity == "Review") → Reviewアクティビティの金額の中央値 |
allMedianIf
(expr, condition) 条件がtrueとなるすべてのイベントの条件付き中央値を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | allMedianIf(Amount, Status == "Complete") → 完了イベント全体の中央値 |
caseStdDevIf
(expr, condition) ケースイベントの条件付き標準偏差を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | caseStdDevIf(Duration, Activity == "Review") → ケース内のReviewの所要時間の標準偏差 |
allStdDevIf
(expr, condition) すべてのイベントの条件付き標準偏差を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | allStdDevIf(Amount, Priority == "High") → 優先度が高いイベント全体の標準偏差 |
caseCountDistinctIf
(expr, condition) ケースイベント全体で条件に一致する重複しない値の件数を数えます。
| パラメーター | | expr | any | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | caseCountDistinctIf(Category, Amount > 100) → 金額が大きい重複しないカテゴリ |
allCountDistinctIf
(expr, condition) すべてのイベントで条件に一致する重複しない値の件数を数えます。
| パラメーター | | expr | any | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | allCountDistinctIf(User, Department == "Sales") → Sales部門の重複しないユーザー |
拡張累積集計
中央値、標準偏差、条件付きの最小値と最大値を求める追加の累積集計関数です。
caseRunningMedian
(expr) 現在のイベントまでの値の累積中央値を返します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningMedian(Amount) → 金額の累積中央値 |
caseRunningStdDev
(expr) 現在のイベントまでの累積標準偏差を返します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | caseRunningStdDev(Amount) → 累積標準偏差 |
caseRunningMinIf
(expr, condition) 現在のイベントまでの条件付き累積最小値を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningMinIf(Amount, Activity == "Review") → Reviewの金額の累積最小値 |
caseRunningMaxIf
(expr, condition) 現在のイベントまでの条件付き累積最大値を返します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | フィルター条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningMaxIf(Amount, Priority == "High") → 優先度が高い金額の累積最大値 |
JSON関数
関連トピック