在Vega中引用子桶的语法

时间:2018-06-13 20:36:45

标签: elasticsearch kibana vega

我有一个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 undefinedVEGA_DEBUG.view.data表示某些aggregations.per_buyer.buckets有一个“per_cart”对象,而该对象又有桶。 (过滤以便所有存储桶都具有per_cart对象不会改变任何内容。)

我之前在Elastic forums上没有成功地问过这个问题。

1 个答案:

答案 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之前,“扁平化”变换可能不可用。