diff --git a/model/insight/metric_data.go b/model/insight/metric_data.go index 98a5924b..f8a4e5fc 100644 --- a/model/insight/metric_data.go +++ b/model/insight/metric_data.go @@ -51,6 +51,14 @@ func (m *Metric) GenerateExpression() (string, error){ return string(expressionBytes), nil } +func (m *Metric) AutoTimeBeforeGroup() bool { + for _, item := range m.Items { + if item.Statistic == "derivative" { + return false + } + } + return true +} type MetricItem struct { Name string `json:"name,omitempty"` diff --git a/plugin/api/insight/metadata.go b/plugin/api/insight/metadata.go index 63b25c06..c82d0841 100644 --- a/plugin/api/insight/metadata.go +++ b/plugin/api/insight/metadata.go @@ -214,7 +214,8 @@ func getMetricData(metric *insight.Metric) (interface{}, error) { agg = aggM["filter_agg"] } } - metricData := CollectMetricData(agg, true) + timeBeforeGroup := metric.AutoTimeBeforeGroup() + metricData := CollectMetricData(agg, timeBeforeGroup) var targetMetricData []insight.MetricData formula := strings.TrimSpace(metric.Formula) diff --git a/plugin/api/insight/metric_util.go b/plugin/api/insight/metric_util.go index d85d6a22..ce973623 100644 --- a/plugin/api/insight/metric_util.go +++ b/plugin/api/insight/metric_util.go @@ -79,7 +79,7 @@ func generateAgg(metricItem *insight.MetricItem, timeField string) map[string]in } func GenerateQuery(metric *insight.Metric) (interface{}, error) { - var timeBeforeGroup = true + var timeBeforeGroup = metric.AutoTimeBeforeGroup() basicAggs := util.MapStr{} i := 0 for _, metricItem := range metric.Items {