kibana - 如何在 vega 中访问嵌套的 json
问题描述
我在 kibana 中使用 vega。我尝试访问嵌套的 json 字段,但我无法访问该字段,谁能帮我解决这个问题。我附上了我的 vega json,索引名称是 pie
索引数据样本:
{“_index”:“pie”,“_type”:“flare”,“_id”:“2”,“_version”:1,“_score”:1,“_source”:{“id”: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"}
}
}
}
]
}
解决方案
这个问题已在https://github.com/vega/vega/issues/1371中得到解答
你已经"format": { "property": "hits.hits" }
在你的数据变量中定义了一个,我在你的数据中没有看到。即使是这样,在我的理解property
中也不接受双重嵌套参数(例如。varx.vary
),但为此我可能是错的。
接下来,您transform
在单个data
规范中有两个定义。
{
"$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"}
}
}
}
]
}
推荐阅读
- swift - 如何以编程方式设置控制图像视图宽度的滑块
- oracle - 如何从oracle数据库中提取数据并保存在谷歌云平台
- firebase - 为 Google Analytics(分析)网络 + 应用程序属性安排电子邮件报告
- django - 位置参数缺少“状态”
- java - 如何让 Spring Tools Suite 识别 spring 注释
- mongodb - Mongo DB中基于光标的分页,其中跳过或限制未知
- laravel - 如何在 plesk 服务器上处理 SQLSTATE[HY000] [1045] 错误?
- javascript - 使用 HTML、CSS 和 JS 的侧边栏中的多级下拉菜单
- elixir - 模块执行时如何将当前上下文带入模块中?
- linux - 如何检查文件是否来自 tmpfs 内存缓存或磁盘缓存