MATCH_PROCESS


Applies to: CELONIS 4.0 CELONIS 4.2 CELONIS 4.3 CELONIS 4.4

Description

MATCH_PROCESS matches the variants of a process against a given pattern.
MATCH_PROCESS uses Nodes and Edges to match the cases. Nodes consist either of a single activity or a list of activities. Edges describe how the nodes are linked together.

MATCH_PROCESS сопоставляет варианты процесса с данным шаблоном.
MATCH_PROCESS использует Узлы и Края, чтобы соответствовать случаям. Узлы состоят из одного действия или списка действий. Края описывают, как узлы связаны друг с другом.

Syntax


MATCH_PROCESS ( [ activity_table.activity_column ,] node (, node)* CONNECTED BY edge (, edge)* )

  • activity_column: string column joinable to the activity table
столбец строки, присоединяемый к таблице активности
  • node: NODE | OPTIONAL | LOOP | OPTIONAL_LOOP | STARTING | ENDING | single_activity (, single_activity )* AS node_name
    • single_activity: [LIKE] activity (Activity name. LIKE allows you to use wildcards in your activity name)
Название деятельности. LIKE позволяет вам использовать подстановочные знаки в названии вашей деятельности
  • edge: DIRECT | EVENTUALLY [ edge_start_node, edge_end_node ]
    • edge_start_node: node_name
    • edge_end_node: node_name

Node

A node consists of one or more activities. If multiple activities are given, it means one of those activities.
Узел состоит из одного или нескольких действий. Если указано несколько действий, это означает одно из этих действий.

Node Types

  • NODE: Node which has to be part once in the case, without any restrictions on where the node has to be.
Узел, который должен быть частью один раз в случае, без каких-либо ограничений на то, где должен быть узел
  • STARTING: Node which has to happen at the beginning of a case.
Узел, который должен произойти в начале дела.
  • ENDING: Node which has to happen at the end of a case.
Узел, который должен произойти в конце дела.
  • LOOP: Node which occurs at least once but can also be repeated.
Узел, который встречается хотя бы один раз, но также может быть повторен.

Edge Types

  • DIRECT: edge_end_node has to follow directly after the edge_start_node
edge_end_node должен следовать непосредственно после edge_start_node
  • EVENTUALLY: between edge_start_node and edge_end_node other activities can be placed
между edge_start_node и edge_end_node могут быть размещены другие действия

Result

MATCH_PROCESS returns an integer column, which flags all matching cases with 1 and all non matching columns with a 0. The result is often used in combination with a filter.
MATCH_PROCESS возвращает целочисленный столбец, который помечает все соответствующие случаи с 1 и все несоответствующие столбцы с 0. Результат часто используется в сочетании с фильтром.

Examples

Here MATCH_PROCESS flags all cases in which one activity A is followed directly by activity B with a 1.
Здесь MATCH_PROCESS отмечает все случаи, в которых одно действие A сопровождается непосредственно действием B с 1.
Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", NODE['A'] as src, NODE['B'] as trg CONNECTED BY DIRECT [ src, trg ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'1''C'
Sun Jan 01 2017 13:02:00.000
'2''A'
Sun Jan 01 2017 13:00:00.000
'2''C'
Sun Jan 01 2017 13:02:00.000
'2''B'
Sun Jan 01 2017 13:03:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1
'2'
0




Here is MATCH_PROCESS combined with a filter. The result are only cases in which one activity A is followed by activity B.
Вот MATCH_PROCESS в сочетании с фильтром. Результатом являются только случаи, когда за одним действием A следует действие B.Вот MATCH_PROCESS в сочетании с фильтром. Результатом являются только случаи, когда за одним действием A следует действие B.
Query
Filter

FILTER MATCH_PROCESS("Table1"."ACTIVITY", NODE['A'] as src, NODE['B'] as trg CONNECTED BY DIRECT [ src, trg ]) = 1

Column1

"Table1"."CASE_ID"

Column2

"Table1"."ACTIVITY"

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'1''C'
Sun Jan 01 2017 13:02:00.000
'2''A'
Sun Jan 01 2017 13:00:00.000
'2''C'
Sun Jan 01 2017 13:02:00.000
'2''B'
Sun Jan 01 2017 13:03:00.000

Output
Result

Column1 : STRING
Column2 : STRING
'1''A'
'1''B'
'1''C'




If an activity has not only to be directly followed by another activity but can come any time later the keyword EVENTUALLY can be used. In this example MATCH_PROCESS flags all cases in which one activity A is followed eventually by activity B with a 1.

Если за действием не только непосредственно следует другое действие, но оно может появиться в любое время позже, можно использовать ключевое слово EVENTUALLY. В этом примере MATCH_PROCESS помечает все случаи, когда за одним действием A в конечном итоге следует действие B, с 1.
Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", NODE['A'] as src, NODE['B'] as trg CONNECTED BY EVENTUALLY [ src, trg ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'1''C'
Sun Jan 01 2017 13:02:00.000
'2''A'
Sun Jan 01 2017 13:00:00.000
'2''C'
Sun Jan 01 2017 13:02:00.000
'2''B'
Sun Jan 01 2017 13:03:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1
'2'
1




Here is an example in which node 'node_ab' has two activities. This means that a matching case needs an activity C which comes either after A or B.

Вот пример, в котором узел 'node_ab' выполняет две операции. Это означает, что соответствующему случаю нужна операция C, которая идет после A или B.
Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", NODE['A', 'B'] as node_ab, NODE['C'] as node_c CONNECTED BY DIRECT [ node_ab, node_c ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'1''C'
Sun Jan 01 2017 13:02:00.000
'2''A'
Sun Jan 01 2017 13:00:00.000
'2''C'
Sun Jan 01 2017 13:02:00.000
'2''D'
Sun Jan 01 2017 13:03:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1
'2'
1




Nodes can represent loops. Here matching cases can have between activity A and C at least one or more activities of type B.
Узлы могут представлять петли. Здесь совпадающие случаи могут иметь между операциями A и C хотя бы одно или несколько действий типа B.

Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", NODE['A'] AS node_a, LOOP['B'] AS loop_b, NODE['C'] AS node_c CONNECTED BY DIRECT [ node_a, loop_b ], DIRECT [ loop_b, node_c ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'1''B'
Sun Jan 01 2017 13:02:00.000
'1''C'
Sun Jan 01 2017 13:04:00.000
'2''A'
Sun Jan 01 2017 13:00:00.000
'2''B'
Sun Jan 01 2017 13:01:00.000
'2''C'
Sun Jan 01 2017 13:02:00.000
'3''A'
Sun Jan 01 2017 13:00:00.000
'3''C'
Sun Jan 01 2017 13:02:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1
'2'
1
'3'
0




A loop node can also consist of multiple activities. PROCESS_MATCH accepts than all given activities, without regarding order or number of occurrences till another activity is found.
Узел цикла также может состоять из нескольких действий. PROCESS_MATCH принимает все заданные действия, без учета порядка или количества случаев, пока не будет найдено другое действие.
Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", NODE['A'] AS node_a, LOOP['B', 'C'] AS loop_bc, NODE['D'] AS node_d CONNECTED BY DIRECT [ node_a, loop_bc ], DIRECT [ loop_bc, node_d ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''C'
Sun Jan 01 2017 13:01:00.000
'1''B'
Sun Jan 01 2017 13:02:00.000
'1''B'
Sun Jan 01 2017 13:03:00.000
'1''D'
Sun Jan 01 2017 13:05:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1




Nodes can be forced to be at the start or the end of a case.
Узлы могут быть вынуждены быть в начале или в конце дела.
Query
Column1

"Table1_CASES"."CASE_ID"

Column2

MATCH_PROCESS("Table1"."ACTIVITY", STARTING['A'] AS node_a, ENDING['B'] AS node_b CONNECTED BY DIRECT [ node_a, node_b ])

Input
Table1

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:01:00.000
'2''A'
Sun Jan 01 2017 13:02:00.000
'2''B'
Sun Jan 01 2017 13:03:00.000
'2''C'
Sun Jan 01 2017 13:05:00.000
'3''A'
Sun Jan 01 2017 13:06:00.000
'3''A'
Sun Jan 01 2017 13:07:00.000
'3''B'
Sun Jan 01 2017 13:08:00.000

Output
Result

Column1 : STRING
Column2 : INT
'1'
1
'2'
0
'3'
0





Содержание

  1. Data Types
  2. DATE
  3. FLOAT
  4. INT
  5. STRING
  6. Functions
  7. Aggregation Functions
  8. GLOBAL
  9. Pull Up Aggregation Functions
  10. PU_AVG
  11. PU_COUNT
  12. PU_COUNT_DISTINCT
  13. PU_FIRST
  14. PU_LAST
  15. PU_MAX
  16. PU_MEDIAN
  17. PU_MIN
  18. PU_QUANTILE
  19. PU_SUM
  20. Standard Aggregation Functions
  21. AVG
  22. COUNT
  23. COUNT_TABLE
  24. COUNT DISTINCT
  25. MAX
  26. MEDIAN
  27. MIN
  28. QUANTILE
  29. STDEV
  30. SUM
  31. TRIMMED_MEAN
  32. VAR
  33. Moving Aggregation Functions
  34. MOVING_AVG
  35. MOVING_COUNT
  36. MOVING_COUNT_DISTINCT
  37. MOVING_MAX
  38. MOVING_MEDIAN
  39. MOVING_MIN
  40. MOVING_STDEV
  41. MOVING_SUM
  42. MOVING_TRIMMED_MEAN
  43. RUNNING_TOTAL
  44. HOUR_NOW
  45. TODAY
  46. DATE_BETWEEN
  47. DAYS_BETWEEN
  48. HOURS_BETWEEN
  49. MILLIS_BETWEEN
  50. MINUTES_BETWEEN
  51. MONTHS_BETWEEN
  52. SECONDS_BETWEEN
  53. WORKDAYS_BETWEEN
  54. YEARS_BETWEEN
  55. ADD_DAYS
  56. ADD_HOURS
  57. ADD_MILLIS
  58. ADD_MINUTES
  59. ADD_MONTHS
  60. ADD_SECONDS
  61. ADD_WORKDAYS
  62. ADD_YEARS
  63. CALENDAR_WEEK
  64. DATE_MATCH
  65. DAY
  66. DAY_OF_WEEK
  67. HOURS
  68. MILLIS
  69. MINUTES
  70. MONTH
  71. QUARTER
  72. REMAP_TIMESTAMP
  73. SECONDS
  74. TO_TIMESTAMP
  75. YEAR
  76. DateTime Rounding Functions
  77. ROUND_DAY
  78. ROUND_HOUR
  79. ROUND_MINUTE
  80. ROUND_MONTH
  81. ROUND_QUARTER
  82. ROUND_SECOND
  83. ROUND_WEEK
  84. ROUND_YEAR
  85. DECISION_TREE
  86. KMEANS
  87. LINEAR_REGRESSION
  88. Math Functions
  89. ABC
  90. ABS
  91. CEIL
  92. FLOOR
  93. LOG
  94. POWER
  95. ROUND
  96. SQRT
  97. SQUARE
  98. ISNULL
  99. Process Functions
  100. ACTIVATION_COUNT
  101. CALC_CROP
  102. CALC_CROP_TO_NULL
  103. CALC_REWORK
  104. CALC_THROUGHPUT
  105. MATCH_PROCESS
  106. PROCESS_ORDER
  107. PROCESS EQUALS
  108. SOURCE / TARGET
  109. VARIANT
  110. Statistic Functions
  111. QNORM
  112. ZSCORE
  113. CONCAT
  114. LEFT
  115. LEN
  116. LOWER
  117. LTRIM
  118. REVERSE
  119. RIGHT
  120. RTRIM
  121. STR_TO_INT
  122. SUBSTRING
  123. UPPER
  124. Operators
  125. CASE WHEN
  126. FILTER
  127. Math Operators
  128. Addition Operator
  129. Division Operator
  130. MODULO
  131. Multiplication Operator
  132. Subtraction Operator
  133. Predicate Operators
  134. IN
  135. LIKE
  136. Ссылки на мануалы