diff --git a/packages/grafana-data/src/transformations/transformers/convertFieldType.test.ts b/packages/grafana-data/src/transformations/transformers/convertFieldType.test.ts index 467222765a4..7e6e1fd5aaa 100644 --- a/packages/grafana-data/src/transformations/transformers/convertFieldType.test.ts +++ b/packages/grafana-data/src/transformations/transformers/convertFieldType.test.ts @@ -101,6 +101,26 @@ describe('field convert type', () => { }); }); +it('can convert strings with commas to numbers', () => { + const options = { targetField: 'stringy nums', destinationType: FieldType.number }; + + const stringyNumbers = { + name: 'stringy nums', + type: FieldType.string, + values: new ArrayVector(['1,000', '1,000,000']), + config: {}, + }; + + const numbers = convertFieldType(stringyNumbers, options); + + expect(numbers).toEqual({ + name: 'stringy nums', + type: FieldType.number, + values: new ArrayVector([1000, 1000000]), + config: {}, + }); +}); + describe('field convert types transformer', () => { beforeAll(() => { mockTransformationsRegistry([convertFieldTypeTransformer]); diff --git a/packages/grafana-data/src/transformations/transformers/convertFieldType.ts b/packages/grafana-data/src/transformations/transformers/convertFieldType.ts index 0ebf969524f..318f1a3f4eb 100644 --- a/packages/grafana-data/src/transformations/transformers/convertFieldType.ts +++ b/packages/grafana-data/src/transformations/transformers/convertFieldType.ts @@ -142,7 +142,9 @@ function fieldToNumberField(field: Field): Field { const numValues = field.values.toArray().slice(); for (let n = 0; n < numValues.length; n++) { - const number = +numValues[n]; + // some numbers returned from datasources have commas + // strip the commas, coerce the string to a number + const number = +numValues[n].replace(/,/g, ''); numValues[n] = Number.isFinite(number) ? number : null; }