From c8384cf503d60697e43c8a4df85b531a9406031f Mon Sep 17 00:00:00 2001 From: Leon Sorokin Date: Fri, 2 May 2025 17:08:07 -0500 Subject: [PATCH] Transformations: Fix duplicate field names when joinBy follows groupBy (#104206) --- .../src/transformations/transformers/groupBy.test.ts | 6 ++++++ .../src/transformations/transformers/groupBy.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/grafana-data/src/transformations/transformers/groupBy.test.ts b/packages/grafana-data/src/transformations/transformers/groupBy.test.ts index 64a81b033df..169fbd6d470 100644 --- a/packages/grafana-data/src/transformations/transformers/groupBy.test.ts +++ b/packages/grafana-data/src/transformations/transformers/groupBy.test.ts @@ -418,6 +418,7 @@ describe('GroupBy transformer', () => { it('should retain "time" field type when used as aggregation (max, etc)', async () => { const testSeries = toDataFrame({ refId: 'A', + name: 'issues', fields: [ { name: 'user', type: FieldType.string, values: ['A', 'B', 'A', 'B'] }, { name: 'time', type: FieldType.time, values: [7, 2, 1, 5] }, @@ -458,6 +459,11 @@ describe('GroupBy transformer', () => { ]; expect(result[0].refId).toEqual('A'); + + // adding a frame name can modify field auto-name behavior if a joinBy transformer follows, which transfers + // the frame name to field.labels.name and calculateFieldDisplayName() may start treating it as a single-label field + expect(result[0].name).toBeUndefined(); + expect(result[0].fields).toEqual(expected); }); }); diff --git a/packages/grafana-data/src/transformations/transformers/groupBy.ts b/packages/grafana-data/src/transformations/transformers/groupBy.ts index ebc878547f1..f00219a5657 100644 --- a/packages/grafana-data/src/transformations/transformers/groupBy.ts +++ b/packages/grafana-data/src/transformations/transformers/groupBy.ts @@ -133,7 +133,7 @@ export const groupByTransformer: DataTransformerInfo } processed.push({ - ...frame, + refId: frame.refId, fields, length: valuesByGroupKey.size, });