【问题标题】:How to access nested json in vega如何在 vega 中访问嵌套的 json
【发布时间】:2018-12-27 11:41:21
【问题描述】:

我在 kibana 中使用 vega。我尝试访问嵌套的 json 字段,但我无法访问该字段,谁能帮我解决这个问题。我附上了我的 vega json,索引名称是 pie

索引数据样本:

{ "_index": "饼图", "_type": "耀斑", “_id”:“2”, “_版本”:1, “_score”:1, “_资源”: { “身份证”:2, “父母”:1, “数据” :{ “记忆”:50 } } }

{
 "$schema": "https://vega.github.io/schema/vega/v3.json",
 "data": [
{
  "name": "table",
  "url": {

  "%context%": "true",

  "index": "pie*",

  "body": {

    "size": "10000"


  }
},

"format": { "property": "hits.hits" },

"transform": [
    {
      "type": "formula",
      "expr": "toNumber(datum[\"_source\"][\"data\"][\"memory\"])",
      "as": "memory"
    }
          ],
  "transform": [{"type": "pie", "field": "memory"}]
  }  ],

      "scales": [
      {
  "name": "r",
  "type": "sqrt",
      "domain": {"data": "table", "field": "memory"},
  "zero": true,
  "range": [20, 100]
  }
     ],

  "marks": [
{
  "type": "arc",
  "from": {"data": "table"},
  "encode": {
    "enter": {
      "x": {"field": {"group": "width"}, "mult": 0.5},
      "y": {"field": {"group": "height"}, "mult": 0.5},
      "startAngle": {"field": "startAngle"},
      "endAngle": {"field": "endAngle"},
      "innerRadius": {"value": 20},
      "outerRadius": {"scale": "r", "field": "memory"},
      "stroke": {"value": "#fff"}
    },
    "update": {
      "fill": {"value": "#ccc"}
    },
    "hover": {
      "fill": {"value": "skyblue"}
    }
  }
       },

    {
  "type": "text",
  "from": {"data": "table"},
  "encode": {
    "enter": {
      "x": {"field": {"group": "width"}, "mult": 0.5},
      "y": {"field": {"group": "height"}, "mult": 0.5},
      "radius": {"scale": "r", "field": "memory", "offset": 8},
      "theta": {"signal": "(datum.startAngle + datum.endAngle)/2"},
      "fill": {"value": "#000"},
      "align": {"value": "center"},
      "baseline": {"value": "middle"},
      "text": {"field": "memory"}
    }
  }
}
  ]   
    }

【问题讨论】:

    标签: kibana vega


    【解决方案1】:

    这个问题已经在https://github.com/vega/vega/issues/1371回答了

    您在数据变量中定义了"format": { "property": "hits.hits" },我在您的数据中没有看到。 即使是这样,在我的理解中property 不接受双重嵌套参数(例如varx.vary),但我可能错了。

    接下来,您在单个 data 规范中有两个 transform 定义。

    改变这个,给我:

    {
      "$schema": "https://vega.github.io/schema/vega/v4.json",
      "data": [
        {
          "name": "table",
          "values": [
            {
              "_index": "pie",
              "_type": "flare",
              "_id": "2",
              "_version": 1,
              "_score": 1,
              "_source": {"id": 2, "parent": 1, "data": {"memory": 50}}
            }
          ],
          "transform": [
            {
              "type": "formula",
              "expr": "toNumber(datum[\"_source\"][\"data\"][\"memory\"])",
              "as": "memory"
            },
            {"type": "pie", "field": "memory"}
          ]
        }
      ],
      "scales": [
        {
          "name": "r",
          "type": "sqrt",
          "domain": {"data": "table", "field": "memory"},
          "zero": true,
          "range": [20, 100]
        }
      ],
      "marks": [
        {
          "type": "arc",
          "from": {"data": "table"},
          "encode": {
            "enter": {
              "x": {"field": {"group": "width"}, "mult": 0.5},
              "y": {"field": {"group": "height"}, "mult": 0.5},
              "startAngle": {"field": "startAngle"},
              "endAngle": {"field": "endAngle"},
              "innerRadius": {"value": 20},
              "outerRadius": {"scale": "r", "field": "memory"},
              "stroke": {"value": "#fff"}
            },
            "update": {"fill": {"value": "#ccc"}},
            "hover": {"fill": {"value": "skyblue"}}
          }
        },
        {
          "type": "text",
          "from": {"data": "table"},
          "encode": {
            "enter": {
              "x": {"field": {"group": "width"}, "mult": 0.5},
              "y": {"field": {"group": "height"}, "mult": 0.5},
              "radius": {"scale": "r", "field": "memory", "offset": 8},
              "theta": {"signal": "(datum.startAngle + datum.endAngle)/2"},
              "fill": {"value": "#000"},
              "align": {"value": "center"},
              "baseline": {"value": "middle"},
              "text": {"field": "memory"}
            }
          }
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 2014-07-06
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多