Vega: добавить недостающую информацию в данные
В kibana, в визуализации Vega-lite, я хотел бы создать граф состояний перехода приложения (AAAA) с течением времени. (график)
состояния имеют фиксированные значения ( init, start, running ...)
На оси х отметка времени,
На уровне государства,
Прямоугольник или полоса для отслеживания уровня состояния.
| ====
| ======
| ============
______________________________
t0 t1 t2....
мои данные поступают из запроса в ElasticSearch и имеют следующий формат.
timestamp app state
t0 AAAA Init
t1 AAAA start
t2 AAAA Running
t3 AAAA stopped
В vega я хотел бы представить состояние с помощью столбца или прямоугольника, например: состояние Init будет представлено прямоугольником, начиная с t0 и заканчивая в t1. но у меня нет этой информации! T1 находится в следующей строке данных
Можно ли рассчитать это значение, используя следующую строку. Данные будут такими.
timestamp app state ends
t0 AAAA Init t1
t1 AAAA start t2
t2 AAAA Running t3
t3 AAAA stopped t4
Любая помощь будет приветствоваться.
1 ответ
Вы можете сделать это с помощью преобразования окна, используя lead
операция, чтобы найти следующее значение. Например:
{
"data": {
"values": [
{"timestamp": 0, "app": "A", "state": "init"},
{"timestamp": 10, "app": "A", "state": "start"},
{"timestamp": 25, "app": "A", "state": "run"},
{"timestamp": 30, "app": "A", "state": "stop"},
{"timestamp": 40, "app": "B", "state": "init"},
{"timestamp": 55, "app": "B", "state": "start"},
{"timestamp": 75, "app": "B", "state": "run"},
{"timestamp": 85, "app": "B", "state": "stop"},
{"timestamp": 90, "app": null, "state": "init"}
]
},
"transform": [
{"window": [{"op": "lead", "field": "timestamp", "as": "t_stop"}]},
{"filter": "datum.app != null"}
],
"encoding": {
"color": {"type": "nominal", "field": "app"},
"x": {"type": "quantitative", "field": "timestamp"},
"x2": {"type": "quantitative", "field": "t_stop"},
"y": {
"type": "nominal",
"field": "state",
"sort": {"op": "sum", "field": "timestamp", "order": "ascending"}
}
},
"mark": "bar",
"$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json"
}