式言語を構成する関数群を紹介します。以下では、各グループの関数、パラメーター、戻り値の型、使用例を確認できます。
1. テキストとパターンの関数
正規表現関数
正規表現を使ってパターンを検索、置換する関数です。
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として指定した位置の部分を返します。
| パラメーター | | 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 |
2. 日付と期間の関数
期間の換算
ミリ秒単位の期間を、一般的な時間単位に換算します。
durationInDays
(ms) ミリ秒を日数に換算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInDays(86400000) → 1 durationInDays(caseThroughputTime) → 日数で表した処理時間 |
durationInHours
(ms) ミリ秒を時間に換算します。
| パラメーター | |
| 戻り値 | 数値 |
| 例 | durationInHours(3600000) → 1 durationInHours(stepDuration) → 時間で表したステップの所要時間 |
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 |
3. 論理関数
複数条件の判定
値を複数のケースと照合します。
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) 値が下限と上限を含む範囲内にある場合に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の入れ子 |
4. フロー、アクティビティ、SLAの関数
前後関係の判定
ケース内で、あるアクティビティの前に別のアクティビティが実行されたかを確認します。
directlyPrecededBy
(activity, predecessor) ケース内で、2つ目のアクティビティが1つ目のアクティビティの直前に実行された場合にtrueを返します。
| パラメーター | | activity | string | 確認するアクティビティ | | predecessor | string | 前に実行されたと想定するアクティビティ | |
| 戻り値 | ブール値 |
| 例 | directlyPrecededBy("Approve", "Review") → ReviewがApproveの直前に実行された場合はtrue |
| 関連項目 | |
eventuallyPrecededBy
(activity, predecessor) ケース内で、2つ目のアクティビティが1つ目のアクティビティより前に実行された場合に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関数
サービスレベル契約を監視し、違反を検出します。
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(...)を組み合わせてください。 |
5. 統計、順位、値の変化
順位付け関数
ケース内またはすべてのイベントを対象に、式の値に基づいてイベントを順位付けします。
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) → 直前のイベントから担当者が変わった場合は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) 現在のイベントまでを対象に、条件付きの累積件数を計算します。
| パラメーター | | condition | boolean | 件数を数える条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningCountIf(Activity == "Error") → Errorアクティビティの累積件数 |
caseRunningAvgIf
(expr, condition) 現在のイベントまでを対象に、条件付きの累積平均を計算します。
| パラメーター | | expr | number | 平均する式 | | condition | boolean | イベントを絞り込む条件 | |
| 戻り値 | 数値 |
| 例 | caseRunningAvgIf(Duration, Priority == "High") → 優先度の高いイベントの実行中平均時間 |
経過時間のプロパティ
ケース内の進捗と経過時間を測定するプロパティです。
elapsedSinceStart
Property ケース開始からの経過時間(ミリ秒)。
remainingInCase
Property ケース終了までの残り時間(ミリ秒)。
percentComplete
Property ケースの進捗を0から1までの割合で表します。
条件付き集計関数の拡張
中央値、標準偏差、個別の値の件数を求める追加の条件付き集計関数です。
caseMedianIf
(expr, condition) 条件を満たすケース内のイベントを対象に、条件付き中央値を計算します。
| パラメーター | | expr | number | 値の式 | | condition | boolean | 絞り込み条件 | |
| 戻り値 | 数値 |
| 例 | caseMedianIf(Amount, Activity == "Review") → Reviewアクティビティの金額の中央値 |
allMedianIf
(expr, condition) 条件を満たすすべてのイベントを対象に、条件付き中央値を計算します。
| パラメーター | | 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") → 営業部門のユーザーの個別件数 |
実行中集計関数の拡張
中央値、標準偏差、条件付き最小値・最大値を求める追加の実行中集計関数です。
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") → 優先度が高いイベントの実行中最大値 |
6. JSON関数
7. 関連トピック