Histogram: filter nulls, bucket-adaptive xAxis decimals (#51773)

pull/51351/head
Leon Sorokin 3 years ago committed by GitHub
parent 1e85a6f4fd
commit 173636aa61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      packages/grafana-data/src/transformations/transformers/histogram.ts

@ -160,13 +160,13 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform
for (const frame of frames) {
for (const field of frame.fields) {
if (field.type === FieldType.number) {
allValues = allValues.concat(
field.values.toArray().map((val: number) => Number(val.toFixed(field.config.decimals ?? 0)))
);
allValues = allValues.concat(field.values.toArray());
}
}
}
allValues = allValues.filter((v) => v != null);
allValues.sort((a, b) => a - b);
let smallestDelta = Infinity;
@ -204,6 +204,9 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform
const getBucket = (v: number) => incrRoundDn(v - bucketOffset, bucketSize!) + bucketOffset;
// guess number of decimals
let bucketDecimals = (('' + bucketSize).match(/\.\d+$/) ?? ['.'])[0].length - 1;
let histograms: AlignedData[] = [];
let counts: Field[] = [];
let config: FieldConfig | undefined = undefined;
@ -220,7 +223,7 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform
unit: undefined,
},
});
if (!config && Object.keys(field.config).length) {
if (!config && field.config.unit) {
config = field.config;
}
}
@ -251,7 +254,13 @@ export function buildHistogram(frames: DataFrame[], options?: HistogramTransform
values: new ArrayVector(joinedHists[0]),
type: FieldType.number,
state: undefined,
config: config ?? {},
config:
bucketDecimals === 0
? config ?? {}
: {
...config,
decimals: bucketDecimals,
},
};
const bucketMax = {
...bucketMin,

Loading…
Cancel
Save