mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
OuterJoin: Fixes transformation when data is missing field to join by (#27453)
This commit is contained in:
parent
023054bc62
commit
883d7cb578
@ -288,4 +288,62 @@ describe('SeriesToColumns Transformer', () => {
|
||||
expect(filtered.fields).toEqual(expected);
|
||||
});
|
||||
});
|
||||
|
||||
it('joins if fields are missing', () => {
|
||||
const cfg: DataTransformerConfig<SeriesToColumnsOptions> = {
|
||||
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' },
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
@ -26,7 +26,7 @@ export const seriesToColumnsTransformer: DataTransformerInfo<SeriesToColumnsOpti
|
||||
const keyField = findKeyField(frame, keyFieldMatch);
|
||||
|
||||
if (!keyField) {
|
||||
return data;
|
||||
continue;
|
||||
}
|
||||
|
||||
for (let fieldIndex = 0; fieldIndex < frame.fields.length; fieldIndex++) {
|
||||
@ -74,8 +74,8 @@ export const seriesToColumnsTransformer: DataTransformerInfo<SeriesToColumnsOpti
|
||||
const keyFieldTitle = getFieldDisplayName(resultFrame.fields[0], resultFrame);
|
||||
const byKeyField: { [key: string]: { [key: string]: any } } = {};
|
||||
|
||||
/*
|
||||
this loop creates a dictionary object that groups the key fields values
|
||||
/*
|
||||
this loop creates a dictionary object that groups the key fields values
|
||||
{
|
||||
"key field first value as string" : {
|
||||
"key field name": key field first value,
|
||||
|
Loading…
Reference in New Issue
Block a user