SigNoz/signoz · error

there can be only one active query for value type panel

Error message

there can be only one active query for value type panel

What it means

A value-type panel must aggregate to a single number. If more than one query is active and produced results (len(results) > 1) with multiple enabled queries, QueryRange rejects it.

Source

Thrown at pkg/query-service/app/querier/querier.go:542

			}
		case v3.QueryTypePromQL:
			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

  1. Disable or delete all but one query in the composite query for value panels
  2. If you need multiple values, split into separate value panels
  3. Ensure filters/groupBy don't turn the single query into multiple series (see companion series error)

Example fix

// before
queries: [{name:"a",...},{name:"b",...}] // panelType: "value"
// after
queries: [{name:"a",...},{name:"b",...,disabled:true}] // only one enabled
Defensive patterns

Strategy: validation

Validate before calling

if params.CompositeQuery.PanelType == v3.PanelTypeValue {
    enabled := 0
    for _, q := range params.CompositeQuery.Queries { if !q.Disabled { enabled++ } }
    if enabled > 1 { return fmt.Errorf("value panel allows only one enabled query") }
}

Type guard

func hasSingleEnabledQuery(cq *v3.CompositeQuery) bool {
    n := 0
    for _, q := range cq.Queries { if !q.Disabled { n++ } }
    return n <= 1
}

Prevention

When it happens

Trigger: QueryRange with PanelType == v3.PanelTypeValue where the composite query has two or more enabled queries each returning a result.

Common situations: Duplicating a query in the panel editor for a 'Big Number'/value widget and leaving both enabled, copying a graph panel config into a value panel without removing extra queries.

Related errors


AI-assisted analysis of SigNoz/signoz@5069bf80b0 (2026-08-28). Data as JSON: /api/errors/e831e1f501edb3e5. Report an issue: GitHub.