У меня есть табличные данные по районам и дням. Каждая строка содержит разницу между текущим и предыдущим днями, то есть относительное значение.
district | day | metric
----------+------------+--------
D1 | 2020-04-12 | -11
D1 | 2020-04-13 | 40
D2 | 2020-04-13 | 20
D1 | 2020-04-14 | 11
D1 | 2020-04-15 | -50
Мне нужно визуализировать эти данные на карте региона Кибаны.
Итак, metri c сгруппировано по район и суммировано. Вот запрос ElasticSearch, сгенерированный Kibana:
{"aggs": {
"2": {
"terms": {
"field": "district",
"size": 300,
"order": {
"1": "desc"
}},
"aggs": {
"1": {
"sum": {
"field": "metric"
}}}}},
"query": {
"bool": {
"must": [{
"range": {
"@timestamp": {
"format": "strict_date_optional_time",
"gte": "2020-04-12T00:00:00.0Z",
"lte": "2020-04-16T00:00:00.0Z"
}}}]}}}
В зависимости от ярости выбранных данных, результат может отличаться. Например, этот запрос выбирает все данные (см. @Timestamp filter) и значения metri c для округов D1 и D2 будут -10 и 20 . Если я изменю фильтр для выбора данных за 12-13 апреля, это будет -11 + 40 = 29 для D1 и 20 для D2 .
В Кибане мне нужно отфильтровать сегменты с отрицательным значением (metri c) и показать районы только с положительным значением суммы. Я не мог найти никакого рабочего решения. Я пробовал
- Кибана JSON вход + Агрегация селектора ковшей Визуальный
- Графики Веги Кибаны, но кажется, что это не поддерживает карты региона. Я бы хотел этого избежать, так как это довольно сложно.
- Создание нового индекса на основе существующих, но это невозможно, так как в результате это зависит от фильтра диапазона дат, поэтому я не могу предварительно рассчитать показатели и отфильтровывать негативы, потому что я не знаю, какой диапазон дат находится в расширенном режиме
Ничего из этого не сработало для меня. Мне удалось составить рабочий поисковый запрос Elasti c, который выполняет именно то, что я хочу, но я не знаю, как его визуализировать, используя карту региона:
{"aggs": {
"2": {
"terms": {
"field": "district",
"size": 300,
"order": {
"1": "desc"
}},
"aggs": {
"1": {
"sum": {
"field": "metric"
},
"1_bucket_selector": { -- here is main part, how get it in region map?
"bucket_selector": {
"buckets_path": {
"metricSum": "1"
},
"script": "params.metricSum > 0"
}}}}}}}
Итак, любой обходной путь для достижения что я хочу?
Здесь относится к теме topi c на форуме в Кибане