Query
The Query page lets you explore the time-series data Pulse collects from your data sources — OPC UA servers, S7 PLCs, Prometheus endpoints, and heartbeats. Instead of looking at a single monitor, you build an ad-hoc query — pick the data points, choose how to aggregate them, and see the result as charts or a table.
This is read-only analysis. Queries never change your monitors, thresholds, or incidents.
How a query is built
A query is assembled in the Define panel from three parts, shown side by side:
- SELECT — the aggregations to compute (e.g. average, maximum, a percentile).
- WHERE — the data points to include.
- GROUP BY — how to split the results into separate series.
The time range and granularity are set from the clock icon in the panel header. Press Run Query to execute, or Cancel to clear the current results.
Ask AI for help
Click the Ask AI for help button (✦) in the toolbar to open AI Canvas with a prompt pre-filled to guide the assistant through building a query. The assistant asks what you want to find out, constructs the query, and shows you the results.
SELECT — aggregations
Each aggregation reduces all the readings in a time bucket to a single number. You can add up to four aggregations to one query.
An aggregation is a function applied to a field:
- Functions — Count, Sum, Average, Min, Max, Latest, and percentiles (P1, P5, P10, P25, P50/median, P75, P90, P95, P99, and finer steps such as P0.1 and P99.9).
- Fields — the value being aggregated:
- Value — the numeric reading from the data point. Boolean readings count as
0or1. - Latency — how long the read took, in milliseconds. Useful for spotting slow or degrading connections.
- Value — the numeric reading from the data point. Boolean readings count as
Count does not need a field — it counts the number of samples in each bucket. Latest returns the value at the sample with the greatest timestamp in the bucket — useful when you want the most recent reading rather than an aggregate like the average or maximum.
To add an aggregation, start typing a function name. Type the function followed by ( to choose a field — for example avg( then pick Value or Latency. The result reads back as a chip like avg(value) or max(latency).
TIP
Only successful reads are included. A reading is counted only when the source reported a good status (OPC UA status Good, S7 read status OK). Failed or stale reads are excluded, so the aggregates reflect healthy data only.
WHERE — data points and tags
The WHERE field selects which data points feed the query.
Start typing a data source name to find it, then pick one of its data points — an OPC UA node, an S7 address, a Prometheus series, or a heartbeat. Choose * to include everything that source measures at once. Selected data points appear as chips; remove one with its × or by pressing Backspace.
You can mix data points from several sources, of any kind. They are queried together and combined into one result set.
What * leaves out
* covers what a source measures, not its health signals. A source's own reachability, and any OPC UA node watched for whether it still exists rather than for its value, are left out — each reports a constant, and averaging one in beside a temperature would flatten the result. Select either by name to chart it on its own.
You can also filter by monitor tags — the labels you assign to monitors. Tags appear in the same dropdown, organized by category. Select one or more tags to restrict the query to data from monitors that carry those tags. Tag chips show the tag color and name alongside any selected data point chips. Remove a tag chip with its × or by pressing Backspace. A query may use tags alone, without selecting specific data points.
WARNING
At least one data point or tag is required. A query with an empty WHERE field will not run.
GROUP BY — splitting into series
By default, every selected data point is aggregated together into a single series. Group By splits that single series into several:
- Monitor — one series per condition monitor that reads the selected data points.
- Data Point — one series per data point.
- Data Source — one series per data source.
You can combine them. avg(value) grouped by Data Point gives one line per point, which is the quickest way to compare readings against each other. Add Monitor to break each point out by the monitor watching it — a point read by two monitors then appears once under each.
Time range and granularity
Open the clock icon in the panel header to set:
- Time Range — a quick range (last 15 minutes through last 30 days) or a custom start/end.
- Granularity — the size of each time bucket (10 seconds up to 1 week). Leave it on Auto to let Pulse pick a sensible bucket for the chosen range. When granularity is not set explicitly, Pulse buckets data by the hour.
Finer granularity gives more detail but more points; coarser granularity smooths the data and runs faster over long ranges.
Reading the results
After a query runs, the charts appear below the builder, with an Overview and a Table view in a tabbed control beneath them. A small summary line shows the query's execution time, the number of time buckets returned, and the granularity that was actually applied.
Charts
The charts are always shown. Each aggregation in your SELECT gets its own chart: a query with count and avg(value) produces two separate graphs — one per aggregation — so different units and scales never share a single axis. Within each chart, every Group By series is drawn as its own line.
The colors are explained by the Overview table below, where each row carries the same color as its line.
Incident markers
Incidents that occurred on the queried monitors during the time window are drawn on the charts as vertical markers, colored by status (unacknowledged, acknowledged, resolved). Use the Incidents button above the charts to show or hide individual incidents — handy for lining up a spike in the data with the incident it caused.
Overview
The Overview tab summarizes the whole window as a table with one row per group. Each aggregation is a column (e.g. count, avg(value)), and when you group by Monitor, Data Point, or Data Source those appear as columns too. A colored dot on each row matches that group's line in the charts.
These totals are computed over all readings in the window — so avg(value) is the true average across the window, percentiles are exact, and count is the total — not a combination of the per-bucket numbers.
Table
The Table tab shows the time-series breakdown — one row per time bucket and group, with a column for each aggregation. Columns are sortable. Use the table when you want the exact per-bucket numbers rather than a trend or a window total.
Suggested queries
Below the builder, Suggested Queries offers ready-made starting points for common questions, such as average value per data point, peak values, polling latency, the slowest data sources, and sample volume per data source.
Selecting a suggestion fills in the SELECT, GROUP BY, granularity, and time range for you while keeping the data points you have already chosen. If you have not selected a data point yet, pick one in the WHERE field first, then run the suggestion.
The suggestions disappear once you run a query and return when you press Cancel.
On mobile, the panel is replaced by a Suggested Queries button. Tapping it opens a bottom drawer that lists all suggestions with their names and descriptions. Tap any suggestion to run it immediately.
Related documentation
- Monitors — the condition monitors that alert on the readings you query here.
- OPC UA, Siemens S7, and Heartbeat — how the underlying data is collected.
- AI Canvas — ask the assistant to build and run queries on your behalf.

