このページの内容

高度な関数

これらの関数ファミリーは、式言語を補完します。以下の各グループでは、パラメーター、戻り値の型、例とともに関数を一覧にしています。

テキストとパターンの関数

正規表現関数

正規表現でパターンを照合・置換するための関数です。

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
関連項目

regexExtract

(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)

ミリ秒を日数に変換します。

パラメーター
ms number ミリ秒単位のDuration
戻り値 数値
durationInDays(86400000) 1
durationInDays(caseThroughputTime) 日単位のスループット時間

durationInHours

(ms)

ミリ秒を時間に変換します。

パラメーター
ms number ミリ秒単位のDuration
戻り値 数値
durationInHours(3600000) 1
durationInHours(stepDuration) 時間単位のStep Duration

durationInMinutes

(ms)

ミリ秒を分に変換します。

パラメーター
ms number ミリ秒単位のDuration
戻り値 数値
durationInMinutes(60000) 1
durationInMinutes(waitingTime) 分単位の待機時間

durationInSeconds

(ms)

ミリ秒を秒に変換します。

パラメーター
ms number ミリ秒単位のDuration
戻り値 数値
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時として返します。

戻り値 日付
today() 午前0時時点の現在の日付

日付期間の境界

日付を期間の境界に合わせて切り捨てたり、丸めたりします。

startOfDay

(date)

日付をその日の開始時点、つまり午前0時に切り捨てます。

パラメーター
date date 切り捨てる日付
戻り値 日付
startOfDay(StartTime) 同日の午前0時

startOfWeek

(date)

週の開始日である月曜日を返します。

パラメーター
date date 日付
戻り値 日付
startOfWeek(StartTime) 同じ週の月曜日

startOfMonth

(date)

月の初日を返します。

パラメーター
date date 日付
戻り値 日付
startOfMonth(StartTime) 月の初日

startOfYear

(date)

その年の1月1日を返します。

パラメーター
date date 日付
戻り値 日付
startOfYear(StartTime) 1月1日

endOfWeek

(date)

週の終了日時である日曜日の23:59:59を返します。

パラメーター
date date 日付
戻り値 日付
endOfWeek(StartTime) 日曜日の終日

endOfMonth

(date)

月末の23:59:59を返します。

パラメーター
date date 日付
戻り値 日付
endOfMonth(StartTime) 月の最終日、終日

endOfYear

(date)

12月31日の23:59:59を返します。

パラメーター
date date 日付
戻り値 日付
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を返します。

パラメーター
date date 入力日付
戻り値 日付
endOfDay(StartTime) 同日の23:59:59

startOfQuarter

(date)

指定した日付が属する四半期の初日を返します。

パラメーター
date date 入力日付
戻り値 日付
startOfQuarter(StartTime) 6月の日付の場合は2024-04-01

endOfQuarter

(date)

指定した日付の四半期末の時刻を返します。

パラメーター
date 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(5, 1, 10) true
between(Amount, 100, 1000) Amountが100以上1000以下の場合はtrue

clamp

(value, min, max)

値を[min, max]の範囲内に制限します。

パラメーター
value number 範囲内に収める値
min number 最小値
max number 最大値
戻り値 数値
clamp(15, 0, 10) 10
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です。

Type boolean

reworkCount

Property

ケース内で繰り返されたアクティビティ実行の合計数

Type number

activityOccurrence

Property

ケース内でのこのアクティビティの出現回数です。初回は1回目、2回目は2回目として数えます。

Type number

アクティビティクエリ

ケース内のアクティビティの有無と回数を確認します。

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

ケース開始からの経過時間です。最初のイベントから現在までをミリ秒で返します。

Type number

自己ループの検出

同じアクティビティが連続して発生する自己ループパターンを検出し、件数を数えます。

isSelfLoop

Property

現在のアクティビティがケース内の直前のアクティビティと同じ場合にtrueを返します。

Type boolean

selfLoopCount

Property

現在のケースで同じアクティビティが連続して繰り返された回数です。

Type number

リソース分析

ケース内のリソースの引き継ぎと変更を検出します。

isResourceChange

(expr)

式の値が直前のイベントから変わった場合にtrueを返します。

パラメーター
expr any 変更を確認する列の式
戻り値 ブール値
isResourceChange(Resource) リソースが直前のイベントと異なる場合はtrue

resourceHandoffCount

(expr)

ケース全体で値の変更回数を数えます。

パラメーター
expr any 変更回数を数える列の式
戻り値 数値
resourceHandoffCount(Resource) Alice→Alice→Bob→Bob→Aliceの場合は2
注記

Athenaを基盤とする式ではまだ利用できません。バックエンドクエリでは、派生属性でisResourceChange(expr)とcaseCountIf(...)を組み合わせて使用してください。

統計、ランキング、値の変化

ランキング関数

ケース内またはすべてのイベントを対象に、式の値でイベントを順位付けします。

caseRank

(expr)

式の値で並べた、ケース内での現在のイベントの順位です。同順位の場合は順位を飛ばします。

パラメーター
expr number 順位付けに使用する式
戻り値 数値
caseRank(Amount) ケース内でAmountに基づく順位

caseDenseRank

(expr)

ケース内の密順位です。同順位があっても順位を飛ばしません。

パラメーター
expr number 順位付けに使用する式
戻り値 数値
caseDenseRank(Amount) ケース内でAmountに基づく密順位

allRank

(expr)

すべてのイベントを対象に順位付けします。

パラメーター
expr number 順位付けに使用する式
戻り値 数値
allRank(Duration) Durationに基づく全体順位

allPercentRank

(expr)

すべてのイベントを対象にしたパーセント順位を0~1で返します。

パラメーター
expr number 順位付けに使用する式
戻り値 数値
allPercentRank(Duration) パーセント順位(0~1)

値の変更検出

イベント間で値が変化したタイミングを検出します。

changed

(expr)

式の値が前のイベントと異なる場合にtrueを返します。

パラメーター
expr any 変化を確認する式
戻り値 ブール値
changed(Resource) 前のイベントからResourceが変わっている場合はtrue

caseChanges

(expr)

ケース内のすべてのイベントにおける値の変化回数を数えます。

パラメーター
expr any 変化を確認する式
戻り値 数値
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") 優先度が高いイベントのDurationの累計平均

経過時間プロパティ

ケース内の進捗と経過時間を測定するためのプロパティです。

elapsedSinceStart

Property

ケース開始からの経過時間をミリ秒単位で返します。

Type number

remainingInCase

Property

ケース終了までの残り時間をミリ秒単位で返します。

Type number

percentComplete

Property

ケースの進捗を0から1までの割合で返します。

Type number

拡張条件付き集計

中央値、標準偏差、重複しない値の件数を求める追加の条件付き集計関数です。

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)

現在のイベントまでの値の累積中央値を返します。

パラメーター
expr number 値の式
戻り値 数値
caseRunningMedian(Amount) 金額の累積中央値

caseRunningStdDev

(expr)

現在のイベントまでの累積標準偏差を返します。

パラメーター
expr number 値の式
戻り値 数値
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関数

JSON抽出

パス式を使ってJSON文字列から値を抽出します。

jsonExtract

(json, path)

JSONPath式を使ってJSON文字列から値を抽出します。

パラメーター
json string JSON文字列
path string JSONPath式。例:"$.field"
戻り値 任意
jsonExtract("{\"name\":\"John\"}", "$.name") John

jsonValue

(json, path)

JSON文字列からスカラー値を文字列として抽出します。

パラメーター
json string JSON文字列
path string JSONPath式
戻り値 文字列
jsonValue("{\"age\":30}", "$.age") "30"

jsonArrayLength

(json)

JSON配列の長さを返します。

パラメーター
json string JSON配列の文字列
戻り値 数値
jsonArrayLength("[1,2,3]") 3

関連トピック