diff --git a/packages/grafana-data/src/transformations/fieldReducer.ts b/packages/grafana-data/src/transformations/fieldReducer.ts index 7d7927792fc..8bd30767015 100644 --- a/packages/grafana-data/src/transformations/fieldReducer.ts +++ b/packages/grafana-data/src/transformations/fieldReducer.ts @@ -254,7 +254,7 @@ export const fieldReducers = new Registry(() => [ name: 'All values', description: 'Returns an array with all values', standard: false, - reduce: (field: Field) => ({ allValues: field.values }), + reduce: (field: Field) => ({ allValues: [...field.values] }), }, { id: ReducerID.uniqueValues, diff --git a/packages/grafana-data/src/transformations/transformers/calculateField.test.ts b/packages/grafana-data/src/transformations/transformers/calculateField.test.ts index 28983031531..ba3a1ab1477 100644 --- a/packages/grafana-data/src/transformations/transformers/calculateField.test.ts +++ b/packages/grafana-data/src/transformations/transformers/calculateField.test.ts @@ -222,6 +222,33 @@ describe('calculateField transformer w/ timeseries', () => { }); }); + it('reduces all field', async () => { + const cfg = { + id: DataTransformerID.calculateField, + options: { + mode: CalculateFieldMode.ReduceRow, + reduce: { include: ['B', 'C'], reducer: ReducerID.allValues }, + replaceFields: true, + }, + }; + + await expect(transformDataFrame([cfg], [seriesBC])).toEmitValuesWith((received) => { + const data = received[0]; + const filtered = data[0]; + const rows = new DataFrameView(filtered).toArray(); + expect(rows).toEqual([ + { + 'All values': [2, 3], + TheTime: 1000, + }, + { + 'All values': [200, 300], + TheTime: 2000, + }, + ]); + }); + }); + it('can add index field', async () => { const cfg = { id: DataTransformerID.calculateField,