Elasticsearch / Kibana: 7.0.1
Vega-lite: 2.6.0
У меня есть индекс ES (эластичный поиск) с именем : someindex
, в котором у меня есть действительные данные истории JIRA (за последний 1 год).
Вот данные CSV файла (заголовок / строка), которые Я уже глотал вышеупомянутый индекс ES, используя Logsta sh. Я вижу данные в разделе Kibana Discover
в парах JSON (ключ = значение).
sprint_number,sprint,sprint_start_date,sprint_end_date,workdays_lead_time,workdays_cycle_time
0,Bot Fighters - JIRA,,,,,360,20,14
1,Avengers - JIRA,2019-03-14T16:00:00.000-07:00,2019-03-27T15:55:00.000-07:00,30,28
2,WonderWoman,2019-03-28T16:00:00.000-07:00,2019-04-10T15:55:00.000-07:00,20,15
3,Spiderman,2019-04-11T16:00:00.000-07:00,2019-04-24T15:55:00.000-07:00,24,15
4,Hulk,2019-04-25T16:00:00.000-07:00,2019-05-09T15:55:00.000-07:00,17,10
5,Sprint 2020,2019-05-10T16:00:00.000-07:00,2019-05-23T15:55:00.000-07:00,10,8
6,Sprint Team ABC,2019-05-24T16:00:00.000-07:00,2019-06-06T15:55:00.000-07:00,12,9
Данные в индексе ES имеют 2 основных столбца / поля, которые содержат данные float type
(т.е. количество дней может быть 5 или 3.5 ), которые я пытаюсь показать в диаграмме типа линии, используя Vega-lite .
Поля: Я пытаюсь показать 2 строки на графике Vega-lite для следующих полей.
- workdays_lead_time
- workdays_cycle_time
В Кибане, если я go до http://my-elk-server:5601/app/kibana#/dev_tools/console?_g=()
url, и если я введу следующее в разделе Console
, я увижу действительный результат справа (окно вывода):
GET someindex/_search
{
"size": 10000,
"_source": [
"sprint_number",
"sprint",
"workdays_lead_time",
"workdays_cycle_time"
]
}
Это похоже на то, что я получаю в окне вывода консоли, как вы можете видеть, hits.hits
содержит / дает мне поля _source
, которые Я помещаю в консоль раздел.
{
"took" : 13,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 475,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "someindex",
"_type" : "_doc",
"_id" : "gAnUZnEBzzVgIgK9eKV2",
"_score" : 1.0,
"_source" : {
"sprint_number" : "0",
"sprint" : "Bot Fighters - JIRA",
"workdays_lead_time" : "5",
"workdays_cycle_time" : "3"
}
},
{
"_index" : "someindex",
"_type" : "_doc",
"_id" : "gAnUZnEBzzVgIgK9eKV2",
"_score" : 1.0,
"_source" : {
"sprint_number" : "1",
"sprint" : "Avengers - JIRA",
"workdays_lead_time" : "4",
"workdays_cycle_time" : "2"
}
},
...
......
...... similar data chunks lines here.
......
...
]
}
}
Поскольку поле / ключ в индексе ES имеет значение workdays_lead_time
и workdays_cycle_time
(а не как значение в некоторых столбцах, например type_of_time
), я думаю, что единственные примеры графиков, которые я могу использовать, это либо:
- https://vega.github.io/vega-lite/examples/repeat_layer.html (т.е. линейный график из нескольких серий с оператором повтора) - или -
- https://vega.github.io/vega-lite/examples/line_color_halo.html (т. Е. Многорядная линейная диаграмма с ходом Halo). https://www.youtube.com/watch?v=lQGCipY3th8
Я взял пример удара Гало (как указано выше).
PS: В моем случае я не хочу vega_datasets
( data / somedata.csv ), т. Е. Любые установленные образцы данных где-то или Я хочу определить любые жестко закодированные значения / данные в коде Vega-lite.
Идея состоит в том, чтобы просто выполнить запрос к ES index и показать линии двух вышеуказанных полей (номер цикла / дня) в сгенерированном Vega-Lite графике.
В моем случае мне пришлось изменить следующую строку кода примера с:
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
на
"$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json",
Кроме того, как моя цель состоит в запросе для индекса ES someindex
, я не использую следующие строки (из примера, который ищет файл .csv в некоторой папке данных):
"data": {"url": "data/stocks.csv"},
- раздел
transform
(как указано в примере).
Я изменил эту строку:
"stroke": {"datum": {"repeat": "layer"}, "type": "nominal"}
на следующую (поскольку я не использую какой-либо файл .csv из каких-либо примеров данных).
"stroke": {"field": {"repeat": "layer"}, "type": "nominal"}
Для этого я создал новую визуализацию (тип) Vega и, наконец, определил следующий код для моей диаграммы, НО, это не дает мне никаких строк:
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.6.0.json",
"description": "Multi-series Line Chart with Halo. Use pivot and repeat-layer as a workaround to facet groups of lines and their halo strokes. See https://github.com/vega/vega-lite/issues/6192 for more discussion.",
data: {
url: {
%context%: true
%timefield%: "sprint_end_date"
index: someindex
body: {
size: 10000,
"_source": [
"sprint_number",
"sprint",
"workdays_lead_time",
"workdays_cycle_time"
]
}
},
format: { property: "hits.hits" }
},
"repeat": {
"layer": [ "workdays_lead_time", "workdays_cycle_time" ]
/*
"layer": [ "_source.workdays_lead_time", "_source.workdays_cycle_time" ]
*/
},
"spec": {
"layer": [{
"mark": {"type": "line", "stroke": "white", "strokeWidth": 4},
"encoding": {
"x": {"field": "sprint", "type": "temporal" },
/* Tried this too, even this doesn't show any chart.
"x": {"field": "_source.sprint", "type": "nominal"},
*/
/* Tried this too, even this doesn't show any chart.
"x": {"field": "_source.sprint_number", "type": "quantitative"},
*/
"y": { "aggregate": "max", "field": {"repeat": "layer"}, "type": "quantitative", "title": "Line-WhatIsThis"}
}
},{
"mark": {"type": "line"},
"encoding": {
"x": {"field": "_source.sprint", "type": "temporal"},
"y": { "aggregate": "max", "field": {"repeat": "layer"}, "type": "quantitative", "title": "Some-Lines"},
"stroke": {"aggregate": "max", "field": {"repeat": "layer"}, "type": "nominal"}
}
}]
}
}
Вопросы:
Как я могу исправить этот код, чтобы показать строки. Там нет ошибок (в окне вывода).
Какой график является хорошим выбором для меня. PS: Другие простые линейные диаграммы в примерах Vega-lite, принимают workdays_lead_time
/ workdays_cycle_time
в качестве значений в столбце / поле индекса.
В моем случае эти 2 являются не значениями, а самими столбцами / полями (и содержат значение типа с плавающей запятой - число дней хранения) - очень похоже на пример Halo Stroke (см. Данные CSV здесь: https://vega.github.io/editor/# / examples / vega-lite / line_color_halo и вы увидите, что AAPL, AMZN, GOOG и т. Д. c являются столбцами / полями (а не значением поля)). В моем случае это два поля, которые я пытаюсь показать на графике Vega-lite.