SigNoz/signoz · error
there can be only one result series for value type panel but
Error message
there can be only one result series for value type panel but got %d
What it means
For a value panel with exactly one result, that result must contain a single series; if result.Series has more than one entry the query is non-aggregated and the panel cannot render a single value.
Source
Thrown at pkg/query-service/app/querier/querier.go:544
results, errQueriesByName, err = q.runPromQueries(ctx, orgID, params)
case v3.QueryTypeClickHouseSQL:
ctx = context.WithValue(ctx, "enforce_max_result_rows", true)
if params.CompositeQuery.PanelType == v3.PanelTypeList || params.CompositeQuery.PanelType == v3.PanelTypeTrace {
results, errQueriesByName, err = q.runBuilderListQueries(ctx, params)
} else {
results, errQueriesByName, err = q.runClickHouseQueries(ctx, params)
}
default:
err = fmt.Errorf("invalid query type")
}
}
// return error if the number of series is more than one for value type panel
if params.CompositeQuery.PanelType == v3.PanelTypeValue {
if len(results) > 1 && params.CompositeQuery.EnabledQueries() > 1 {
err = fmt.Errorf("there can be only one active query for value type panel")
} else if len(results) == 1 && len(results[0].Series) > 1 {
err = fmt.Errorf("there can be only one result series for value type panel but got %d", len(results[0].Series))
}
}
return results, errQueriesByName, err
}
func (q *querier) QueriesExecuted() []string {
return q.queriesExecuted
}
func (q *querier) TimeRanges() [][]int {
return q.timeRanges
}
View on GitHub (pinned to 5069bf80b0)
Solutions
- Add or fix the aggregation (count, avg, sum rate...) so one series is returned
- Remove groupBy attributes from the builder query or expression for value panels
- For per-group values, use a table/graph panel instead
Example fix
// before
{aggregateAttribute:{...}, groupBy:[{"serviceName"}]}
// after
{aggregateAttribute:{...}, groupBy:[]} Defensive patterns
Strategy: validation
Validate before calling
if params.CompositeQuery.PanelType == v3.PanelTypeValue {
for _, q := range params.CompositeQuery.Queries {
if !q.Disabled && q.Builder != nil && len(q.Builder.GroupBy) > 0 {
return fmt.Errorf("value panel query must not group by")
}
}
} Type guard
func yieldsSingleSeries(q *v3.BuilderQuery) bool { return len(q.GroupBy) == 0 } Prevention
- Always aggregate (count/avg/rate) for value panels
- Remove groupBy when converting graph panels to value panels
When it happens
Trigger: QueryRange with PanelTypeValue where the single query groups by a high-cardinality field (or no aggregation), returning multiple series.
Common situations: Forgetting to remove groupBy dimensions when switching a graph panel to a value panel, selecting raw list data instead of an aggregate like count()/avg().
Related errors
- there can be only one active query for value type panel
- CodeLicenseUnavailable
- CodeLicenseUnavailable
- CodeInvalidInput
- ErrCodeRoleInvalidInput
AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28).
Data as JSON: /api/errors/5f8840951c4be517.
Report an issue: GitHub.