KDR
The KDR
UDRs collected by the KPI Management agent hold the source data for KPI calculations. In your APL configuration, you can map the fields of this UDR type to the fields in your service model, e g metric
 or dimension
objects.Â
The timestamp of the KDR UDRs are used to trigger closing and opening of periods.
Relation between KDR timestamps, Window Size, and periods
The smallest timestamp among the first KDRs that are routed to KPI Management agent determines the start of the initial period for each respective KPI. The start time is calculated as:Â
timestamp - (timestamp mod windowSize)
The end of the periods are determined by period start and window size. When a KDR contains a timestamp that exceeds the end of the period and if the delay property is set to 0 (zero) the output is sent to the Workflow. The period is then closed. KDRs that are collected later and that belongs to the closed period will be skipped.Â
In the figure above, the delay property is set to 1 (one) second. If the delay is configured to be greater than 0 then the trigger for output will be delayed until the KPI Management agent receives a timestamp that exceeds the end of the period with the added delay. Â This property is used to prevent that periods are closed too early due to late arriving data. The default value of this property is 0 (zero). For further information about how to set the delay property, see KPI Agent.Â
Processed KPIs will be flushed automatically when you close a workflow.
The following fields are included in the KDR
 UDRs:
Field | Type | Description |
---|---|---|
|
| This field is reserved for future use. |
|
| This field must contain a timestamp (e g in Unix time) time for sorting the |
|
| This field must contain a string that identifies the |
|
| This field must contain a map of key-value pairs where the key is an arbitrary string, and the value contains the input data. The values are used in the definitions of  |
Example - Mapping input to KDR UDR in APL
kpimanagement.KDR kdr = udrCreate(kpimanagement.KDR);
kdr.type = input.type;
kdr.timestamp = input.start_time;
kdr.values = mapCreate(string, any);
mapSet(kdr.values, "dimension_1", input.end_time);
mapSet(kdr.values, "dimension_2", input.end_time);
mapSet(kdr.values, "call_length", input.call_length);
mapSet(kdr.values, "connect_latency", input.connect_latency);