Within a KAIROS repository there are nodes and these nodes have a node type. Some of them have the node type "A". They can be the result of an average or an aggregate or a consolidate operation.


When we open them we have something like:



In the aggregator section and more especially in the method field there is a list of predefined functions. Above, we have for examples ($10minutes) which means: "average every 10 minutes".


The definition of this "$10minutes" function can be seen in browsing objects:



If we edit this function, we have:



2 fields are especially very important: "type" and "id".


Here the object type is "aggregator" and the id is "$10minutes". 


When we open a node of type "A", KAIROS scans the repository to find all aggregators (objects with "type" attribute equal to "aggregator'). The list is proposed to the user (the select list attached to the "method" field in the aggregator section).


The user chooses one of this option and thanks to the id, KAIROS can find the definition of the function in its directory.


Each event processed by KAIROS has a timestamp attribute. This timestamp is a 17 characters length attributes with the following definition: "YYYYMMDDHHMNSSXXX".


YYYY: Year

MM: Month

DD: Day

HH: Hour

MN: Minute

SS: Second

XXX: Millisecond


Within Kairos, all events are stored within SQLITE databases and SQLITE allows to define user functions (written in python) to filter data.


In fact , the definition above allow to define a user function for SQLITE and on each column whose name is "timestamp", the filter is applied. In this definition, a timestamp is transformed by its 11 first characters (the 6 remaining are replaced by zeroes).


An other example with the $month function:



Only the 6 first characters of the timestamp are kept.


A KAIROS user can even add his personal function if he needs something special not provided in standard by KAIROS.