elasticsearch - 在从 Vega(在 Kibana 中)到 ElasticSearch 的聚合查询中使用动态变量
问题描述
我们有一个报告,它从弹性搜索中获取数据并将它们显示为存储桶。我们想显示每个波段的波段、客户和利润金额。这个想法是我们应该给出一个带大小参数,然后 Vega 应该在查询数据时为此创建 5 个桶。如果我提到带大小为 50,那么 vega 将在查询中传递它并创建存储桶 0-50、51 到 100、101 到 150、151 到 200 和 200+。我真的很挣扎,无法让它发挥作用。我在这里粘贴了使用硬编码值的 vega 脚本,但是当涉及到通过信号进行操作时,我根本没有任何线索。我想使用信号中的值来定义波段参数。请帮忙。
{
"$schema":"https://vega.github.io/schema/vega/v4.json",
"data":[
{
"name":"SalesData",
"url":{
"index":"orderaggregates",
"body":{
"size":0,
"aggs":{
"bands":{
"range":{
"field":"total_sales",
"ranges":[
{
"from":0,
"to":50
},
{
"from":50.01,
"to":100
},
{
"from":100.01,
"to":150
},
{
"from":150.01,
"to":200
},
{
"from":200.01
}
]
},
"aggs":{
"total_sales":{
"sum":{
"field":"total_sales"
}
},
"customers":{
"cardinality":{
"field":"user_id"
}
},
"confirmed_orders":{
"sum":{
"field":"confirmedorders"
}
},
"cost_total":{
"sum":{
"field":"cost_total"
}
},
"shipping_collected":{
"sum":{
"field":"freightcollected"
}
},
"shipping_paid":{
"sum":{
"field":"freight_paid"
}
}
}
}
}
}
},
"format":{
"property":"aggregations.bands.buckets"
},
"transform":[
{
"type":"project",
"fields":[
"key",
"doc_count",
"customers.value",
"cost_total.value",
"total_sales.value"
],
"as":[
"range",
"orders",
"customers",
"costs",
"sales"
]
},
{
"type":"identifier",
"as":"id"
},
{
"type":"formula",
"as":"y",
"expr":"datum.id * 30"
},
{
"type":"formula",
"as":"orders",
"expr":"format(datum.orders,',.0f')"
},
{
"type":"formula",
"as":"customers",
"expr":"format(datum.customers,',.0f')"
},
{
"type":"formula",
"as":"costs",
"expr":"format(datum.costs,'$,.0f')"
},
{
"type":"formula",
"as":"sales",
"expr":"format(datum.sales,'$,.0f')"
}
]
}
],
"signals":[
{
"name":"Group",
"value":40,
"bind":{
"input":"range",
"min":10,
"max":100,
"step":10
}
},
{
"name":"GroupSize",
"update":"Group/2"
}
],
"marks":[
{
"from":{
"data":"SalesData"
},
"type":"text",
"encode":{
"enter":{
"fill":{
"value":"#000"
},
"text":{
"field":"range"
},
"x":{
"value":50
},
"y":{
"field":"y"
}
},
"update":{
"opacity":{
"value":1
},
"fontSize":{
"signal":"GroupSize"
}
},
"hover":{
"opacity":{
"value":0.5
}
}
}
},
{
"from":{
"data":"SalesData"
},
"type":"text",
"encode":{
"enter":{
"fill":{
"value":"#000"
},
"text":{
"field":"customers"
},
"x":{
"value":250
},
"y":{
"field":"y"
}
},
"update":{
"opacity":{
"value":1
},
"fontSize":{
"signal":"GroupSize"
}
},
"hover":{
"opacity":{
"value":0.5
}
}
}
},
{
"from":{
"data":"SalesData"
},
"type":"text",
"encode":{
"enter":{
"fill":{
"value":"#000"
},
"text":{
"field":"orders"
},
"x":{
"value":350
},
"y":{
"field":"y"
}
},
"update":{
"opacity":{
"value":1
},
"fontSize":{
"signal":"GroupSize"
}
},
"hover":{
"opacity":{
"value":0.5
}
}
}
},
{
"from":{
"data":"SalesData"
},
"type":"text",
"encode":{
"enter":{
"fill":{
"value":"#000"
},
"text":{
"field":"sales"
},
"x":{
"value":450
},
"y":{
"field":"y"
}
},
"update":{
"opacity":{
"value":1
},
"fontSize":{
"signal":"GroupSize"
}
},
"hover":{
"opacity":{
"value":0.5
}
}
}
}
]
}
解决方案
推荐阅读
- python - 无法在生产中发送电子邮件
- c++ - 将三角形带转换为八角形?
- typescript - 无法读取全局配置字符串
- javascript - 将对象数组显示为不带括号的 html
- r - 从列表中的 data.frames 中删除所有 NA 的行
- jquery - jQuery标签选择不同站点上的不同响应
- android - android.content.res.Resources$NotFoundException:文件 res/drawable-v21/launch_background.xml
- matlab - 在matlab中使用ODE45函数求解不同初始条件值的非线性方程
- python - 如何在不同的文件夹中 rm .xml
- java - 使用 java11 HttpClient.sendAsync() 下载 zip 文件