Skip to main content

PQL47 (PQL Function Library - CPM 4.7)

PROCESS EQUALS

Applies to: CELONIS 4.0 CELONIS 4.2 CELONIS 4.3 CELONIS 4.4 CELONIS 4.5 CELONIS 4.6 CELONIS 4.7

Description

PROCESS EQUALS matches the variants of a process based on simple expressions. PROCESS EQUALS is less powerful than MATCH_PROCESS_REGEX and MATCH_PROCESS but it is also simpler to use.

Syntax
PROCESS [ ON activity_table.activity_column ] [ NOT ] equals [ start ] activity ( to activity )* [ end ]
  • activity_column: string column joinable to the activity table (Since: CELONIS 4.6)

  • equals: EQUALS | #

  • start: START | ^ (The case has to match from the start)

  • end: END | $ (The case has to match till the end)

  • to: TO | ->

  • activity: ANY | * | single_activity | grouped_activity

    • single_activity: [LIKE] activity (Activity name. LIKE allows you to use wildcards in your activity name)

    • grouped_activity: single_activity (, single_activity )*

If the activity name does not exist, then a warning is displayed. In this scenario PROCESS EQUALS will have no matches, and PROCESS NOT EQUALS will match everything. (Since: CELONIS 4.6)

Examples

[1] PROCESS EQUALS to filter down to cases where activity 'A' is directly followed by 'B'. Where in the case the activity 'A' is followed by 'B' doesn't matter in this case.

Query

Filter

FILTER PROCESS EQUALS 'A' to 'B';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'B'

'1'

'C'

[2] ANY or short * is placeholder for no activity or an arbitrary number of activities. Therefore in this example all three cases are in the result.

Query

Filter

FILTER PROCESS EQUALS 'A' to ANY to 'C';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'C'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'C'

Tue Jan 01 2019 13:00:04.000

'3'

'A'

Tue Jan 01 2019 13:00:00.000

'3'

'B'

Tue Jan 01 2019 13:00:02.000

'3'

'B'

Tue Jan 01 2019 13:00:04.000

'3'

'C'

Tue Jan 01 2019 13:00:06.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'C'

'2'

'A'

'2'

'B'

'2'

'C'

'3'

'A'

'3'

'B'

'3'

'B'

'3'

'C'

[3] With END the given pattern has to match directly before the end of the case.

Query

Filter

FILTER PROCESS EQUALS 'A' END;

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : STRING

Column2 : STRING

'2'

'B'

'2'

'A'

[4] With START the given pattern has to match directly from the case start.

Query

Filter

FILTER PROCESS EQUALS START 'A';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'B'

[5] It is also possible to use a shorter syntax. The example query is identical to PROCESS EQUALS START 'A' TO 'B' END.

Query

Filter

FILTER PROCESS # ^ 'A' -> 'B' $;

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'B'

Tue Jan 01 2019 13:00:00.000

'2'

'A'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'B'

[6] With LIKE wildcards can be used for the activity names.

Query

Filter

FILTER PROCESS EQUALS START 'A' TO LIKE 'B%' END;

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'BC'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'BC'

'2'

'A'

'2'

'B'

[7] Restricts the result to cases where A isn't directly followed by C.

Query

Filter

FILTER PROCESS NOT EQUALS 'A' to 'C';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'C'

Tue Jan 01 2019 13:00:02.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'B'

Tue Jan 01 2019 13:00:02.000

'2'

'C'

Tue Jan 01 2019 13:00:04.000

'3'

'A'

Tue Jan 01 2019 13:00:00.000

'3'

'B'

Tue Jan 01 2019 13:00:02.000

'3'

'B'

Tue Jan 01 2019 13:00:04.000

'3'

'C'

Tue Jan 01 2019 13:00:06.000

Result

Column1 : STRING

Column2 : STRING

'2'

'A'

'2'

'B'

'2'

'C'

'3'

'A'

'3'

'B'

'3'

'B'

'3'

'C'

[8] PROCESS EQUALS to filter down to cases where activity 'A1' is directly followed by 'B1' with a custom activity expression. Where in the case the activity 'A1' is followed by 'B1' doesn't matter in this case.

Query

Filter

FILTER PROCESS ON "Table1"."ACTIVITY" || '1' EQUALS 'A1' to 'B1';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : STRING

Column2 : STRING

'1'

'A'

'1'

'B'

'1'

'C'

[9] Filter process equals non-existing activity: Empty result and warning.

Query

Filter

FILTER PROCESS EQUALS 'X';

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input

Output

Table1

CASE_ID : STRING

ACTIVITY : STRING

TIMESTAMP : DATE

'1'

'A'

Tue Jan 01 2019 13:00:00.000

'1'

'B'

Tue Jan 01 2019 13:00:02.000

'1'

'C'

Tue Jan 01 2019 13:00:03.000

'2'

'A'

Tue Jan 01 2019 13:00:00.000

'2'

'C'

Tue Jan 01 2019 13:00:00.000

Result

Column1 : STRING

Column2 : STRING

Note

PROCESS [NOT] EQUALS: Could not find activity: 'X'

See also: