我有一个Elasticsearch(6.2)查询,它返回以下JSON:
"aggregations": {
"per_buyer": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Example-buyer",
"doc_count": 45,
"per_cart": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 6,
"buckets": [
{
"key": "397105FB",
"doc_count": 8,
"net": {
"value": 10
} } ] } } ] } }
vega“format”字段显示每个“per_cart”存储区数据的正确语法是什么?比aggregations.per_buyer.buckets
更深的任何内容都会返回错误_.aggregations.per_buyer.buckets.per_cart is undefined
。 VEGA_DEBUG.view.data
表示某些aggregations.per_buyer.buckets
有一个“per_cart”对象,而该对象又有桶。 (过滤以便所有存储桶都具有per_cart对象不会改变任何内容。)
我之前在Elastic forums上没有成功地问过这个问题。
答案 0 :(得分:0)
抱歉,在论坛上错过了请求。在这里交叉发布我的答案:
@Steven_Ensslen您的format
必须为aggregations.per_buyer.buckets
,仅因为这是您需要的数据列表。该存储桶中的每个数据元素可能包含存储桶的子列表,您必须从Vega本身访问这些子列表。现在,如果子列表始终只有一个存储分区(例如,如果您要对每个主存储分区的总数进行汇总),则可以直接从标记中访问它,例如datum.per_cart.buckets[0].net.value
,也可以创建一个公式转换,将该值复制到顶级字段中,例如{type:'formula', as:'net_value', expr: 'datum.per_cart.buckets[0].net.value'}
,并在标记中使用net_value
字段。另一方面,如果子列表中有多个项目,则可以使用flatten
转换将子存储桶展平为非分层项目列表,然后使用各种转换来获取数据转换成您需要的格式。
P.S。在6.3或6.4之前,“扁平化”变换可能不可用。