mirror of
https://github.com/grafana/grafana.git
synced 2024-11-23 01:16:31 -06:00
f172701043
* Use max data points to calculate interval * Fix mockCalculator to mach Calculator * Fix incorrect merge, replace queryModel with query
122 lines
3.5 KiB
Go
122 lines
3.5 KiB
Go
package elasticsearch
|
|
|
|
import (
|
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
|
)
|
|
|
|
// Query represents the time series query model of the datasource
|
|
type Query struct {
|
|
TimeField string `json:"timeField"`
|
|
RawQuery string `json:"query"`
|
|
BucketAggs []*BucketAgg `json:"bucketAggs"`
|
|
Metrics []*MetricAgg `json:"metrics"`
|
|
Alias string `json:"alias"`
|
|
Interval string
|
|
IntervalMs int64
|
|
RefID string
|
|
MaxDataPoints int64
|
|
}
|
|
|
|
// BucketAgg represents a bucket aggregation of the time series query model of the datasource
|
|
type BucketAgg struct {
|
|
Field string `json:"field"`
|
|
ID string `json:"id"`
|
|
Settings *simplejson.Json `json:"settings"`
|
|
Type string `jsons:"type"`
|
|
}
|
|
|
|
// MetricAgg represents a metric aggregation of the time series query model of the datasource
|
|
type MetricAgg struct {
|
|
Field string `json:"field"`
|
|
Hide bool `json:"hide"`
|
|
ID string `json:"id"`
|
|
PipelineAggregate string `json:"pipelineAgg"`
|
|
PipelineVariables map[string]string `json:"pipelineVariables"`
|
|
Settings *simplejson.Json `json:"settings"`
|
|
Meta *simplejson.Json `json:"meta"`
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
var metricAggType = map[string]string{
|
|
"count": "Count",
|
|
"avg": "Average",
|
|
"sum": "Sum",
|
|
"max": "Max",
|
|
"min": "Min",
|
|
"extended_stats": "Extended Stats",
|
|
"percentiles": "Percentiles",
|
|
"top_metrics": "Top Metrics",
|
|
"cardinality": "Unique Count",
|
|
"moving_avg": "Moving Average",
|
|
"moving_fn": "Moving Function",
|
|
"cumulative_sum": "Cumulative Sum",
|
|
"derivative": "Derivative",
|
|
"serial_diff": "Serial Difference",
|
|
"bucket_script": "Bucket Script",
|
|
"raw_document": "Raw Document",
|
|
"rate": "Rate",
|
|
}
|
|
|
|
var extendedStats = map[string]string{
|
|
"avg": "Avg",
|
|
"min": "Min",
|
|
"max": "Max",
|
|
"sum": "Sum",
|
|
"count": "Count",
|
|
"std_deviation": "Std Dev",
|
|
"std_deviation_bounds_upper": "Std Dev Upper",
|
|
"std_deviation_bounds_lower": "Std Dev Lower",
|
|
}
|
|
|
|
var pipelineAggType = map[string]string{
|
|
"moving_avg": "moving_avg",
|
|
"moving_fn": "moving_fn",
|
|
"cumulative_sum": "cumulative_sum",
|
|
"derivative": "derivative",
|
|
"serial_diff": "serial_diff",
|
|
"bucket_script": "bucket_script",
|
|
}
|
|
|
|
var scriptableAggType = map[string]string{
|
|
"avg": "avg",
|
|
"sum": "sum",
|
|
"max": "max",
|
|
"min": "min",
|
|
"extended_stats": "extended_stats",
|
|
"percentiles": "percentiles",
|
|
"bucket_script": "bucket_script",
|
|
}
|
|
|
|
var pipelineAggWithMultipleBucketPathsType = map[string]string{
|
|
"bucket_script": "bucket_script",
|
|
}
|
|
|
|
func isPipelineAgg(metricType string) bool {
|
|
if _, ok := pipelineAggType[metricType]; ok {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isMetricAggregationWithInlineScriptSupport(metricType string) bool {
|
|
if _, ok := scriptableAggType[metricType]; ok {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isPipelineAggWithMultipleBucketPaths(metricType string) bool {
|
|
if _, ok := pipelineAggWithMultipleBucketPathsType[metricType]; ok {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func describeMetric(metricType, field string) string {
|
|
text := metricAggType[metricType]
|
|
if metricType == countType {
|
|
return text
|
|
}
|
|
return text + " " + field
|
|
}
|