Queste famiglie di funzioni completano il linguaggio delle espressioni. Ogni gruppo seguente elenca le funzioni con i relativi parametri, il tipo restituito e alcuni esempi.
Funzioni di testo e pattern
Funzioni per espressioni regolari
Funzioni per individuare e sostituire pattern mediante espressioni regolari.
regexMatch
(text, pattern) Verifica se una stringa corrisponde a un pattern di espressione regolare.
| Parametri | | text | string | Stringa da verificare | | pattern | string | Pattern dell'espressione regolare | |
| Valore restituito | booleano |
| Esempi | regexMatch("abc123", "[0-9]+") → true regexMatch("hello", "^[0-9]+$") → false |
| Vedi anche | |
regexReplace
(text, pattern, replacement) Sostituisce ogni occorrenza di un pattern di espressione regolare all'interno di una stringa.
| Parametri | | text | string | Stringa di input | | pattern | string | Pattern dell'espressione regolare da individuare | | replacement | string | Stringa sostitutiva | |
| Valore restituito | stringa |
| Esempi | regexReplace("abc123def456", "[0-9]+", "#") → abc#def# regexReplace("hello world", "\s+", " ") → hello world |
| Vedi anche | |
(text, pattern, group?) Estrae la prima corrispondenza di un pattern di espressione regolare da una stringa. È inoltre possibile estrarre uno specifico gruppo di cattura.
| Parametri | | text | string | Stringa di input | | pattern | string | Pattern dell'espressione regolare | | group (opzionale) | number | Indice del gruppo di cattura, 0 per la corrispondenza completa (predefinito: 0) | |
| Valore restituito | stringa |
| Esempi | regexExtract("abc123def", "[0-9]+") → 123 regexExtract("2025-01-15", "(\d{4})-(\d{2})", 1) → 2025 |
| Vedi anche | |
Utilità per le stringhe
Funzioni aggiuntive per la manipolazione delle stringhe.
repeat
(text, count) Ripete il testo per un numero di volte specificato.
| Parametri | | text | string | Testo da ripetere | | count | number | Numero di ripetizioni | |
| Valore restituito | string |
| 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 | |
| Valore restituito | number |
| Esempi | countOccurrences("abcabc", "abc") → 2 |
split
(text, delimiter, index) Divide il testo in base a un delimitatore e restituisce la parte n, a partire da 1.
| Parametri | | text | string | Testo da dividere | | delimiter | string | Delimitatore da utilizzare | | index | number | Indice della parte da restituire, a partire da 1 | |
| Valore restituito | string |
| Esempi | split("a-b-c", "-", 2) → "b" |
exact
(a, b) Confronto tra stringhe con distinzione tra maiuscole e minuscole. Restituisce true se le due stringhe sono identiche.
| Parametri | | a | string | Prima stringa | | b | string | Seconda stringa | |
| Valore restituito | boolean |
| Esempi | exact("Hello", "hello") → false |
Funzioni di supporto per date e durate
Funzioni di supporto per le durate
Converte le durate espresse in millisecondi nelle unità di tempo comuni.
durationInDays
(ms) Converte i millisecondi in giorni.
| Parametri | | ms | number | Durata in millisecondi | |
| Valore restituito | number |
| Esempi | durationInDays(86400000) → 1 durationInDays(caseThroughputTime) → Tempo di attraversamento in giorni |
durationInHours
(ms) Converte i millisecondi in ore.
| Parametri | | ms | number | Durata in millisecondi | |
| Valore restituito | number |
| Esempi | durationInHours(3600000) → 1 durationInHours(stepDuration) → Durata del passaggio in ore |
durationInMinutes
(ms) Converte i millisecondi in minuti.
| Parametri | | ms | number | Durata in millisecondi | |
| Valore restituito | number |
| Esempi | durationInMinutes(60000) → 1 durationInMinutes(waitingTime) → Tempo di attesa in minuti |
durationInSeconds
(ms) Converte i millisecondi in secondi.
| Parametri | | ms | number | Durata in millisecondi | |
| Valore restituito | number |
| Esempi | durationInSeconds(1500) → 1.5 |
Creazione delle date
Crea date a partire da singole componenti o analizza stringhe trasformandole in date.
date
(year, month, day) Crea una data UTC a partire da anno, mese e giorno.
| Parametri | | year | number | L'anno | | month | number | Il mese (1-12) | | day | number | Il giorno del mese | |
| Valore restituito | data |
| Esempi | date(2024, 1, 1) → 1704067200000 date(2024, 6, 15) → 15 giugno 2024 |
toDate
(value, format?) Analizza un valore trasformandolo in una data. Accetta numeri, come i millisecondi dall'epoch, oppure stringhe.
| Parametri | | value | any | Il valore da convertire in una data | | format (opzionale) | string | Modello di formato della data (facoltativo) | |
| Valore restituito | 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 | Quando viene fornito un formato, utilizzi gli stessi token supportati da formatDate. L'analisi si basa sull'ora UTC. |
today
() Restituisce la data corrente a mezzanotte UTC.
| Valore restituito | data |
| Esempi | today() → Data corrente a mezzanotte |
Limiti dei periodi di data
Tronca o arrotonda le date ai limiti dei periodi.
startOfDay
(date) Tronca una data all'inizio del giorno, a mezzanotte.
| Parametri | | date | date | La data da troncare | |
| Valore restituito | data |
| Esempi | startOfDay(StartTime) → Mezzanotte dello stesso giorno |
startOfWeek
(date) Restituisce l'inizio della settimana, lunedì.
| Parametri | |
| Valore restituito | data |
| Esempi | startOfWeek(StartTime) → Lunedì della stessa settimana |
startOfMonth
(date) Restituisce il primo giorno del mese.
| Parametri | |
| Valore restituito | data |
| Esempi | startOfMonth(StartTime) → Primo giorno del mese |
startOfYear
(date) Restituisce il 1° gennaio dell'anno.
| Parametri | |
| Valore restituito | data |
| Esempi | startOfYear(StartTime) → 1° gennaio |
endOfWeek
(date) Restituisce la fine della settimana, domenica alle 23:59:59.
| Parametri | |
| Valore restituito | data |
| Esempi | endOfWeek(StartTime) → Fine della giornata di domenica |
endOfMonth
(date) Restituisce la fine del mese alle 23:59:59.
| Parametri | |
| Valore restituito | data |
| Esempi | endOfMonth(StartTime) → Ultimo giorno del mese, fine della giornata |
endOfYear
(date) Restituisce il 31 dicembre alle 23:59:59.
| Parametri | |
| Valore restituito | data |
| Esempi | endOfYear(StartTime) → 31 dicembre, fine della giornata |
Scorciatoie per le date
Funzioni pratiche per le operazioni più comuni di calcolo della differenza e dell'aggiunta di date.
daysBetween
(date1, date2) Restituisce la differenza in giorni tra due date.
| Parametri | | date1 | date | Data di inizio | | date2 | date | Data di fine | |
| Valore restituito | number |
| 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 | |
| Valore restituito | number |
| 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 | |
| Valore restituito | number |
| 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 | |
| Valore restituito | number |
| Esempi | secondsBetween(StartTime, EndTime) → Durata in secondi tra due date |
addDays
(date, days) Aggiunge giorni a una data.
| Parametri | | date | date | Data di base | | days | number | Numero di giorni da aggiungere | |
| Valore restituito | data |
| Esempi | addDays(StartTime, 5) → Data di 5 giorni successiva |
addHours
(date, hours) Aggiunge ore a una data.
| Parametri | | date | date | Data di base | | hours | number | Numero di ore da aggiungere | |
| Valore restituito | data |
| Esempi | addHours(StartTime, 3) → Data di 3 ore successiva |
addMinutes
(date, minutes) Aggiunge minuti a una data.
| Parametri | | date | date | Data di base | | minutes | number | Numero di minuti da aggiungere | |
| Valore restituito | data |
| Esempi | addMinutes(StartTime, 30) → Data di 30 minuti successiva |
addSeconds
(date, seconds) Aggiunge secondi a una data.
| Parametri | | date | date | Data di base | | seconds | number | Numero di secondi da aggiungere | |
| Valore restituito | data |
| Esempi | addSeconds(StartTime, 45) → Data di 45 secondi successiva |
endOfDay
(date) Restituisce la fine della giornata, 23:59:59.999, per una determinata data.
| Parametri | |
| Valore restituito | data |
| Esempi | endOfDay(StartTime) → 23:59:59 dello stesso giorno |
startOfQuarter
(date) Restituisce il primo giorno del trimestre per una determinata data.
| Parametri | |
| Valore restituito | data |
| Esempi | startOfQuarter(StartTime) → 2024-04-01 per una data di giugno |
endOfQuarter
(date) Restituisce l'ultimo istante del trimestre per una determinata data.
| Parametri | |
| Valore restituito | data |
| Esempi | endOfQuarter(StartTime) → 2024-06-30T23:59:59Z per una data di giugno |
Funzioni di supporto per la logica
Condizionale a più rami
Confronta un valore con più casi.
switch
(value, match1, result1, ..., default?) Confronta un valore con un elenco di casi e restituisce il risultato corrispondente. È simile a un'istruzione if a più rami.
| Parametri | | value | any | Valore da confrontare | | match1, result1, ... | any | Coppie di valori di confronto e risultati | | default (opzionale) | any | Risultato predefinito se non viene trovata alcuna corrispondenza, facoltativo | |
| Valore restituito | 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 argomenti variadici: switch(value, match1, result1, match2, result2, ..., default) |
Controllo degli intervalli
Verifica se i valori rientrano in determinati intervalli o li limita.
between
(value, low, high) Restituisce true se un valore è compreso tra il limite inferiore e quello superiore, inclusi.
| Parametri | | value | number | Valore da verificare | | low | number | Limite inferiore | | high | number | Limite superiore | |
| Valore restituito | boolean |
| 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 | |
| Valore restituito | number |
| Esempi | clamp(Score, 0, 100) → Score limitato all'intervallo 0-100 |
Associazione let
Associa valori intermedi a nomi da utilizzare in espressioni complesse.
let
(name, value, body) Associa un valore a un nome e valuta l'espressione del corpo rendendo disponibile tale associazione.
| Parametri | | name | string | Nome della variabile, stringa letterale | | value | any | Espressione da associare | | body | any | Espressione che utilizza la variabile associata | |
| Valore restituito | 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 |
Funzioni per flussi, attività e SLA
Predicati di precedenza
Verifica se le attività sono precedute da altre attività in un caso.
directlyPrecededBy
(activity, predecessor) Restituisce true se la prima attività è preceduta direttamente dalla seconda attività nel caso.
| Parametri | | activity | string | L'attività da verificare | | predecessor | string | L'attività predecessore prevista | |
| Valore restituito | boolean |
| Esempi | directlyPrecededBy("Approve", "Review") → true se Review precede direttamente Approve |
| Vedi anche | |
eventuallyPrecededBy
(activity, predecessor) Restituisce true se la prima attività è preceduta successivamente dalla seconda attività nel caso.
| Parametri | | activity | string | L'attività da verificare | | predecessor | string | L'attività predecessore prevista | |
| Valore restituito | boolean |
| Esempi | eventuallyPrecededBy("Ship", "Order") → true se Order compare prima di Ship nel caso |
| Vedi anche | |
Rilevamento delle rilavorazioni
Identifica i pattern di rilavorazione in cui le attività si ripetono all'interno di un caso.
isRework
Property True se l'attività corrente si è verificata in precedenza nel caso.
reworkCount
Property Numero totale di esecuzioni ripetute delle attività nel caso.
activityOccurrence
Property Numero di occorrenza di questa attività nel caso: 1 la prima volta, 2 la seconda e così via.
Query sulle attività
Verifica la presenza delle attività e ne conta le occorrenze all'interno di un caso.
hasActivity
(activityName) Restituisce true se l'attività indicata compare in qualsiasi punto del caso.
| Parametri | | activityName | string | Nome dell'attività da verificare | |
| Valore restituito | boolean |
| 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 | |
| Valore restituito | number |
| Esempi | activityCount("Review") → Numero di attività Review nel caso |
Temporizzazione tra attività
Misura il tempo tra attività specifiche all'interno 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à | |
| Valore restituito | number |
| Esempi | timeBetween("Submit", "Approve") → Tempo in ms da Submit ad Approve |
timeSinceActivity
(activityName) Tempo trascorso dall'ultima occorrenza dell'attività indicata prima dell'evento corrente.
| Parametri | | activityName | string | Nome dell'attività | |
| Valore restituito | number |
| Esempi | timeSinceActivity("Start") → Tempo trascorso dall'ultima attività Start |
timeToActivity
(activityName) Tempo che manca alla successiva occorrenza dell'attività indicata dopo l'evento corrente.
| Parametri | | activityName | string | Nome dell'attività | |
| Valore restituito | number |
| Esempi | timeToActivity("Complete") → Tempo che manca alla successiva attività Complete |
Funzioni SLA
Monitoraggio degli SLA e rilevamento delle violazioni.
slaBreached
(duration, threshold) Restituisce true se una durata supera la soglia SLA.
| Parametri | | duration | number | Durata effettiva | | threshold | number | Soglia SLA | |
| Valore restituito | boolean |
| Esempi | slaBreached(100000, 86400000) → false slaBreached(caseThroughputTime, 86400000) → true se il caso supera lo SLA di 24 ore |
slaRemaining
(startDate, slaDuration) Restituisce il tempo rimanente prima della violazione dello SLA oppure un valore negativo dopo la violazione.
| Parametri | | startDate | date | Timestamp di inizio | | slaDuration | number | Durata SLA in millisecondi | |
| Valore restituito | number |
| 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 fino a questo momento.
Rilevamento dei cicli su se stessi
Rileva e conta i pattern di auto-loop in cui la stessa attività si verifica 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 cambiamenti delle risorse all'interno di un caso.
isResourceChange
(expr) Restituisce true se il valore dell'espressione è cambiato rispetto all'evento precedente.
| Parametri | | expr | any | Espressione della colonna per la quale verificare i cambiamenti | |
| Valore restituito | boolean |
| Esempi | isResourceChange(Resource) → true quando la risorsa è diversa rispetto all'evento precedente |
resourceHandoffCount
(expr) Conta i cambiamenti di valore nel caso.
| Parametri | | expr | any | Espressione della colonna i cui cambiamenti desidera contare | |
| Valore restituito | number |
| Esempi | resourceHandoffCount(Resource) → 2 per Alice→Alice→Bob→Bob→Alice |
| Note | Non ancora disponibile nelle espressioni basate su Athena. Per le query backend, utilizzi isResourceChange(expr) insieme a caseCountIf(...) in un attributo derivato. |
Funzioni statistiche, classificazione e variazioni dei valori
Funzioni di classificazione
Assegna un rango agli eventi in base ai valori di un'espressione, all'interno di un caso o tra tutti gli eventi.
caseRank
(expr) Rango dell'evento corrente nel caso, ordinato in base al valore dell'espressione, con posizioni mancanti in presenza di ex aequo.
| Parametri | | expr | number | Espressione in base alla quale assegnare il rango | |
| Valore restituito | number |
| Esempi | caseRank(Amount) → Rango in base ad Amount all'interno del caso |
caseDenseRank
(expr) Rango denso all'interno del caso, senza posizioni mancanti in presenza di ex aequo.
| Parametri | | expr | number | Espressione in base alla quale assegnare il rango | |
| Valore restituito | number |
| Esempi | caseDenseRank(Amount) → Rango denso in base ad Amount all'interno del caso |
allRank
(expr) Rango tra tutti gli eventi.
| Parametri | | expr | number | Espressione in base alla quale assegnare il rango | |
| Valore restituito | number |
| Esempi | allRank(Duration) → Rango globale in base a Duration |
allPercentRank
(expr) Rango percentuale tra tutti gli eventi, da 0 a 1.
| Parametri | | expr | number | Espressione in base alla quale assegnare il rango | |
| Valore restituito | number |
| Esempi | allPercentRank(Duration) → Rango percentile (0-1) |
Rilevamento delle variazioni di valore
Rileva quando i valori cambiano tra un evento e l'altro.
changed
(expr) Restituisce true se il valore dell'espressione differisce da quello dell'evento precedente.
| Parametri | | expr | any | Espressione per cui verificare il cambiamento | |
| Valore restituito | boolean |
| Esempi | changed(Resource) → true se la risorsa è cambiata rispetto all'evento precedente |
caseChanges
(expr) Conta i cambiamenti di valore tra tutti gli eventi del caso.
| Parametri | | expr | any | Espressione per cui verificare i cambiamenti | |
| Valore restituito | number |
| Esempi | caseChanges(Resource) → Numero di passaggi di consegna della risorsa 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. |
Funzioni di aggregazione progressiva condizionale
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 | |
| Valore restituito | number |
| 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 | |
| Valore restituito | number |
| Esempi | caseRunningCountIf(Activity == "Error") → Conteggio progressivo delle attività Error |
caseRunningAvgIf
(expr, condition) Media condizionale progressiva fino all'evento corrente.
| Parametri | | expr | number | Espressione di cui calcolare la media | | condition | boolean | Condizione per filtrare gli eventi | |
| Valore restituito | number |
| 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'avvio del caso, in millisecondi.
remainingInCase
Property Tempo rimanente fino alla conclusione del caso, in millisecondi.
percentComplete
Property Avanzamento nel caso espresso come frazione, da 0 a 1.
Funzioni di aggregazione condizionale estese
Funzioni aggregate condizionali aggiuntive per mediana, deviazione standard e conteggi distinti.
caseMedianIf
(expr, condition) Mediana condizionale tra gli eventi del caso per i quali la condizione è true.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | caseMedianIf(Amount, Activity == "Review") → Importo mediano per le attività Review |
allMedianIf
(expr, condition) Mediana condizionale tra tutti gli eventi per i quali la condizione è true.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | allMedianIf(Amount, Status == "Complete") → Mediana globale per gli eventi completati |
caseStdDevIf
(expr, condition) Deviazione standard condizionale tra gli eventi del caso.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | caseStdDevIf(Duration, Activity == "Review") → Deviazione standard delle durate Review nel caso |
allStdDevIf
(expr, condition) Deviazione standard condizionale tra tutti gli eventi.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | allStdDevIf(Amount, Priority == "High") → Deviazione standard globale per la priorità alta |
caseCountDistinctIf
(expr, condition) Conteggio condizionale dei valori distinti tra gli eventi del caso.
| Parametri | | expr | any | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | caseCountDistinctIf(Category, Amount > 100) → Categorie distinte con importi elevati |
allCountDistinctIf
(expr, condition) Conteggio condizionale dei valori distinti tra tutti gli eventi.
| Parametri | | expr | any | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | allCountDistinctIf(User, Department == "Sales") → Utenti distinti nel reparto Sales |
Funzioni di aggregazione progressiva estese
Funzioni aggregate progressive aggiuntive per mediana, deviazione standard e valori minimi e massimi condizionali.
caseRunningMedian
(expr) Mediana progressiva dei valori fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valore restituito | number |
| Esempi | caseRunningMedian(Amount) → Importo mediano progressivo |
caseRunningStdDev
(expr) Deviazione standard progressiva fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | |
| Valore restituito | number |
| Esempi | caseRunningStdDev(Amount) → Deviazione standard progressiva |
caseRunningMinIf
(expr, condition) Valore minimo condizionale progressivo fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | caseRunningMinIf(Amount, Activity == "Review") → Minimo progressivo degli importi Review |
caseRunningMaxIf
(expr, condition) Valore massimo condizionale progressivo fino all'evento corrente.
| Parametri | | expr | number | Espressione del valore | | condition | boolean | Condizione del filtro | |
| Valore restituito | number |
| Esempi | caseRunningMaxIf(Amount, Priority == "High") → Massimo progressivo per la priorità alta |
Funzioni JSON
Argomenti correlati