feat: add readNullableMetricsValue

This commit is contained in:
Fine 2023-04-13 15:32:19 +08:00
parent 49a5481fb0
commit 8bcc886017
2 changed files with 16 additions and 6 deletions

View File

@ -22,6 +22,7 @@ export enum MetricQueryTypes {
READHEATMAP = "readHeatMap", READHEATMAP = "readHeatMap",
ReadSampledRecords = "readSampledRecords", ReadSampledRecords = "readSampledRecords",
ReadRecords = "readRecords", ReadRecords = "readRecords",
ReadNullableMetricsValue = "readNullableMetricsValue",
} }
export enum Calculations { export enum Calculations {
@ -73,7 +74,11 @@ export const RespFields: Indexable = {
values {value} values {value}
} }
}`, }`,
readMetricsValue: "", readMetricsValue: ``,
readNullableMetricsValue: `{
value
isEmptyValue
}`,
sortMetrics: `{ sortMetrics: `{
name name
id id

View File

@ -114,9 +114,10 @@ export function useQueryProcessor(config: Indexable) {
} }
if (metricType === MetricQueryTypes.ReadLabeledMetricsValues) { if (metricType === MetricQueryTypes.ReadLabeledMetricsValues) {
return `${name}${index}: ${metricType}(condition: $condition${index}, labels: $labels${index}, duration: $duration)${RespFields[metricType]}`; return `${name}${index}: ${metricType}(condition: $condition${index}, labels: $labels${index}, duration: $duration)${RespFields[metricType]}`;
} else {
return `${name}${index}: ${metricType}(condition: $condition${index}, duration: $duration)${RespFields[metricType]}`;
} }
const t = metricType === MetricQueryTypes.ReadMetricsValue ? MetricQueryTypes.ReadNullableMetricsValue : metricType;
return `${name}${index}: ${t}(condition: $condition${index}, duration: $duration)${RespFields[t]}`;
}); });
const queryStr = `query queryData(${variables}) {${fragment}}`; const queryStr = `query queryData(${variables}) {${fragment}}`;
@ -166,7 +167,8 @@ export function useSourceProcessor(
} }
} }
if (type === MetricQueryTypes.ReadMetricsValue) { if (type === MetricQueryTypes.ReadMetricsValue) {
source[m] = aggregation(Number(Object.values(resp.data)[0]), c); const v = Object.values(resp.data)[0] || {};
source[m] = v.isEmptyValue ? NaN : aggregation(Number(v.value), c);
} }
if ( if (
( (
@ -250,7 +252,9 @@ export function useQueryPodsMetrics(
const labels = (c.labelsIndex || "").split(",").map((item: string) => item.replace(/^\s*|\s*$/g, "")); const labels = (c.labelsIndex || "").split(",").map((item: string) => item.replace(/^\s*|\s*$/g, ""));
conditions[`labels${index}${idx}`] = labels; conditions[`labels${index}${idx}`] = labels;
} }
return `${name}${index}${idx}: ${metricType}(condition: $condition${index}${idx}, ${labelStr}duration: $duration)${RespFields[metricType]}`; const t =
metricType === MetricQueryTypes.ReadMetricsValue ? MetricQueryTypes.ReadNullableMetricsValue : metricType;
return `${name}${index}${idx}: ${t}(condition: $condition${index}${idx}, ${labelStr}duration: $duration)${RespFields[t]}`;
}); });
return f; return f;
}); });
@ -281,7 +285,8 @@ export function usePodsSource(
const c: any = (config.metricConfig && config.metricConfig[index]) || {}; const c: any = (config.metricConfig && config.metricConfig[index]) || {};
const key = name + idx + index; const key = name + idx + index;
if (config.metricTypes[index] === MetricQueryTypes.ReadMetricsValue) { if (config.metricTypes[index] === MetricQueryTypes.ReadMetricsValue) {
d[name] = aggregation(resp.data[key], c); const v = resp.data[key];
d[name] = v.isEmptyValue ? NaN : aggregation(v.value, c);
if (idx === 0) { if (idx === 0) {
names.push(name); names.push(name);
metricConfigArr.push(c); metricConfigArr.push(c);