elasticsearch - Kibana Dashboard 上的趋势指标,这可能吗?
问题描述
我想在 kibana 仪表板中创建一个指标,它使用多个指标的比率和偏移期。
例子 :
日期预算
YYYY-MM-DD $
2019-01-01 15
2019-01-02 10
2019-01-03 5
2019-01-04 10
2019-01-05 12
2019-01-06 4
如果我选择 2019-01-04 到 2019-01-06 之间的时间范围,我想计算偏移期的比率:2019-01-01 到 2019-01-03。
恢复:(sum(10+12+4) - sum(15+10+5)) / sum(10+12+4) = -0.15 我的预算演变等于-15%(这就是我想要的在仪表板中打印)
但是,使用度量是不可能的(没有偏移),使用可视化构建器:不同的度量聚合没有不同的偏移(太糟糕了,因为存储桶脚本允许计算比率),使用 vega:我也没有找到解决方案。
任何想法 ?非常感谢
奥雷连
注意:我使用 kibana 版本 > 6.X
解决方案
请检查以下示例映射,该映射基于您在您想要查看的查询和聚合解决方案中提供的数据构建。
映射:
PUT <your_index_name>
{
"mappings": {
"mydocs": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd"
},
"budget": {
"type": "float"
}
}
}
}
}
聚合
我使用了以下类型的聚合:
4d
根据您在问题中提到的数据,我提到区间的日期直方图- 和
- 衍生物
- Bucket Script它实际上为您提供了所需的预算演变数字。
另外我假设日期格式将是yyyy-MM-dd
并且budget
是float
数据类型。
以下是您的聚合查询的方式。
POST <your_index_name>/_search
{
"size": 0,
"query": {
"range": {
"date": {
"gte": "2019-01-01",
"lte": "2019-01-06"
}
}
},
"aggs": {
"my_date": {
"date_histogram": {
"field": "date",
"interval": "4d",
"format": "yyyy-MM-dd"
},
"aggs": {
"sum_budget": {
"sum": {
"field": "budget"
}
},
"budget_derivative": {
"derivative": {
"buckets_path": "sum_budget"
}
},
"budget_evolution": {
"bucket_script": {
"buckets_path": {
"input_1": "sum_budget",
"input_2": "budget_derivative"
},
"script": "(params.input_2/params.input_1)*(100)"
}
}
}
}
}
}
请注意,您正在寻找的结果将在budget_evolution
零件中。
希望这可以帮助!
推荐阅读
- amazon - 如何在不注册 Associate Program 的情况下获取 Amazon 产品信息?
- mysql - 出现语法错误,但非常不确定出了什么问题
- c - 如何在没有 strstr 函数的情况下更改此代码?
- mysql - MySQL解析\u0080以上的字符
- asp.net-core - ASP.NET Core 2.0 - 用户在一小时内注销
- java - 通过 JDBC URL 使用 TestContainers DB 但使用 @Rule 时出错
- python - Tweepy 搜索查询问题
- python-3.x - Python 请求基于 URL 的程序从气候网站 (http://www.climate.weather.gc.ca) 自动批量下载数据
- ruby - 什么是正则表达式来获取一个或多个单词字符的字符串,除了只有数字字符的字符串?
- node.js - 有没有办法恢复正在运行的节点 .js 文件?