Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

CONNECT EAP

Stream summaries

  • Last UpdatedAug 20, 2026
  • 9 minute read

Stream Management offers summary statistics for individual streams over a user specified index interval. The available summaries are defined here. This topic provides an overview of time-based summary routes as well as updated definitions of all available summary statistics.

Time based summaries

Stream Management supports time-based summaries for individual streams. Time-based summaries allow the user to group intervals into convenient calendar-based time units such as minutes, hours, days, months and years. Time-based summaries are only available for streams having a single DateTime or DateTimeOffset index. The time-based summaries are available from the following endpoints:

  • /Streams/{streamId}/Data/Time/Summaries

  • /Streams/{streamId}/Data/Transform/Time/Summaries

These routes support the following query parameters:

Parameter

Description

Required?

startTime

ISO 8601 Date and Time (TZ format)

Yes

endTime

ISO 8601 Date and Time (TZ format)

Yes

timeUnit

Minute, Hour, Day, Month, Year

Yes

timeZone

String

No (UTC default)

startBoundaryType

String or integer

No (if specified must also specify endBoundaryType)

endBoundaryType

String or integer

No (if specified must also specify startBoundaryType

emptyIntervalMode

String or integer

No (NaN default)

startBoundaryType and endBoundaryType can only be used in the following combinations:

  • startBoundaryType=SdsBoundaryType.Exact and endBoundaryType=SdsBoundaryType.Inside

  • startBoundaryType=SdsBoundaryType.Inside and endBoundaryType=SdsBoundaryType.Exact

A list of supported timeZone IDs is available in the Microsoft document Default Time Zones.

emptyIntervalMode can have the following values (for time based summaries):

  • NaN (default) Summary statistics for intervals with no data will be returned with NaN values for all statistics except count which will be zero.

  • Zero Summary statistics for intervals with no data will be returned with 0 values for all statistics.

Example time-based summaries requests and responses

The following examples show typical requests and responses for time-based summaries with different index types.

DateTime

For data with an SdsType with the following properties:

{

"id": "SdsExampleType",

"properties": [

{

"name": "Timestamp",

"sdsTypeCode": "DateTime"

},

{

"id": "Quality",

"sdsTypeCode": "Int32"

},

{

"id": "Value",

"sdsTypeCode": "Double"

}

]

}

Request: streams/{streamId}/Data/Time/Summaries?startTime=2025-01-01T08:00:00Z&endTime=2026-01-01T08:00:00Z&timeUnit=year&timeZone=Pacific Standard Time

Response:

{

"items": [

{

"label": 2025,

"timeZone": "Pacific Standard Time",

"start": {

"timestamp": "2025-01-01T08:00:00Z"

},

"end": {

"timestamp": "2026-01-01T08:00:00Z"

},

"summaries": {

"count": {

"timestamp": 12,

"quality": 12,

"value": 12

},

"minimum": {

"quality": 100,

"value": 12

},

"maximum": {

"quality": 1200,

"value": 901

},

"range": {

"quality": 1100,

"value": 889

},

"total": {

"quality": 7800,

"value": 5474

},

"mean": {

"quality": 650,

"value": 456.1666666666667

},

"standardDeviation": {

"quality": 360.5551275463989,

"value": 302.263230655104

},

"populationStandardDeviation": {

"quality": 345.2052529534663,

"value": 289.39501070720314

},

"weightedMean": {

"quality": 651.7964071856287,

"value": 475.4251497005988

},

"weightedStandardDeviation": {

"quality": 330.8617598114979,

"value": 183.29259143974397

},

"weightedPopulationStandardDeviation": {

"quality": 315.4643101922241,

"value": 174.7626288236728

}

}

}

]

}

DateTime empty interval response (emptyIntervalMode=NaN)

{

    "items": [

        {

            "label": 2025,

            "timeZone": "Pacific Standard Time",

            "start": {

                "timestamp": "2025-01-01T08:00:00Z"

            },

            "end": {

                "timestamp": "2026-01-01T08:00:00Z"

            },

            "summaries": {

                "count": {

                    "timestamp": 0,

                    "quality": 0,

                    "value": 0

                },

                "minimum": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "maximum": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "range": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "total": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "mean": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "standardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "populationStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedMean": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedPopulationStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                }

            }

        }

    ]

}

DateTimeOffset

For data with an SdsType with the following properties:

{

"id": "SdsExampleType",

"properties": [

{

"name": "Timestamp",

"sdsTypeCode": "DateTimeOffset"

},

{

"id": "Quality",

"sdsTypeCode": "Int32"

},

{

"id": "Value",

"sdsTypeCode": "Double"

}

]

}

Request: streams/{streamId}/Data/Time/Summaries?startTime=2025-01-01T08:00:00Z&endTime=2026-01-01T08:00:00Z&timeUnit=year&timeZone=Pacific Standard Time

Response:

{

"items": [

{

"label": 2025,

"timeZone": "Pacific Standard Time",

"start": {

"timestamp": "2025-01-01T00:00:00-08:00"

},

"end": {

"timestamp": "2026-01-01T00:00:00-08:00"

},

"summaries": {

"count": {

"timestamp": 12,

"quality": 12,

"value": 12

},

"minimum": {

"quality": 100,

"value": 12

},

"maximum": {

"quality": 1200,

"value": 901

},

"range": {

"quality": 1100,

"value": 889

},

"total": {

"quality": 7800,

"value": 5474

},

"mean": {

"quality": 650,

"value": 456.1666666666667

},

"standardDeviation": {

"quality": 360.5551275463989,

"value": 302.263230655104

},

"populationStandardDeviation": {

"quality": 345.2052529534663,

"value": 289.39501070720314

},

"weightedMean": {

"quality": 651.7964071856287,

"value": 475.4251497005988

},

"weightedStandardDeviation": {

"quality": 330.8617598114979,

"value": 183.29259143974397

},

"weightedPopulationStandardDeviation": {

"quality": 315.4643101922241,

"value": 174.7626288236728

}

}

}

]

}

Response for a DateTimeOffset empty interval (emptyIntervalMode=NaN)

{

    "items": [

        {

            "label": 2025,

            "timeZone": "Pacific Standard Time",

            "start": {

                "timestamp": "2025-01-01T00:00:00-08:00"

            },

            "end": {

                "timestamp": "2026-01-01T00:00:00-08:00"

            },

            "summaries": {

                "count": {

                    "timestamp": 0,

                    "quality": 0,

                    "value": 0

                },

                "minimum": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "maximum": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "range": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "total": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "mean": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "standardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "populationStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedMean": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                },

                "weightedPopulationStandardDeviation": {

                    "quality": "NaN",

                    "value": "NaN"

                }

            }

        }

    ]

}

Label definitions

The label value in each interval depends on the selected timeUnit, as shown below.

TimeUnit

Label

Name/Description

Day

0

Sunday

1

Monday

2

Tuesday

3

Wednesday

4

Thursday

5

Friday

6

Saturday

Month

1

January

2

February

3

March

4

April

5

May

6

June

7

July

8

August

9

September

10

October

11

November

12

December

Hour

0

12am to 1am

1

1am to 2am

2

2am to 3am

...

...

23

11pm to 12am

Calculated summaries

When you send an API request to the List Summaries endpoint, the REST API responds with a list of calculated summaries for each interval queried in the request. Calculated summaries are different types of statistical measures of a data stream that can help you summarize, analyze, or interpret data. Only stored values are used for non-weighted properties, while interpolated values are used for weighted properties.

The following calculated summaries are included in the response body of your request to the List Summaries endpoint:

Summary

Description

Count

The numerical tally of stored values within an interval.

Minimum

The smallest or lowest value observed within an interval.

Maximum

The largest or highest value observed within an interval.

Range

The difference between the maximum and minimum values within an interval.

Total

The sum of all stored data points within an interval

Mean

The average of the set of numerical values within an interval.

StandardDeviation

A measure of the dispersion or spread of data points within a sample dataset. It quantifies how much individual data points deviate from the mean (average) wihtin an interval.

PopulationStandardDeviation

A measure of the dispersion or spread of data points within a population. It quantifies how much individual data points deviate from the mean (average) of the entire population.

WeightedMean

A type of average that takes into account not only the values within an interval but also the index weights associated with each value. It is used when different data points have varying degrees of importance or significance.

WeightedStandardDeviation

A measure of the dispersion or spread of data points within a sample with an index weight applied that indicates relative significance to each value in a set of values. Values with a higher value for their index weight are considered more significant to a sample as compared to the other values in a sample.

WeightedPopulationStandardDeviation

A measure of the dispersion or spread of data points within a population, where each data point is assigned an index weight based on its importance or significance. This concept extends the traditional population standard deviation by incorporating index weights that reflect the relative importance of individual data points.

Parameters

Use the following parameters when calling the List Summaries endpoint.

Parameter

Description

Required

startIndex

Start index

Yes

endIndex

End index

Yes

count

Number of intervals to be returned

No (1 is default)

filter

Expression used to filter the result set based on property values

No

emptyIntervalMode

How intervals with no data should be formatted in response

No (NaN is default)

interpolationModeOverride

Interpolation mode override for calculating boundary values and weighted summary statistics.

No

extrapolationModeOverride

Extrapolation mode override for calculating boundary values and weighted summary statistics.

No

Empty interval mode

emptyIntervalMode is a query parameter that can be specified during data summaries calls to determine how intervals with no data should be handled in the response.

emptyIntervalMode can have the following values:

  • NaN (default) Summary statistics for intervals with no data will be returned with NaN values for all statistics except count which will be zero.

  • Zero Summary statistics for intervals with no data will be returned with 0 values for all statistics.

  • BoundaryInterpolation Summary statistics for intervals with no stored data will be calculated using the interpolated / extrapolated boundary values.

Notes:

  • If standard deviation type statistics cannot be calculated (for example, the interval only has 0-1 data points) and would otherwise result in NaN, 0 will be returned instead for mode Zero. For NaN mode, NaN will be returned.

  • BoundaryInterpolation mode treats the interpolated boundaries as continuous, and not as discrete values. This means an interval summary will have the following results if both the start and end boundaries have non-null values:

    Statistic

    Value

    Count

    0

    Min

    Min(startValue, endValue)

    Max

    Max(startValue, endValue)

    Range

    Abs(startValue endValue)

    Total

    NaN

    Mean

    NaN

    Standard Deviation

    NaN

    Population Standard Deviation

    NaN

    Weighted Mean

    Avg(startValue, endValue)

    Weighted Standard Deviation

    NaN

    Weighted Population Standard Deviation

    0

Interpolation / extrapolation mode overrides

When interpolation and/or extrapolation mode override is specified, summary statistics for intervals with no data will be returned using the interpolated values at the interval boundaries. This will override the settings of the type/stream for calculating boundary values and summary statistics.

Weighted summaries

In Stream Management, index-weighted summary calculations are provided for type properties that support and have a non-discrete interpolation mode set. These calculations are performed using a continuous-domain (measure-weighted) representation of data using a piecewise-defined interpolant. This is illustrated in the following diagram (using continuous interpolation in this example) where weights and corresponding values are represented for the singular interval [A,D], where A and D are values on the interval boundaries and B and C are stored values within the interval:

Here, if BC = 2 * AB = 2 * CD, the weights can be simplified to w(AB) = 1, w(BC) = 2, and w(CD) = 1. Here we see that we have N 1 (3) weights as mentioned in the formulas above.

Interval boundary behavior

This section describes how interval boundaries are interpreted when summaries are calculated.

Inclusion/exclusion

The following rules define which boundary values are included in each interval.

  • The start boundary of every interval is exclusive with the exception of the first interval returned.

  • The end boundary of every interval returned is inclusive.

Interval start and end

Each interval contains a start and end data point. The data points that are used for start and end are determined in the following order:

1. If there is a stored data point that coincides with the interval boundary, that data point is used.

2. If there is a data point that can be interpolated at the interval boundary, that data point is used.

3. If there is a data point that can be extrapolated at the interval boundary, that data point is used.

4. If there are stored data points present in the interval, then the closest stored data point to the boundary is used.

5. If none of the above apply, then just the index of the interval boundary is returned without a corresponding value.

In This Topic
Related Links