From 883d7cb578828f50c72f404ca34cebe128c03d2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Wed, 9 Sep 2020 06:56:39 +0200 Subject: [PATCH] OuterJoin: Fixes transformation when data is missing field to join by (#27453) --- .../transformers/seriesToColumns.test.ts | 58 +++++++++++++++++++ .../transformers/seriesToColumns.ts | 6 +- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/packages/grafana-data/src/transformations/transformers/seriesToColumns.test.ts b/packages/grafana-data/src/transformations/transformers/seriesToColumns.test.ts index 768d5c5ac2d..e026b7d3eb4 100644 --- a/packages/grafana-data/src/transformations/transformers/seriesToColumns.test.ts +++ b/packages/grafana-data/src/transformations/transformers/seriesToColumns.test.ts @@ -288,4 +288,62 @@ describe('SeriesToColumns Transformer', () => { expect(filtered.fields).toEqual(expected); }); }); + + it('joins if fields are missing', () => { + const cfg: DataTransformerConfig = { + id: DataTransformerID.seriesToColumns, + options: { + byField: 'time', + }, + }; + + const frame1 = toDataFrame({ + name: 'A', + fields: [ + { name: 'time', type: FieldType.time, values: [1, 2, 3] }, + { name: 'temperature', type: FieldType.number, values: [10, 11, 12] }, + ], + }); + + const frame2 = toDataFrame({ + name: 'B', + fields: [], + }); + + const frame3 = toDataFrame({ + name: 'C', + fields: [ + { name: 'time', type: FieldType.time, values: [1, 2, 3] }, + { name: 'temperature', type: FieldType.number, values: [20, 22, 24] }, + ], + }); + + const filtered = transformDataFrame([cfg], [frame1, frame2, frame3])[0]; + + expect(filtered.fields).toEqual([ + { + name: 'time', + state: { displayName: 'time' }, + type: FieldType.time, + values: new ArrayVector([1, 2, 3]), + config: {}, + }, + { + name: 'temperature', + state: { displayName: 'temperature A' }, + type: FieldType.number, + values: new ArrayVector([10, 11, 12]), + config: {}, + labels: { name: 'A' }, + }, + { + name: 'temperature', + state: { displayName: 'temperature C' }, + type: FieldType.number, + values: new ArrayVector([20, 22, 24]), + config: {}, + labels: { name: 'C' }, + }, + ]); + }); }); diff --git a/packages/grafana-data/src/transformations/transformers/seriesToColumns.ts b/packages/grafana-data/src/transformations/transformers/seriesToColumns.ts index d6cc46741af..50f4a26ae95 100644 --- a/packages/grafana-data/src/transformations/transformers/seriesToColumns.ts +++ b/packages/grafana-data/src/transformations/transformers/seriesToColumns.ts @@ -26,7 +26,7 @@ export const seriesToColumnsTransformer: DataTransformerInfo