...
Function Name | Description | Parameters | Examples | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Count | Outputs the number of steam elements. |
| ['FUNCTION' = 'Count'] ['FUNCTION' = 'Count', 'OUTPUT_ATTRIBUTES' = 'number_of_elements'] | ||||||||||||
Sum | Outputs the sum of elements. |
| ['FUNCTION' = 'Sum'] ['FUNCTION' = 'Sum', 'INPUT_ATTRIBUTES' = 'value1'] ['FUNCTION' = 'Sum', 'INPUT_ATTRIBUTES' = ['value1', 'value2']] | ||||||||||||
Avg | Average value (mean) | TODO (similar to Sum) | |||||||||||||
Min | Min value | TODO (similar to Sum) | |||||||||||||
Max | Max value | TODO (similar to Sum) | |||||||||||||
First | The first element of a window. See example below. |
| You should use the following settings: output_only_changes = true This results in getting the first element in each window. Especially useful with a tumbling window. | ||||||||||||
Last | The last element of a window. See example below. |
| You should use the following settings: EVAL_AT_NEW_ELEMENT = false This results in getting the last element in each window. Especially useful with a tumbling window. | ||||||||||||
Trigger | The tuple that triggers the output. | TODO | |||||||||||||
Variance | Calculates the variance | TODO (similar to Sum) | |||||||||||||
TopK | Calculates the top-K list | TODO | |||||||||||||
Nest | Nests the valid elements as list. | TODO |
...
Code Block | ||||
---|---|---|---|---|
| ||||
/// count the number of items for each publisher
counted = AGGREGATION({AGGREGATIONS = [['FUNCTION' = 'Count']], GROUP_BY = ['publisher', 'item']}, windowed)
/// aggregate the 100 most frequent items for each publisher to an ordered list
TopKItemsByPublisher ::= AGGREGATION({AGGREGATIONS = [
[
'FUNCTION' = 'TopK',
'TOP_K' = '100', /// number of items
'SCORING_ATTRIBUTES' = 'Count', /// the attribute name that defines the order
'INPUT_ATTRIBUTES' = 'item', /// do not use the whole input tuple, just use the 'item' attribute for creating the output top-k set
'MIN_SCORE' = '0', /// remove items that reaches a score of 0 (due to the previous aggregation these are all items that has no valid tuple)
'UNIQUE_ATTR'='item' /// use 'item' as a unique attribute. that means, a new tuple with an known items id replaces the previous value. (this is some kind of element window in this operator)
]], GROUP_BY = ['publisher']}, counted) |
First
TExt
Last
Here, we use a tumbling window and the "Last" aggregate function to only get the last element per 5-minute window.
Code Block | ||
---|---|---|
| ||
/// Tumnbling window tumbling = TIMEWINDOW({ size = [5, 'MINUTES'], advance = [5, 'MINUTES'] }, selectCenter ) /// Select first of tumbling reduce = AGGREGATION({ aggregations = [['FUNCTION' = 'Last']], EVAL_AT_NEW_ELEMENT = false, EVAL_BEFORE_REMOVE_OUTDATING = true, group_by = ['movingObjectId'] }, tumbling ) /// Remove the grouping id (because it will be in the unnested tuple) withoutId = PROJECT({ attributes = ['last'] }, reduce ) /// Unnest the tuple output = UNNEST({ attribute='last' }, withoutId ) |
Changing the way this operator outputs values
By using the default values, this operator act as Aggregate (and Group) operator (with the limitations explained above). Useful alternative settings are:
...