【问题标题】:Vega : Add missing information in dataVega:在数据中添加缺失的信息
【发布时间】:2018-08-01 09:28:06
【问题描述】:


在 kibana 中,在 Vega-lite 可视化中,我想随时间创建应用程序 (AAAA) 的转换状态图。 ( 时间线 )
状态有固定值 ( init , start , running ... )

在 x 轴上是时间戳,
在州一级,
用于跟踪状态级别的矩形或条形。

|====
| ======
| =============
_____________________________
t0      t1      t2 ....

我的数据来自 ElasticSearch 中的查询,格式如下。

timestamp  app  state
  t0    AAAA  Init
  t1    AAAA  start
  t2    AAAA  Running
  t3    AAAA  stopped

在 vega 中,我想用条形或矩形来表示状态, 例如:初始化状态将由一个从 t0 开始到 t1 结束的矩形表示。但我没有这个信息! t1 在下一个数据行

是否可以通过利用下一行来计算这个值。 数据会是这样。

timestamp  app  state    ends 
  t0    AAAA  Init         t1
  t1    AAAA  start        t2 
  t2    AAAA  Running      t3
  t3    AAAA  stopped      t4 


欢迎任何帮助。

【问题讨论】:

  • t4 从何而来?是与表中下一个应用的 Init 步骤相关联的时间吗?

标签: elasticsearch kibana vega-lite


【解决方案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"
}

【讨论】:

  • 我无法根据我的上下文调整这个示例。 Timestamp 不是直接值,而是像这样的时间数据:@timestamp: "2016-04-05T15:21:06.494Z" ...我想我也必须对其进行转换,不是吗?
  • 如果您使用"type": "temporal" 而不是"type": "quantitative" 作为时间戳数据,它应该可以正常工作。
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2013-02-15
  • 2022-07-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多