我发现了一个有趣的article,它使用了Vega-Lite上的几个数据模型。与关系数据库中一样,表格数据是按键组合的。
{
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"title": "Test",
"datasets": {
"stores": [
{"cmdb_id1": 1, "group": "type1"},
{"cmdb_id1": 2, "group": "type1"},
{"cmdb_id1": 3, "group": "type2"}
],
"labelsTimelines": [
{"cmdb_id2": 1, "value": 83},
{"cmdb_id2": 2, "value": 53},
{"cmdb_id2": 3, "value": 23}
]
},
"data": {"name": "stores"},
"transform": [
{
"lookup": "cmdb_id1",
"from": {
"data": {"name": "labelsTimelines"},
"key": "cmdb_id2",
"fields": ["value"]
}
}
],
"mark": "bar",
"encoding": {
"y": {"aggregate": "sum", "field": "value", "type": "quantitative"},
"x": {"field": "group", "type": "ordinal"}
}
}出现了一个问题,即是否可以使用该结构获得相同的结果:
"data":{"url":"...."}
已更改Elasticsearch查询的源:
{
"$schema": "https://vega.github.io/schema/vega-lite/v3.json",
"datasets": {
"stores": [{
"url": {
"%context%": "true"
"index": "test_cmdb"
"body": {
"size": 1000,
"_source": ["cmdb_id", "street","group"]
}
}
format: {property: "hits.hits"}
}]}
"data": {
"name": "stores"
},
"encoding": {
"x": {"field": "url.body.size", "type": "ordinal", "title": "X"},
"y": {"field": "url.body.size", "type": "ordinal", "title": "Y"}
},
"layer": [
{
"mark": "rect",
"encoding": {
"tooltip": [
{"field": "url"}]
}
}
]
}我知道有一个语法错误,数据不是来自Elasticsearch。
提前感谢!
发布于 2020-12-08 21:39:06
不能,目前不能在顶级"datasets"中指定URL数据。在Vega-Lite中相关的开放特性请求在这里:https://github.com/vega/vega-lite/issues/4004。
发布于 2021-10-21 15:45:08
你最好使用Vega而不是Vega-lite。在Vega中,您可以使用URL指定任意数量的数据集。例如..。
...
data: [
{
name: dataset_1
url: {
...
}
}
{
name: dataset_2
url: {
...
}
}
]
...这实际上会变得非常有趣,因为这意味着您可以将来自多个索引的数据组合到一个可视化中。
我知道现在有点晚了,但我想这可能会对周围的人有所帮助。
https://stackoverflow.com/questions/65195511
复制相似问题