Pull-up operators
Pull-up operators allow to aggregate a new field based on the field values of superior or subordinate objects by traversing the object (instances) hierarchy structure.
A pull-up operator allows defining a source object for which values are aggregated and a scope object defining the start point for traversing the source object instances.
Optional filter expressions allow to specify which values should be considered in the aggregation.
The traversing aggregation is defined by the following three objects:
Target object
The target object is defined by the object to which the new aggregated field is assigned. It is the object to which the values are aggregated.
Source object
The source object is the object whose values are aggregated to the target object. Each target object instance is assigned the aggregated values of the source object instances related to it.
Scope object
The scope object defines the start point for traversing the source object instances. Since the scope object defines the starting point for traversing the object instances, it must correspond to the target object, a parent object of the target object, or an object which has been traversed during the iteration.
Value aggregation
It is important to know, that the value aggregation is done by traversing the analysis model object hierarchy. Here, the object instance hierarchy is traversed for each target object instance and the defined value is calculated for each of these instances.
The value of the calculation is defined by the source object instances. Starting from the target object, the hierarchy is traversed to collect all reachable source objects related to the target. The scope object definition enables "moving up" the aggregation level when the source object is a sibling or part of a different subpath within the hierarchy (see the examples below). The value aggregated for each source object instance can be based on the field value of a source object instance, the field value of an object instance on the traversed path, or another aggregation starting on the source object instance.
Syntax
The general syntax of the pull-up operator looks like this:
PU_X("scope_object", "source_object", value [, filter_expression])
The following arguments are passed:
scope_object
The scope object defines the start point for traversing the source object instances.
Since the scope object defines the starting point for traversing the object instances,
it must correspond to the target object, a parent object of the target object,
or an object which has been traversed during the iteration.
source_object
The object whose object instances field values or related object instances field values are aggregated.
value
The field of the source object whose values are aggregated or an expression defining a value to be aggregated based on the source object instance.
filter_expression (optional)
An optional filter that specifies which of the source object instances should be considered for aggregation.
NULL handling
The following behavior is applied for the object-value operators when aggregating NULL values:
PU_MIN and PU_MAX do not consider NULL as a value.
PU_CONCAT ignores NULL values while concatenating the defined values.
PU_COUNT and PU_COUNT_DISTINCT consider NULL as a value. (In particular as a distinct value.)
PU_AVG, PU_SUM, PU_MEDIAN, PU_STDDEV, PU_VAR, PU_POP_STD and PU_POP_VAR do not aggregate NULL values.
List of pull-up operators supported by the ARIS process language:
Operator type | Subtype | Syntax | Description |
Pull up | Any | PU_ANY (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up any value. Pulls up the value of any matching field. |
Average | PU_AVG (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up average. Calculates the average of all matching field values. | |
COUNT | PU_COUNT (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up count. Counts all matching field values. | |
Count distinct | PU_CTD (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up count distinct. Counts all matching distinct field values. | |
Maximum | PU_MAX (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up maximum. Calculates the maximum value of all matching field values. | |
Median | PU_MEDIAN (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up median. Calculates the median of all matching field values. | |
Minimum | PU_MIN (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up minimum. Calculates the minimum value of all matching field values. | |
Population standard deviation | PU_POP_VAR (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up population standard deviation. Calculates the population standard deviation of all matching field values. | |
Population variance | PU_POP_STD (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up population variance. Calculates the population variance of all matching field values. | |
Standard deviation | PU_STD (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up standard deviation. Calculates the standard deviation of all matching field values. | |
Sum | PU_SUM (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up sum Calculates the sum of all matching field values. | |
Variance | PU_VAR (scope: Table, source: Table, field: Field | Calculation, filter?: Boolean) | Pull up variance. Calculates the variance of all matching field values. |
Activity pull-up operators
Operator type | Subtype | Syntax | Description |
Activity pull-up | Average: Activity | ACTIVITY_PU_AVG (field: Field | Calculation, filter?: Boolean) | Pull up activity field average. Calculates the average of all matching field values and pulls the result up to case level. |
Concatenate: Activity | ACTIVITY_PU_CONCAT (field: Field | Calculation, filter?: Boolean) | Pull up activity field concatenation. Concatenates all matching field values and pulls the result up to case level. | |
Count: Activity | ACTIVITY_PU_COUNT (field: Field | Calculation, filter?: Boolean) | Pull up activity field count. Counts all matching field values and pulls the result up to case level. | |
Count distinct: Activity | ACTIVITY_PU_CTD (field: Field | Calculation, filter?: Boolean) | Pull up activity field count distinct. Counts all matching distinct field values and pulls the result up to case level. | |
First: Activity | ACTIVITY_PU_FIRST (field: Field | Calculation, filter?: Boolean) | Pull up first activity value. Pulls up the value of the first matching field from activity to case level. | |
Last: Activity | ACTIVITY_PU_LAST (field: Field | Calculation, filter?: Boolean) | Pull up last activity value. Pulls up the value of the last matching field from activity to case level. | |
Maximum: Activity | ACTIVITY_PU_MAX (field: Field | Calculation, filter?: Boolean) | Pull up activity field maximum. Calculates the maximum value of all matching field values and pulls the result up to case level. | |
Median: Activity | ACTIVITY_PU_MEDIAN (field: Field | Calculation, filter?: Boolean) | Pull up activity field median. Calculates the median of all matching field values and pulls the result up to case level. | |
Minimum: Activity | ACTIVITY_PU_MIN (field: Field | Calculation, filter?: Boolean) | Pull up activity field minimum. Calculates the minimum value of all matching field values and pulls the result up to case level. | |
Population standard deviation: Activity | ACTIVITY_PU_POP_STD (field: Field | Calculation, filter?: Boolean) | Pull up activity field population standard deviation. Calculates the population standard deviation of all matching field values and pulls the result up to case level. | |
Population variance: Activity | ACTIVITY_PU_POP_VAR (field: Field | Calculation, filter?: Boolean) | Pull up activity field population variance. Calculates the population variance of all matching field values and pulls the result up to case level. | |
Standard deviation: Activity | ACTIVITY_PU_STD (field: Field | Calculation, filter?: Boolean) | Pull up activity field standard deviation. Calculates the standard deviation of all matching field values and pulls the result up to case level. | |
Sum: Activity | ACTIVITY_PU_SUM (field: Field | Calculation, filter?: Boolean) | Pull up activity field sum. Calculates the sum of all matching activity field values and pulls the result up to case level. | |
Variance: Activity | ACTIVITY_PU_VAR (field: Field | Calculation, filter?: Boolean) | Pull up activity field variance. Calculates the variance of all matching field values and pulls the result up to case level. |