Configuring data aggregation

Configure data to aggregate automatically

Enable data aggregation

  1. Data aggregation is enabled by editing the config/services.json file. Set "enabled" to false as shown below:
{
		"serviceName": "aggregation",
		"serviceLibrary": "./aggregation/cttimestamp.dll",
		"enabled": false
	}
  1. Restart the server.

Requirements:

  • The table to be aggregated must have at least one CT_TIMESTAMP auto-timestamp field.
  • The auto-timestamp field must be the first segment of any index on that table.

Supported field types:

  • Signed integer types:
    • CT_TINYINT
    • CT_SMALLINT
    • CT_INTEGER
    • CT_BIGINT
  • Unsigned integer types:
    • CT_UTINYINT
    • CT_USMALLINT
    • CT_UINTEGER
    • CT_UBIGINT
  • Float types:
    • CT_SFLOAT
    • CT_EFLOAT
    • CT_DFLOAT

The automatic data aggregation feature is configured using a plugin configuration file, cttimestamp.json.

Configure data aggregation

  1. Navigate to and open the cttimestamp.json file in the config folder (server\aggregation\ctTimeStamp.dll).
  2. Observe the format of the cttimestamp.json file:
{
    "debug": false,
    "sourceTableList": [
        {
            "database": "ctreeSQL",
            "sourceTableName": "sensor",
            "aggregatedTableList": [
                {
                    "aggregatedTableName": "aggregation1",
                    "timestampFieldName": "ts",
                    "unitOfTime": "second",
                    "unitOfTimeValue": 20,
                    "aggregatedTableInSQL": true,
                    "aggregatedTableOwner": "admin",
                    "aggregatedFieldList": [
                        {
                            "aggregatedFieldName": "TempAverage",
                            "sourceFieldName": "temperature",
                            "aggregateFunction": "average"
                        }
                    ]
                }
            ]
        }
    ]
} 
  1. Edit the config/services.json file. Adjust the following section to change false to true:
{
	"serviceName": "aggregation",
	"serviceLibrary": "./aggregation/cttimestamp.dll",
	"enabled": true
}
  1. Restart the server.

 

Example

{
    "sourceTableList": [
        {
            "database": "ctreeSQL",
            "sourceTableName": "sensor",
            "aggregatedTableList": [
                {
                    "aggregatedTableName": "aggregation1",
                    "timestampField": "ts",
                    "unitOfTime": "second",
                    "unitOfTimeValue": 20,
                    "aggregatedFieldList": [
                        {
                            "aggregatedFieldName": "TempAverage",
                            "sourceFieldName": "temperature",
                            "aggregateFunction": "average"
                        },
                        {
                            "aggregatedFieldName": "PressMax",
                            "sourceFieldName": "pressure",
                            "aggregateFunction": "maximum"
                        }
                    ]
                } 
            ]
        }
    ]
}

 

Property summary

cttimestamp.json property summaries
Property Description Default Type Limits (inclusive)
"debug" The "debug" property enables timestamp/aggregation debugging. true Boolean

true

false

"sourceTableList" The "sourceTableList" contains an array of source tables.   array  

 

 

 

 

 

"aggregatedTableList"

"aggregatedTableList" property summaries

Property Description Default Type Limits (inclusive)

aggregatedTableName

The "aggregatedTableName" property defines the name of an aggregation table.   string  

timestampFieldName

The "timestampFieldName" property defines the source table field name with auto-timestamp value to monitor.   string  

unitOfTime

The "unitOfTime" property defines the time unit of the aggregation frequency.

 

This parameter sets the width of the aggregation sample window, in units of time — for example, setting "unitOfTime: "minute", and "unitOfTimeValue": "3", creates a 3-minute aggregation window wherein the aggregation function is applied to each field in "aggregatedFieldList".

  string  

unitOfTimeValue

The "unitOfTimeValue" property defines the time value of the aggregation frequency.

 

This parameter sets the width of the aggregation sample window, in units of time — for example, setting "unitOfTime: "minute", and "unitOfTimeValue": "3", creates a 3-minute aggregation window wherein the aggregation function is applied to each field in "aggregatedFieldList".

  integer  

aggregatedTableInSQL

The "aggregatedTableInSQL" property indicates if the aggregation table is available.   Boolean

true

false

aggregatedTableOwner

The "aggregatedTableOwner" property sets the SQL owner of the aggregation table. Inherited from the source table or "admin" string  

aggregatedFieldList

The "aggregatedFieldList" property contains a list of aggregated values to include in the aggregation table where each value is one field in the table.   array  

aggregatedFieldList

.aggregatedFieldName

The "aggregatedFieldName" property defines the aggregated field name to store in this aggregation table.   string  

aggregatedFieldList

.sourceFieldName

The "sourceFieldName" property contains the field name from the source table to aggregate.   string  

aggregatedFieldList

.aggregateFunction

The "aggregateFunction" property contains the aggregation function applied to the source data.Supported functions and storage type.
Supported aggregate storage types:

  • "average"
    • A DOUBLE. The arithmetic mean of the values in the period.
  • "count"
    • A BIGINT. The number of entries being aggregated.
  • "minimum"
    • This is the same as the source field type. The minimum value of the period.
  • "maximum"
    • This is the same as the source field type. The maximum value of the period.
  • "stddev"
    • A DOUBLE. The standard deviation of the values during the period.
  • "sum"
    • This is the same as the source field type. The total of the aggregated values in the period.
  string

"average"

"count"

"minimum"

"maximum"

"stddev"

"sum"