{"record":{"id":"5f8840951c4be517","repo":"SigNoz/signoz","slug":"there-can-be-only-one-result-series-for-value-type","errorCode":null,"errorMessage":"there can be only one result series for value type panel but got %d","messagePattern":"there can be only one result series for value type panel but got (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/query-service/app/querier/querier.go","lineNumber":544,"sourceCode":"\t\t\tresults, errQueriesByName, err = q.runPromQueries(ctx, orgID, params)\n\t\tcase v3.QueryTypeClickHouseSQL:\n\t\t\tctx = context.WithValue(ctx, \"enforce_max_result_rows\", true)\n\t\t\tif params.CompositeQuery.PanelType == v3.PanelTypeList || params.CompositeQuery.PanelType == v3.PanelTypeTrace {\n\t\t\t\tresults, errQueriesByName, err = q.runBuilderListQueries(ctx, params)\n\t\t\t} else {\n\t\t\t\tresults, errQueriesByName, err = q.runClickHouseQueries(ctx, params)\n\t\t\t}\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"invalid query type\")\n\t\t}\n\t}\n\n\t// return error if the number of series is more than one for value type panel\n\tif params.CompositeQuery.PanelType == v3.PanelTypeValue {\n\t\tif len(results) > 1 && params.CompositeQuery.EnabledQueries() > 1 {\n\t\t\terr = fmt.Errorf(\"there can be only one active query for value type panel\")\n\t\t} else if len(results) == 1 && len(results[0].Series) > 1 {\n\t\t\terr = fmt.Errorf(\"there can be only one result series for value type panel but got %d\", len(results[0].Series))\n\t\t}\n\t}\n\n\treturn results, errQueriesByName, err\n}\n\nfunc (q *querier) QueriesExecuted() []string {\n\treturn q.queriesExecuted\n}\n\nfunc (q *querier) TimeRanges() [][]int {\n\treturn q.timeRanges\n}\n","sourceCodeStart":526,"sourceCodeEnd":558,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/pkg/query-service/app/querier/querier.go#L526-L558","documentation":"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.","triggerScenarios":"QueryRange with PanelTypeValue where the single query groups by a high-cardinality field (or no aggregation), returning multiple series.","commonSituations":"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().","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"],"exampleFix":"// before\n{aggregateAttribute:{...}, groupBy:[{\"serviceName\"}]}\n// after\n{aggregateAttribute:{...}, groupBy:[]}","handlingStrategy":"validation","validationCode":"if params.CompositeQuery.PanelType == v3.PanelTypeValue {\n    for _, q := range params.CompositeQuery.Queries {\n        if !q.Disabled && q.Builder != nil && len(q.Builder.GroupBy) > 0 {\n            return fmt.Errorf(\"value panel query must not group by\")\n        }\n    }\n}","typeGuard":"func yieldsSingleSeries(q *v3.BuilderQuery) bool { return len(q.GroupBy) == 0 }","tryCatchPattern":null,"preventionTips":["Always aggregate (count/avg/rate) for value panels","Remove groupBy when converting graph panels to value panels"],"tags":["panel-type","value-panel","group-by","validation"],"backgroundTag":"request-validation-failed","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}