VEGA GRAPH - Получи лучший хит с фильтром - PullRequest
1 голос
/ 23 октября 2019

У меня есть этот индекс

Время ST ID
0 1 12: 04
1 1 12: 00
0 2 12: 02
1 2 11: 58
0 2 11: 22 * ​​1008 * 1 3 12: 33
0 3 12: 20

Я пытаюсь получить график, который может отображать верхнее попадание (последний документ проиндексирован вэластично для каждого идентификатора), когда ST = 0, чтобы получить результаты как

ST ID время
0 1 12: 04
0 2 12: 02

Как вы могливидите, у ID = 3 самый высокий удар с ST = 1, поэтому он не должен отображаться в таблице

Может ли кто-нибудь помочь мне с этим?

BR

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

<body>  Hi Jakevdp, first thing is nice to meet u! :D

I'm trying to do this in Kibana, with Vega Graph, the problem now is to change this code

"transform": [
    {
      "aggregate": [
        {"op": "max", "field": "time", "as": "time"},
        {"op": "argmax", "field": "time", "as": "argmax"}
      ],
      "groupby": ["ID"]
    },
    {"filter": "datum.argmax.ST == 0"}
  ],

To insert it in Kibana-Vega Graph to attack Elastic, is this possible?
</body>
0 голосов
/ 23 октября 2019

В Vega-Lite вы можете использовать агрегатное преобразование с последующим преобразованием фильтра. Например:

{
  "data": {
    "values": [
      {"ST": 0, "ID": 1, "time": "12:04"},
      {"ST": 1, "ID": 1, "time": "12:00"},
      {"ST": 0, "ID": 2, "time": "12:02"},
      {"ST": 1, "ID": 2, "time": "11:58"},
      {"ST": 0, "ID": 2, "time": "11:22"},
      {"ST": 1, "ID": 3, "time": "12:33"},
      {"ST": 0, "ID": 3, "time": "12:20"}
    ],
    "format": {"parse": {"time": "date:'%H:%M'"}}
  },
  "transform": [
    {
      "aggregate": [
        {"op": "max", "field": "time", "as": "time"},
        {"op": "argmax", "field": "time", "as": "argmax"}
      ],
      "groupby": ["ID"]
    },
    {"filter": "datum.argmax.ST == 0"}
  ],
  "mark": "point",
  "encoding": {
    "y": {"type": "ordinal", "field": "ID"},
    "x": {"type": "temporal", "field": "time"}
  }
}

enter image description here

...