查找时,Vega-lite图表失败,聚合合并到变换中

时间:2020-03-11 15:43:00

标签: vega-lite

为什么同时使用Lookup转换和Aggregate转换的Vega-lite代码无法显示图表?这是一个小示例,可以为我在项目中尝试做的事情建模。

{
  "data": {    
          "values": [ 
            {"group": 1, "person": "Alan"},
            {"group": 1, "person": "George"},
            {"group": 1, "person": "Fred"},
            {"group": 2, "person": "Steve"},
            {"group": 2, "person": "Nick"},
            {"group": 2, "person": "Will"},
            {"group": 2, "person": "Cole"},
            {"group": 3, "person": "Rick"},
            {"group": 3, "person": "Tom"}
          ]},
  "transform": [
    {
      "lookup": "person",
      "from": {
        "data": {    
          "values": [
              {"name": "Alan", "_source": { "age": 10, "category": 5}},
              {"name": "Tom", "_source": { "age": 7, "category": 10}}
          ]},
        "key": "name",
        "fields": ["_source.age", "_source.category"]
      }
    },
    {"aggregate": 
      [{"op": "sum", "field": "_source.age", "as": "totalage"}], 
      "groupby": ["totalage", "_source.category"]}
  ],
  "mark": "bar",
  "encoding": {
    "x": {"field": "_source.category", "type": "ordinal"},
    "y": {"field": "totalage", "type": "quantitative"}
  }
}

但是,这种使用Lookup转换但不使用Aggregate转换的Vega-lite代码成功显示了图表吗?

{
  "data": {    
          "values": [ 
            {"group": 1, "person": "Alan"},
            {"group": 1, "person": "George"},
            {"group": 1, "person": "Fred"},
            {"group": 2, "person": "Steve"},
            {"group": 2, "person": "Nick"},
            {"group": 2, "person": "Will"},
            {"group": 2, "person": "Cole"},
            {"group": 3, "person": "Rick"},
            {"group": 3, "person": "Tom"}
          ]},
  "transform": [
    {
      "lookup": "person",
      "from": {
        "data": {    
          "values": [
              {"name": "Alan", "_source": { "age": 10, "category": 5}},
              {"name": "Tom", "_source": { "age": 7, "category": 10}}
          ]},
        "key": "name",
        "fields": ["_source.age", "_source.category"]
      }
    }
  ],
  "mark": "bar",
  "encoding": {
    "x": {"field": "_source.category", "type": "ordinal"},
    "y": {"field": "_source.age", "aggregate": "sum", "type": "quantitative"}
  }
}

1 个答案:

答案 0 :(得分:1)

groupby中的复合字段未正确转义(我相信这是vega-lite中的错误)。解决方法是,您可以手动对其进行转义,即替换

"groupby": ["_source.category"]

使用

"groupby": ["_source\\.category"]

我已在vega/vega-lite#6606上报告了此错误