Vega:从源数据中提取两个不同的属性

Vega: extract two different properties from source data

我正在尝试使用 Vega 可视化来自 elasticsearch 的查询结果。

来自 elasticsearch 的实际响应将类似于下面第一个数据条目中的内容,名为 "es_response"。我需要将该响应数据拆分为两个不同的数据,我将其命名为 histogram_datarule_data

我尝试使用format: { property: "..." }提取每个子数据中的值(如下所示),但语言不允许这样做。

我也尝试过使用各种转换组合来分离数据,但没有得到任何好的结果。

最好的方法是什么?

Link to the original vega-lite source

  "data": [
    {
      "name": "es_response",
      "values": {
        "aggregations": {
          "histogram": [
            {"a": 30, "b": 28},
            {"a": 40, "b": 55},
            {"a": 50, "b": 43},
            {"a": 60, "b": 91},
            {"a": 70, "b": 81},
            {"a": 80, "b": 53},
            {"a": 90, "b": 19},
            {"a": 100, "b": 87},
            {"a": 110, "b": 52}
          ],
          "percentiles": {
            "values": [
              {
                "key": 50,
                "value": 100
              }
            ]
          }
        }
      }
    },
    {
      "name": "histogram_data",
      "source": "es_response",
       
      /*
       * This doesn't work, but I really wish it did
       */
      "format": { "property": "aggregations.histogram"}
    },
    {
      "name": "percentile_data",
      "source": "es_response",
 
      /*
       * Same here
       */
      "format": { "property": "aggregations.percentiles.values"}
    }
  ]

视情况而定。 :) 您要通过 url 使用 elasticsearch 查询吗?

然后您可以创建两个命名数据条目并使用 json ˋformatˋ 选项指定根。

或者,如果您希望数据是内联的,您可以使用 ˋdatasetˋ 属性。

更多解释可以在这里找到: https://vega.github.io/vega-lite/docs/data.html

这是 Vega-Lite 中的一个错误,目前已在 https://github.com/vega/vega-lite/issues/5034 进行跟踪。