Функция case_rework
возвращает, максимальный номер появления события для экземпляра процесса в зависимости от указанных параметров.
Работает на уровне экземпляров процесса: это значит, что при использовании функции в фильтре, будут исключены сразу все события экземпляра процесса, в котором есть событие попадающее под правило.
У функции есть аналог - rework
, который работает на уровне событий: это значит, что при использовании функции в фильтре, будут исключены только отдельные события попадающие под правила.
Значения NULL
учитываются при работе функции. Это надо помнить при использовании флага IN_A_ROW
.
case_rework(таблица.колонка,'имя_шага' [,'параметр_подсчета'])
- таблица.колонка — обязательный параметр функции, для указания по какой колонке идет подсчет.
- имя_шага — указывается имя шага, для которого будет выполнен отдельный подсчет повторов, все остальные шаги по экземпляру процесса не будут учитываться. Если указать null, то расчет будет производиться одновременно для всех шагов экземпляра процесса.
- параметр_подсчета — указывает функции, как вести подсчет номера появления. Возможные варианты:
- IN_A_ROW — подсчет появления подряд. Если не указано, то по умолчанию производится подсчет всех появлений в рамках экземпляра.
Запрос:
select
id,
case_rework(event_log.activity, null) as case_rew1.
case_rework(event_log.activity, 'A') as case_rew1
from case_table
Данные на входе
Данные на выходе
case_table
event_log
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
A |
1 |
B |
2 |
C |
2 |
B |
2 |
B |
id |
case_rew1 |
case_rew2 |
1 |
3 |
2 |
2 |
2 |
0 |
Запрос:
select
event_log.case_id,
event_log.activity,
rework(event_log.activity, null) as rework,
case_rework(event_log.activity, null) as case_rew1,
case_rework(event_log.activity, 'A') as case_rew2
from case_table
inner join event_log
on case_table.id = event_log.case_id;
Данные на входе
Данные на выходе
case_table
event_log
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
A |
1 |
B |
2 |
C |
2 |
B |
2 |
B |
ID |
activity |
rework |
case_rew1 |
case_rew2 |
1 |
А |
1 |
3 |
2 |
1 |
В |
1 |
3 |
2 |
1 |
В |
2 |
3 |
2 |
1 |
A |
2 |
3 |
2 |
1 |
В |
3 |
3 |
2 |
2 |
C |
1 |
2 |
0 |
2 |
В |
1 |
2 |
0 |
2 |
В |
2 |
2 |
0 |
Запрос:
select
id
from case_table
where case_rework(event_log.activity, null)=2;
Данные на входе
Данные на выходе
case_table
event_log
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
A |
1 |
B |
2 |
C |
2 |
B |
2 |
B |
Запрос:
select
event_log.case_id,
event_log.activity
from case_table
inner join event_log
on case_table.id = event_log.case_id
where case_rework(event_log.activity, null) < 3;
Данные на входе
Данные на выходе
case_table
event_log
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
A |
1 |
B |
2 |
C |
2 |
B |
2 |
B |
case_id |
activity |
2 |
C |
2 |
В |
2 |
В |
Запрос:
select
id,
case_rework(event_log.activity, null, 'IN_A_ROW') as case_rew
from case_table;
Данные на входе
Данные на выходе
case_table
event_log
case_id |
activity |
1 |
А |
1 |
В |
1 |
В |
1 |
A |
1 |
B |
2 |
C |
2 |
B |
2 |
B |
Запрос:
select
id,
case_rework(event_log.supp_lvl, null, 'IN_A_ROW') as case_rew
from case_table;
Данные на входе
Данные на выходе
case_table
event_log
case_id |
supp_lvl |
1 |
1lvl |
1 |
2lvl |
1 |
|
1 |
|
1 |
1lvl |
1 |
2lvl |
1 |
3lvl |
Повторы NULL значений тоже подсчитываются