json 如何在Vega中从偏移量创建新的日期?

5ktev3wc  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(87)

我想使用包含秒的字段和使用时间的字段创建一个新的日期字段。
我已尝试添加附加字段{calculate: "toDate(datum._source['TimeStamp']-datum._source['Metric'])", as: "time2"}
我想将Y相对于时间绘制为蓝点,将Y相对于时间2绘制为红点。当我包括时间2表达式并对其进行绘制时,图形返回为空,没有错误。我知道我需要做一些事情,包括转换可以减去的日期或度量。
例如:“时间戳”:2019年7月1日,09:16:44.000“公制”:0.3〈秒

$schema: https://vega.github.io/schema/vega-lite/v2.json
  data: {
    url: {
      %context%: true
      %timefield%: TimeStamp
      index: a.index*
      body: {
        size: 10000
        _source: ["@timestamp", "TimeStamp", "Metric", "TxnType","Y"]
      }
    }
    format: {property: "hits.hits"}
  }
  transform: [
    {calculate: "toDate(datum._source['TimeStamp'])", as: "time"},
    {"filter": "datum._source['Y'] > 0"},
    {"filter": "datum._source['TxnType'] == 'Type'"}

  ]

  mark: circle
  encoding: {
    x: {field: "time", type: "temporal",
    }
    y: {field: "_source.Y", type: "quantitative", "scale": {"type": "log"}}
  }
}```

字符串

xienkqul

xienkqul1#

从Vega 5.8开始,您可以在表达式中使用timeOffset()函数。
来自https://vega.github.io/vega/docs/expressions/#timeOffset
timeOffset(unit, date[, step]) ≥ 5.8
返回一个新的Date示例,该示例按本地时区中的指定时间单位偏移给定日期。可选step参数指示要偏移的时间单位步长数(默认值为1)。
假设字段TimeStamp是一个时间点,应该从该时间点减去偏移量Metric(以秒为单位),则可以使用

"transform": [
  {
    "calculate": "timeOffset('seconds', datum.TimeStamp, -datum.Metric)",
    "as": "time"
  }
]

如果这不起作用,请确保datum.TimeStamp是一个日期对象。

"data": {
  ...,
  "format": {"parse": {"TimeStamp": "date"}}
}

相关问题