Queste famiglie di funzioni completano il linguaggio delle espressioni. Per ogni gruppo sono elencate le funzioni, i parametri, il tipo restituito e alcuni esempi.
1. Funzioni per testo e modelli
Funzioni per le espressioni regolari
Funzioni per trovare e sostituire schemi tramite espressioni regolari.
regexMatch
(text, pattern) Verifica se una stringa corrisponde a uno schema di espressione regolare.
| Parametri | | text | string | Stringa da verificare | | pattern | string | Schema di espressione regolare | |
| Valori restituiti | booleano |
| Esempi | regexMatch("abc123", "[0-9]+") → true regexMatch("hello", "^[0-9]+$") → false |
| Vedi anche | |
regexReplace
(text, pattern, replacement) Sostituisce nella stringa tutte le corrispondenze con uno schema di espressione regolare.
| Parametri | | text | string | Stringa di input | | pattern | string | Schema di espressione regolare da trovare | | replacement | string | Stringa sostitutiva | |
| Valori restituiti | stringa |
| Esempi | regexReplace("abc123def456", "[0-9]+", "#") → abc#def# regexReplace("hello world", "\s+", " ") → hello world |
| Vedi anche | |
(text, pattern, group?) Estrae da una stringa la prima corrispondenza con uno schema di espressione regolare. È possibile estrarre anche uno specifico gruppo di cattura.
| Parametri | | text | string | Stringa di input | | pattern | string | Schema di espressione regolare | | group (facoltativo) | number | Indice del gruppo di cattura; 0 restituisce l’intera corrispondenza (predefinito: 0) | |
| Valori restituiti | stringa |
| Esempi | regexExtract("abc123def", "[0-9]+") → 123 regexExtract("2025-01-15", "(\d{4})-(\d{2})", 1) → 2025 |
| Vedi anche | |
Funzioni per le stringhe
Altre funzioni per manipolare le stringhe.
repeat
(text, count) Ripete il testo per il numero di volte specificato.
| Parametri | | text | string | Testo da ripetere | | count | number | Numero di ripetizioni | |
| Valori restituiti | stringa |
| Esempi | repeat("ab", 3) → "ababab" |
countOccurrences
(text, search) Conta le occorrenze non sovrapposte di una sottostringa.
| Parametri | | text | string | Testo in cui cercare | | search | string | Sottostringa da trovare | |
| Valori restituiti | numero |
| Esempi | countOccurrences("abcabc", "abc") → 2 |
split
(text, delimiter, index) Divide il testo in corrispondenza di un delimitatore e restituisce la parte indicata, contando da 1.
| Parametri | | text | string | Testo da dividere | | delimiter | string | Delimitatore | | index | number | Indice della parte da restituire, a partire da 1 | |
| Valori restituiti | stringa |
| Esempi | split("a-b-c", "-", 2) → "b" |
exact
(a, b) Confronto tra stringhe con distinzione tra maiuscole e minuscole. Restituisce true se le stringhe sono identiche.
| Parametri | | a | string | Prima stringa | | b | string | Seconda stringa | |
| Valori restituiti | booleano |
| Esempi | exact("Hello", "hello") → false |
2. Funzioni per date e durate
Funzioni per le durate
Converte le durate espresse in millisecondi nelle unità di tempo più comuni.
durationInDays
(ms) Converte i millisecondi in giorni.
| Parametri | | ms | number | Durata in millisecondi | |
| Valori restituiti | numero |
| Esempi | durationInDays(86400000) → 1 durationInDays(caseThroughputTime) → Tempo di attraversamento in giorni |
durationInHours
(ms) Converte i millisecondi in ore.
| Parametri | | ms | number | Durata in millisecondi | |
| Valori restituiti | numero |
| Esempi | durationInHours(3600000) → 1 durationInHours(stepDuration) → Durata del passaggio in ore |
durationInMinutes
(ms) Converte i millisecondi in minuti.
| Parametri | | ms | number | Durata in millisecondi | |
| Valori restituiti | numero |
| Esempi | durationInMinutes(60000) → 1 durationInMinutes(waitingTime) → Tempo di attesa in minuti |
durationInSeconds
(ms) Converte i millisecondi in secondi.
| Parametri | | ms | number | Durata in millisecondi | |
| Valori restituiti | numero |
| Esempi | durationInSeconds(1500) → 1.5 |
Creazione delle date
Crea date a partire da singoli componenti oppure interpreta stringhe come date.
date
(year, month, day) Crea una data UTC a partire da anno, mese e giorno.
| Parametri | | year | number | Anno | | month | number | Mese (1-12) | | day | number | Giorno del mese | |
| Valori restituiti | data |
| Esempi | date(2024, 1, 1) → 1704067200000 date(2024, 6, 15) → 15 giugno 2024 |
toDate
(value, format?) Interpreta un valore come data. Accetta numeri, ad esempio i millisecondi dall’epoca Unix, e stringhe.
| Parametri | | value | any | Valore da convertire in data | | format (facoltativo) | string | Formato della data (facoltativo) | |
| Valori restituiti | data |
| Esempi | toDate(1704067200000) → 1704067200000 toDate("2024-01-15") → 15 gennaio 2024 toDate("31/12/2024 23:45:59", "dd/MM/yyyy HH:mm:ss") → 1735688759000 |
| Note | Se si specifica un formato, utilizzi gli stessi token supportati da formatDate. L’interpretazione avviene in UTC. |
today
() Restituisce la data corrente alle 00:00 UTC.
| Valori restituiti | data |
| Esempi | today() → Data corrente alle 00:00 |
Limiti dei periodi di data
Tronca o arrotonda le date ai limiti dei periodi.
startOfDay
(date) Tronca una data all’inizio del giorno (mezzanotte).
| Parametri | | date | date | Data da troncare | |
| Valori restituiti | data |
| Esempi | startOfDay(StartTime) → Mezzanotte dello stesso giorno |
startOfWeek
(date) Restituisce l’inizio della settimana (lunedì).
| Parametri | |
| Valori restituiti | data |
| Esempi | startOfWeek(StartTime) → Lunedì della stessa settimana |
startOfMonth
(date) Restituisce il primo giorno del mese.
| Parametri | |
| Valori restituiti | data |
| Esempi | startOfMonth(StartTime) → Primo giorno del mese |
startOfYear
(date) Restituisce il 1º gennaio dell’anno.
| Parametri | |
| Valori restituiti | data |
| Esempi | startOfYear(StartTime) → 1º gennaio |
endOfWeek
(date) Restituisce la fine della settimana (domenica alle 23:59:59).
| Parametri | |
| Valori restituiti | data |
| Esempi | endOfWeek(StartTime) → Fine della domenica |
endOfMonth
(date) Restituisce la fine del mese alle 23:59:59.
| Parametri | |
| Valori restituiti | data |
| Esempi | endOfMonth(StartTime) → Ultimo giorno del mese, a fine giornata |
endOfYear
(date) Restituisce il 31 dicembre alle 23:59:59.
| Parametri | |
| Valori restituiti | data |
| Esempi | endOfYear(StartTime) → 31 dicembre, a fine giornata |
Funzioni rapide per le date
Funzioni pratiche per calcolare la differenza e la somma tra date.
daysBetween
(date1, date2) Restituisce la differenza in giorni tra due date.
| Parametri | | date1 | date | Data di inizio | | date2 | date | Data di fine | |
| Valori restituiti | numero |
| Esempi | daysBetween(StartTime, EndTime) → Durata in giorni tra due date |
hoursBetween
(date1, date2) Restituisce la differenza in ore tra due date.
| Parametri | | date1 | date | Data di inizio | | date2 | date | Data di fine | |
| Valori restituiti | numero |
| Esempi | hoursBetween(StartTime, EndTime) → Durata in ore tra due date |
minutesBetween
(date1, date2) Restituisce la differenza in minuti tra due date.
| Parametri | | date1 | date | Data di inizio | | date2 | date | Data di fine | |
| Valori restituiti | numero |
| Esempi | minutesBetween(StartTime, EndTime) → Durata in minuti tra due date |
secondsBetween
(date1, date2) Restituisce la differenza in secondi tra due date.
| Parametri | | date1 | date | Data di inizio | | date2 | date | Data di fine | |
| Valori restituiti | numero |
| Esempi | secondsBetween(StartTime, EndTime) → Durata in secondi tra due date |
addDays
(date, days) Aggiunge giorni a una data.
| Parametri | | date | date | Data di riferimento | | days | number | Numero di giorni da aggiungere | |
| Valori restituiti | data |
| Esempi | addDays(StartTime, 5) → Data cinque giorni dopo |
addHours
(date, hours) Aggiunge ore a una data.
| Parametri | | date | date | Data di riferimento | | hours | number | Numero di ore da aggiungere | |
| Valori restituiti | data |
| Esempi | addHours(StartTime, 3) → Data tre ore dopo |
addMinutes
(date, minutes) Aggiunge minuti a una data.
| Parametri | | date | date | Data di riferimento | | minutes | number | Numero di minuti da aggiungere | |
| Valori restituiti | data |
| Esempi | addMinutes(StartTime, 30) → Data 30 minuti dopo |
addSeconds
(date, seconds) Aggiunge secondi a una data.
| Parametri | | date | date | Data di riferimento | | seconds | number | Numero di secondi da aggiungere | |
| Valori restituiti | data |
| Esempi | addSeconds(StartTime, 45) → Data 45 secondi dopo |
endOfDay
(date) Restituisce l’ultimo istante del giorno (23:59:59.999) corrispondente a una data.
| Parametri | |
| Valori restituiti | data |
| Esempi | endOfDay(StartTime) → 23:59:59 dello stesso giorno |
startOfQuarter
(date) Restituisce il primo giorno del trimestre corrispondente a una data.
| Parametri | |
| Valori restituiti | data |
| Esempi | startOfQuarter(StartTime) → 2024-04-01 per una data di giugno |
endOfQuarter
(date) Restituisce l’ultimo istante del trimestre corrispondente a una data.
| Parametri | |
| Valori restituiti | data |
| Esempi | endOfQuarter(StartTime) → 2024-06-30T23:59:59Z per una data di giugno |
3. Funzioni logiche
Condizione a più alternative
Confronta un valore con più casi.
switch
(value, match1, result1, ..., default?) Confronta un valore con un elenco di casi e restituisce il risultato corrispondente. Funziona in modo simile a una serie di condizioni if.
| Parametri | | value | any | Valore da confrontare | | match1, result1, ... | any | Coppie di valori da confrontare e risultati | | default (facoltativo) | any | Risultato predefinito se non ci sono corrispondenze (facoltativo) | |
| Valori restituiti | qualsiasi |
| Esempi | switch("a", "a", 1, "b", 2, 0) → 1 switch(Status, "Open", 1, "Closed", 2, 0) → 1 se Open, 2 se Closed, altrimenti 0 |
| Note | Accetta un numero variabile di argomenti: switch(value, match1, result1, match2, result2, ..., default) |
Verifica degli intervalli
Verifica se i valori rientrano in un intervallo oppure li limita a un intervallo specificato.
between
(value, low, high) Restituisce true se un valore è compreso tra il limite inferiore e quello superiore, estremi inclusi.
| Parametri | | value | number | Valore da verificare | | low | number | Limite inferiore | | high | number | Limite superiore | |
| Valori restituiti | booleano |
| Esempi | between(Amount, 100, 1000) → true se Amount è compreso tra 100 e 1000 |
clamp
(value, min, max) Limita un valore all’intervallo [min, max].
| Parametri | | value | number | Valore da limitare | | min | number | Valore minimo | | max | number | Valore massimo | |
| Valori restituiti | numero |
| Esempi | clamp(Score, 0, 100) → Score limitato all’intervallo 0-100 |
Associazione con let
Assegna nomi a valori intermedi da utilizzare nelle espressioni complesse.
let
(name, value, body) Assegna un valore a un nome, quindi valuta l’espressione principale rendendo disponibile quel nome.
| Parametri | | name | string | Nome della variabile (stringa letterale) | | value | any | Espressione da assegnare | | body | any | Espressione che utilizza la variabile assegnata | |
| Valori restituiti | qualsiasi |
| Esempi | let("avg", caseAvg(Amount), Amount - avg) → Scostamento dalla media del caso let("x", Amount * 2, let("y", x + 3, x * y)) → Associazioni let annidate |
4. Funzioni per flussi, attività e SLA
Predicati di precedenza
Verifica se un’attività è preceduta da un’altra attività nel caso.
directlyPrecededBy
(activity, predecessor) Restituisce true se la seconda attività precede direttamente la prima nel caso.
| Parametri | | activity | string | Attività da verificare | | predecessor | string | Attività precedente prevista | |
| Valori restituiti | booleano |
| Esempi | directlyPrecededBy("Approve", "Review") → true se Review precede direttamente Approve |
| Vedi anche | |
eventuallyPrecededBy
(activity, predecessor) Restituisce true se la seconda attività precede la prima nel caso, anche se non immediatamente.
| Parametri | | activity | string | Attività da verificare | | predecessor | string | Attività precedente prevista | |
| Valori restituiti | booleano |
| Esempi | eventuallyPrecededBy("Ship", "Order") → true se Order compare prima di Ship nel caso |
| Vedi anche | |
Rilevamento delle rilavorazioni
Individua gli schemi di rilavorazione in cui le attività si ripetono all’interno di un caso.
isRework
Property True se l’attività corrente si è già verificata in precedenza nel caso.
reworkCount
Property Numero totale di esecuzioni ripetute delle attività nel caso.
activityOccurrence
Property Numero di occorrenze di questa attività nel caso: 1 per la prima, 2 per la seconda e così via.
Query sulle attività
Verifica se le attività compaiono in un caso e ne conta le occorrenze.
hasActivity
(activityName) Restituisce true se l’attività indicata compare in un punto qualsiasi del caso.
| Parametri | | activityName | string | Nome dell’attività da verificare | |
| Valori restituiti | booleano |
| Esempi | hasActivity("Approve") → true se il caso contiene un’attività Approve |
activityCount
(activityName) Restituisce il numero di volte in cui l’attività indicata compare nel caso.
| Parametri | | activityName | string | Nome dell’attività da contare | |
| Valori restituiti | numero |
| Esempi | activityCount("Review") → Numero di attività Review nel caso |
Tempi tra le attività
Misura il tempo che intercorre tra attività specifiche di un caso.
timeBetween
(activityA, activityB) Restituisce il tempo tra la prima occorrenza dell’attività A e la prima occorrenza dell’attività B.
| Parametri | | activityA | string | Prima attività | | activityB | string | Seconda attività | |
| Valori restituiti | numero |
| Esempi | timeBetween("Submit", "Approve") → Tempo in millisecondi da Submit ad Approve |
timeSinceActivity
(activityName) Tempo trascorso dall’ultima occorrenza dell’attività indicata prima dell’evento corrente.
| Parametri | | activityName | string | Nome dell’attività | |
| Valori restituiti | numero |
| Esempi | timeSinceActivity("Start") → Tempo trascorso dall’ultima attività Start |
timeToActivity
(activityName) Tempo che manca alla prossima occorrenza dell’attività indicata dopo l’evento corrente.
| Parametri | | activityName | string | Nome dell’attività | |
| Valori restituiti | numero |
| Esempi | timeToActivity("Complete") → Tempo che manca alla prossima attività Complete |
Funzioni SLA
Monitora gli accordi sul livello di servizio e rileva le violazioni.
slaBreached
(duration, threshold) Restituisce true se una durata supera la soglia SLA.
| Parametri | | duration | number | Durata effettiva | | threshold | number | Soglia SLA | |
| Valori restituiti | booleano |
| Esempi | slaBreached(100000, 86400000) → false slaBreached(caseThroughputTime, 86400000) → true se il caso supera lo SLA di 24 ore |
slaRemaining
(startDate, slaDuration) Restituisce il tempo che manca alla violazione dello SLA oppure un valore negativo se lo SLA è già stato violato.
| Parametri | | startDate | date | Timestamp di inizio | | slaDuration | number | Durata SLA in millisecondi | |
| Valori restituiti | numero |
| Esempi | slaRemaining(caseStartTime, 172800000) → Tempo rimanente per uno SLA di 48 ore |
caseAge
Property Tempo trascorso dall’inizio del caso, in millisecondi dal primo evento a ora.
Rilevamento delle ripetizioni consecutive
Rileva e conta le sequenze in cui la stessa attività si ripete consecutivamente.
isSelfLoop
Property True se l’attività corrente è uguale a quella precedente nel caso.
selfLoopCount
Property Numero di ripetizioni consecutive della stessa attività nel caso corrente.
Analisi delle risorse
Rileva i passaggi di consegne e i cambi di risorsa all’interno di un caso.
isResourceChange
(expr) Restituisce true se il valore dell’espressione è cambiato rispetto all’evento precedente.
| Parametri | | expr | any | Espressione di colonna da verificare per rilevare i cambiamenti | |
| Valori restituiti | booleano |
| Esempi | isResourceChange(Resource) → true se la risorsa è diversa da quella dell’evento precedente |
resourceHandoffCount
(expr) Conta i cambiamenti di valore nel caso.
| Parametri | | expr | any | Espressione di colonna di cui contare i cambiamenti | |
| Valori restituiti | numero |
| Esempi | resourceHandoffCount(Resource) → 2 per Alice→Alice→Bob→Bob→Alice |
| Note | Non ancora disponibile nelle espressioni basate su Athena. Per le query del backend, utilizzi isResourceChange(expr) insieme a caseCountIf(...) in un attributo derivato. |
5. Statistiche, classifiche e variazioni dei valori
Funzioni di ordinamento
Assegna un rango agli eventi in base ai valori di un’espressione, all’interno di un caso o considerando tutti gli eventi.
caseRank
(expr) Rango dell’evento corrente nel caso, ordinato in base al valore dell’espressione; i valori a pari merito lasciano dei salti nella numerazione.
| Parametri | | expr | number | Espressione da usare per l’ordinamento | |
| Valori restituiti | numero |
| Esempi | caseRank(Amount) → Rango di Amount all’interno del caso |
caseDenseRank
(expr) Rango denso all’interno del caso, senza salti per i valori a pari merito.
| Parametri | | expr | number | Espressione da usare per l’ordinamento | |
| Valori restituiti | numero |
| Esempi | caseDenseRank(Amount) → Rango denso di Amount all’interno del caso |
allRank
(expr) Rango calcolato su tutti gli eventi.
| Parametri | | expr | number | Espressione da usare per l’ordinamento | |
| Valori restituiti | numero |
| Esempi | allRank(Duration) → Rango globale in base a Duration |
allPercentRank
(expr) Rango percentile calcolato su tutti gli eventi, da 0 a 1.
| Parametri | | expr | number | Espressione da usare per l’ordinamento | |
| Valori restituiti | numero |
| Esempi | allPercentRank(Duration) → Rango percentile (0-1) |
Rilevamento delle variazioni di valore
Rileva le variazioni di valore tra gli eventi.
changed
(expr) Restituisce true se il valore dell’espressione è diverso da quello dell’evento precedente.
| Parametri | | expr | any | Espressione di cui verificare le variazioni | |
| Valori restituiti | booleano |
| Esempi | changed(Resource) → true se la risorsa è cambiata rispetto all’evento precedente |
caseChanges
(expr) Conta le variazioni di valore in tutti gli eventi del caso.
| Parametri | | expr | any | Espressione di cui verificare le variazioni | |
| Valori restituiti | numero |
| Esempi | caseChanges(Resource) → Numero di passaggi di consegne tra risorse nel caso |
| Note | Non ancora disponibile nelle espressioni basate su Athena. Per le query backend, utilizzi changed(expr) insieme a caseCountIf(...) in un attributo derivato. |
Aggregazioni condizionali progressive
Aggregazioni progressive con condizioni, calcolate fino all’evento corrente.
caseRunningSumIf
(expr, condition) Somma condizionale progressiva fino all’evento corrente.
| Parametri | | expr | number | Espressione da sommare | | condition | boolean | Condizione per filtrare gli eventi | |
| Valori restituiti | numero |
| Esempi | caseRunningSumIf(Amount, Status == "Paid") → Somma progressiva di Amount quando Status è Paid |
caseRunningCountIf
(condition) Conteggio condizionale progressivo fino all’evento corrente.
| Parametri | | condition | boolean | Condizione da conteggiare | |
| Valori restituiti | numero |
| Esempi | caseRunningCountIf(Activity == "Error") → Conteggio progressivo delle attività Error |
caseRunningAvgIf
(expr, condition) Media condizionale progressiva fino all’evento corrente.
| Parametri | | expr | number | Espressione da mediare | | condition | boolean | Condizione per filtrare gli eventi | |
| Valori restituiti | numero |
| Esempi | caseRunningAvgIf(Duration, Priority == "High") → Durata media progressiva degli eventi ad alta priorità |
Proprietà del tempo trascorso
Proprietà per misurare l’avanzamento e il tempo trascorso all’interno di un caso.
elapsedSinceStart
Property Tempo trascorso dall’inizio del caso, in millisecondi.
remainingInCase
Property Tempo rimanente alla fine del caso, in millisecondi.
percentComplete
Property Avanzamento del caso espresso come frazione da 0 a 1.
Aggregazioni condizionali estese
Funzioni di aggregazione condizionale aggiuntive per mediana, deviazione standard e conteggi distinti.
caseMedianIf
(expr, condition) Calcola la mediana condizionale degli eventi del caso per cui la condizione è vera.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | caseMedianIf(Amount, Activity == "Review") → Importo mediano per le attività Review |
allMedianIf
(expr, condition) Calcola la mediana condizionale di tutti gli eventi per cui la condizione è vera.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | allMedianIf(Amount, Status == "Complete") → Mediana complessiva degli eventi completati |
caseStdDevIf
(expr, condition) Calcola la deviazione standard condizionale degli eventi del caso.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | caseStdDevIf(Duration, Activity == "Review") → Deviazione standard della durata delle attività Review nel caso |
allStdDevIf
(expr, condition) Calcola la deviazione standard condizionale di tutti gli eventi.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | allStdDevIf(Amount, Priority == "High") → Deviazione standard complessiva per gli eventi ad alta priorità |
caseCountDistinctIf
(expr, condition) Conta i valori distinti che soddisfano una condizione tra gli eventi del caso.
| Parametri | | expr | any | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | caseCountDistinctIf(Category, Amount > 100) → Categorie distinte con importi elevati |
allCountDistinctIf
(expr, condition) Conta i valori distinti che soddisfano una condizione tra tutti gli eventi.
| Parametri | | expr | any | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | allCountDistinctIf(User, Department == "Sales") → Utenti distinti del reparto vendite |
Aggregazioni progressive estese
Funzioni di aggregazione progressiva aggiuntive per mediana, deviazione standard e minimo e massimo condizionali.
caseRunningMedian
(expr) Mediana progressiva dei valori fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valori restituiti | numero |
| Esempi | caseRunningMedian(Amount) → Importo mediano progressivo |
caseRunningStdDev
(expr) Deviazione standard progressiva fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valori restituiti | numero |
| Esempi | caseRunningStdDev(Amount) → Deviazione standard progressiva |
caseRunningMinIf
(expr, condition) Minimo condizionale progressivo fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | caseRunningMinIf(Amount, Activity == "Review") → Importo minimo progressivo per le attività Review |
caseRunningMaxIf
(expr, condition) Massimo condizionale progressivo fino all’evento corrente.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione di filtro | |
| Valori restituiti | numero |
| Esempi | caseRunningMaxIf(Amount, Priority == "High") → Importo massimo progressivo per gli eventi ad alta priorità |
6. Funzioni JSON
7. Argomenti correlati