SOURCE / TARGET


Applies to: CELONIS 4.0 CELONIS 4.2 CELONIS 4.3 CELONIS 4.4

Description

SOURCE / TARGET operators create a temporary table with values from different activities (Rows), which can be used to do calculations based on two actions of a case.
In Celonis, a case is stored as a list of activities, which fits nicely in the relational storage model used by Celonis. Unfortunately, it makes it hard to do calculations based on two actions of a case, like calculating the time spent between two activities, because the math operators work only on single rows. But to calculate something based on two activities an operator needs input from two rows.
The problem is solved via a temporary table in which the values from two rows are moved in to one single row. The input from this temporary table can than be used by all operators. Creating a temporary table, with values from different activities (Rows), can be done by the Source and Target operators. The Source/Target operators regard a case as edges and nodes. Nodes are the activities. Edges connect the activities in the order in which they happened. An edge points from a source activity to a target activity.

Операторы SOURCE / TARGET создают временную таблицу со значениями из разных действий (строк), которую можно использовать для выполнения расчетов на основе двух действий в кейсе.
В Celonis дело хранится в виде списка действий, что хорошо вписывается в модель реляционного хранения, используемую Celonis. К сожалению, это затрудняет выполнение вычислений, основанных на двух действиях кейса, таких как вычисление времени, потраченного между двумя действиями, потому что математические операторы работают только с отдельными строками. Но чтобы рассчитать что-то на основе двух действий, оператору нужен ввод из двух строк.
Проблема решается с помощью временной таблицы, в которой значения из двух строк перемещаются в одну строку. Ввод из этой временной таблицы может быть использован всеми операторами. Создание временной таблицы со значениями из разных действий (строк) может быть выполнено операторами Source и Target. Операторы Source / Target рассматривают случай как ребра и узлы. Узлы - это действия. Ребра соединяют действия в том порядке, в котором они произошли. Край указывает от исходного действия к целевому.

Syntax

Adds the values from Column, which correspond to a source activity, to a temporary table based on the optional edge configuration and the optional filter column:

Добавляет значения из столбца, которые соответствуют исходному действию, во временную таблицу на основе необязательной конфигурации ребер и необязательного столбца фильтра:

SOURCE ( table.column [, edge_configuration ] [, table.filter_column ] )

Adds the values from Column, which correspond to a target activity, to a temporary table based on the optional edge configuration and the optional filter column:
Добавляет значения из столбца, которые соответствуют целевому действию, во временную таблицу на основе необязательной конфигурации ребер и необязательного столбца фильтра:

TARGET ( table.column [, edge_configuration ] [, table.filter_column ] )

The following combinations are supported:
Поддерживаются следующие комбинации:
  • edge_configuration:
    • ANY_OCCURRENCE[] TO ANY_OCCURRENCE[]: Default configuration, edges are drawn between consecutive activities within cases.
Конфигурация по умолчанию, ребра отрисовываются между последовательными действиями внутри дел.
    • FIRST_OCCURRENCE[] TO ANY_OCCURRENCE[]: From the first activity of each case an edge is drawn to all other activities in this case.
Начиная с первого действия каждого случая, в этом случае отрисовывается преимущество для всех других действий.

    • FIRST_OCCURRENCE[] TO ANY_OCCURRENCE_WITH_SELF[]: From the first activity of each case an edge is drawn to all activities in this case, including the first one.
Начиная с первого действия каждого случая, отрисовывается преимущество для всех действий в этом случае, включая первое.


    • ANY_OCCURRENCE[] TO LAST_OCCURRENCE[]: All activities, besides the last one of the case, draw an edge to the last activity of the case.
Все действия, кроме последнего в деле, рисуют грань с последним действием в деле.
    • FIRST_OCCURRENCE[] TO LAST_OCCURRENCE[]: From the first activity of a case an edge is drawn to the last activity in this case.
От первого действия случая ребро отрисовывается до последнего действия в этом случае.

Examples

How Source, Target Operators interpret the case by default:
Как Source, Target Operators интерпретируют регистр по умолчанию:

Query
Column1

SOURCE("ACTIVITIES"."ACTIVITY")

Column2

SOURCE("ACTIVITIES"."TIMESTAMP")

Column3

TARGET("ACTIVITIES"."ACTIVITY")

Column4

TARGET("ACTIVITIES"."TIMESTAMP")

Input
ACTIVITIES

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:15:00.000
'1''C'
Sun Jan 01 2017 13:45:00.000

Output
Result

Column1 : STRING
Column2 : DATE
Column3 : STRING
Column4 : DATE
'A'
Sun Jan 01 2017 13:00:00.000
'B'
Sun Jan 01 2017 13:15:00.000
'B'
Sun Jan 01 2017 13:15:00.000
'C'
Sun Jan 01 2017 13:45:00.000




This can be combined with further operators. In the following example is the time between two activities calculated. REMAP_TIMESTAMPS is required to convert the timestamp to a number such that the subtraction can be done.

Это может быть объединено с другими операторами. В следующем примере рассчитывается время между двумя действиями. REMAP_TIMESTAMPS требуется для преобразования временной метки в число, чтобы можно было выполнить вычитание.
Query
Column1

SOURCE("ACTIVITIES"."ACTIVITY")

Column2

TARGET("ACTIVITIES"."ACTIVITY")

Column3

TARGET(REMAP_TIMESTAMPS("ACTIVITIES"."TIMESTAMP", MINUTES)) - SOURCE(REMAP_TIMESTAMPS("ACTIVITIES"."TIMESTAMP", MINUTES))

Input
ACTIVITIES

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:15:00.000
'1''C'
Sun Jan 01 2017 13:45:00.000

Output
Result

Column1 : STRING
Column2 : STRING
Column3 : INT
'A''B'
15
'B''C'
30




Calculate the number of minutes since case start:
Рассчитайте количество минут с начала дела:
Query
Column1

SOURCE("ACTIVITIES"."ACTIVITY")

Column2

TARGET("ACTIVITIES"."ACTIVITY")

Column3

TARGET(REMAP_TIMESTAMPS("ACTIVITIES"."TIMESTAMP", MINUTES), FIRST_OCCURRENCE[] TO ANY_OCCURRENCE[]) - SOURCE(REMAP_TIMESTAMPS("ACTIVITIES"."TIMESTAMP", MINUTES), FIRST_OCCURRENCE[] TO ANY_OCCURRENCE[])

Input
ACTIVITIES

CASE_ID : STRING
ACTIVITY : STRING
TIMESTAMP : DATE
'1''A'
Sun Jan 01 2017 13:00:00.000
'1''B'
Sun Jan 01 2017 13:15:00.000
'1''C'
Sun Jan 01 2017 13:45:00.000

Output
Result

Column1 : STRING
Column2 : STRING
Column3 : INT
'A''B'
15
'A''C'
45




Join behavior

Source/Target generate temporary tables. For each used unique edge and filter column configuration a separate temporary table is created. Source/Target operators with identical Edge and Filter column add columns to the same temporary table. The temporary tables are joined to the case table.

Source / Target генерирует временные таблицы. Для каждой используемой уникальной конфигурации ребра и столбца фильтра создается отдельная временная таблица. Операторы источника / цели с одинаковыми столбцами Edge и Filter добавляют столбцы в одну и ту же временную таблицу. Временные таблицы объединяются с таблицей дел.

Example

In this example several calls to the Source/Target operator are done. After each call the tables status is shown.
В этом примере выполняется несколько вызовов оператора Source / Target. После каждого звонка отображается статус таблиц.
  • Temporary Edge Table is created. Source column is added to it:
Временная пограничная таблица создана. К нему добавляется исходный столбец:

SOURCE ( Activity, ANY TO ANY )

  • Target column is added to existing temporary table:
Целевой столбец добавляется в существующую временную таблицу:

  • TARGET ( Activity, ANY TO ANY )

  • This column is added to a new temporary table, because the configuration is different to the previous ones:
Этот столбец добавляется в новую временную таблицу, поскольку конфигурация отличается от предыдущих:

  • SOURCE ( Activity, ANY TO ANY, Filter )

Multiple temporary tables can lead to problems if used within the same query. This happens if Source/Target operators with different Edgify and Filter configurations are used within one query. The generated temporary tables can by default not be joined together and an error is returned. If one really needs to have two different configurations, the values in the temporary tables have be pulled up with PU functions to the case table.
Несколько временных таблиц могут привести к проблемам при использовании в одном запросе. Это происходит, если в одном запросе используются операторы Source / Target с разными конфигурациями Edgify и Filter. Сгенерированные временные таблицы могут по умолчанию не объединяться, и возвращается ошибка. Если действительно нужно иметь две разные конфигурации, значения во временных таблицах были перенесены с помощью функций PU в таблицу наблюдений.

Filter Behavior

We have seen that the temporary edge tables are joined to the case table. This means that if a case is filtered out in the case table, all activities related to that case in the temporary tables are also filtered out. This holds also vice versa, so if all activities related to a case are filtered out, the case itself is also filtered out in the case table. If not all activities of a case are filtered out, the case stays in the case table.

Мы видели, что временные таблицы ребер присоединяются к таблице дел. Это означает, что если случай отфильтровывается в таблице дел, все действия, связанные с этим делом во временных таблицах, также отфильтровываются. Это относится и к обратному, поэтому, если все действия, связанные с делом, отфильтрованы, само дело также будет отфильтровано в таблице дел. Если не все действия дела отфильтрованы, дело остается в таблице дел.
Filter behavior example
Пример поведения фильтра

Содержание

  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. Ссылки на мануалы