【问题标题】:Returning a single minimum date value from a key across multiple objects with jq使用 jq 从跨多个对象的键返回单个最小日期值
【发布时间】:2015-01-08 20:23:14
【问题描述】:

我有一组对象如下,我试图从所有对象中获取一个日期值。

想要的输出是:

"2014-12-16T08:59:08.000+0100"

数据集是:

[
  {
    "key": "AB-12345",
    "type": "Fault",
    "typeid": "19",
    "status": "Open",
    "summary": "I'm a big bad fault",
    "closedDate": null,
    "flag": null
  },
  {
    "key": "AB-12346",
    "type": "Bug",
    "typeid": "19",
    "status": "Open",
    "summary": "I'm a big bad bug",
    "closedDate": "2014-12-16T08:59:08.000+0100",
    "flag": null
  },
  {
    "key": "AB-12347",
    "type": "Feature",
    "typeid": "19",
    "status": "Open",
    "summary": "I'm a big bad feature",
    "closedDate": "2014-12-17T08:27:07.000+0100",
    "flag": null
  }
 ]

我已经设法使用:

.[] | {"closedDate": .closedDate} | select(.closedDate > 0)

这会得到我:

{
  "closedDate": "2014-12-16T08:59:08.000+0100"
}
{
  "closedDate": "2014-12-17T08:27:07.000+0100"
}

但我想不出使用selectmax_bymin_by 来实现此目的的方法。

我在 jq 1.4

【问题讨论】:

    标签: jq


    【解决方案1】:

    将每个条目映射到closedDate,过滤掉非值,然后得到最小值。

    map(.closedDate | values) | min
    

    【讨论】:

    • 假设值都在 GMT 的同一侧;例如2014-12-17T08:27:07.000-0200 会破坏它
    • @HansZ。考虑到数据来自同一来源,数据不太可能没有标准化。如果不是,它应该是但不是我们关心的问题。
    • 我只是为了完整性而添加。来源可能已经从不同位置收集了这些数据而没有对其进行标准化,那么这将是一个问题。我想我是说jq 应该支持处理时间戳。
    • @HansZ。尽管我在 jq github 上的某处看到了类似的功能请求,但不存在处理时间戳的功能。至于来源,时间戳都来自同一个地方,所以不需要归一化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2020-03-06
    • 2021-05-29
    相关资源
    最近更新 更多