Data points
In the Data points field, choose one of the options in the table.
Raw and latest values of string time series come back as text, which you can read in table and state timeline panels. For state time series, raw values and the latest value keep each state’s code and are labeled from the state set, so the state timeline panel shows the state labels in the order of the state set.
Aggregations
With Aggregate, select an Aggregation. The list follows the type of the time series: first the aggregations of that type, then the aggregations that every type has.
To learn how CDF computes each aggregation, see Aggregation functions, Supported aggregates for state time series, and Status codes for the good, uncertain, and bad aggregations.
For state time series, State duration, State count, and State transitions return one series for each state. Use the
{{state}} token in Label to place the state in the series name. Without the token, the state is appended to the name. See Labels.
If a saved query uses an aggregation that the type of the time series doesn’t support, the query fails and the error lists the aggregations you can use.
Granularity
The Granularity field sets the width of each aggregate interval:- Auto follows the dashboard time range and the panel width. Choose Standard for about one interval per pixel, or Fewer points for intervals about four times wider. Fewer points makes dashboards with many time series load faster. A badge shows the granularity that Auto resolves to.
- Fixed takes a value such as
12h. The field is pre-filled with the granularity in effect, and flags values that CDF doesn’t accept.
Gap filling
By default, intervals without data points are left out. Use Gap filling to fill them:- Fixed fills gaps up to a duration, for example,
4h. - × granularity fills gaps up to a multiple of the granularity, so the limit follows an Auto granularity as the time range changes. A badge shows the limit sent to CDF.
Labels
The Label field names each series. To name a series from the properties of its time series, write a template with{{property}} tokens. The tab fills in each token when the query runs.
If you leave the field empty, the Time series tab names the series space:externalId, the GraphQL tab uses the time series name, and the Synthetic time series tab uses the expression with each variable replaced by the name of its time series.
For example,
{{name}} ({{unit.symbol}}) names a temperature series Outdoor temperature (°C), and switches to (°F) when you set the target unit to Fahrenheit.
The tokens tell you when a template doesn’t match the data:
- A token for a property the view doesn’t have renders as
:property, so a typo shows in the legend instead of falling back to the default name. - A property with no value renders as
null, or as:property.pathfor a nested path, which usually means a relation that isn’t set. - An object renders as JSON. Use a bare
{{unit}}to see every unit property you can refer to, then narrow the token to the one you want.
{{ name }} and {{name}} mean the same thing.
The tabs differ in where the tokens read from:
- On the Time series tab, the tokens read the time series instance in the selected view, so every property of the view is available.
- On the GraphQL tab, the tokens read the response, so a field you want in the label must be selected in the query. For example,
{{unit.symbol}}works only if the query selectsunit { symbol }. For time series reached through a relation, a field the time series doesn’t have resolves against the parent row. - On the Synthetic time series tab, prefix the token with the variable name, for example,
{{A.name}}or{{A.unit.symbol}}, and{{A.unit}}resolves to the variable’s Unit if you set one.