vega-lite 中的成功率计算(Kibana 可视化)

Success rate calculation in vega-lite (Kibana Visualization)

我正在努力创建一个热图来显示 Vega-lite 中的成功率。我的数据类似于下面。

[
   {
      "_id":"1",
      "@timestamp":"2022-02-20 11:15:16",
      "transaction_datetime":"2022-02-20 11:15:16",
      "type_a_partner":Partner1,
      "type_b_partner":Partner2,
      "status":"Success"
   },
   {
      "_id":"2",
      "@timestamp":"2022-02-20 11:16:16",
      "transaction_datetime":"2022-02-20 11:16:16",
      "type_a_partner":Partner1,
      "type_b_partner":Partner2,
      "status":"Failed"
       }
]

成功率计算为: ((status="成功的记录数")/(记录数))*100

我曾尝试创建多个转换,但似乎无法正常工作。目前,我正在尝试使用以下代码。

{
  $schema: https: //vega.github.io/schema/vega-lite/v2.json
  "width": "container",
  "height": 400,
  data: {
    url: {
      %context%: true
      %timefield%: transaction_datetime
        %timefilter%: "min"
        %timefilter%: "max"
      index: index1
      body: {
         size: 10000,
        _source: [
                "@timestamp",
                "transaction_datetime"
                "type_b_partner"
                "type_a_partner"
                "status"
                "_id"
            ]
        }
    },
    format: { property: "hits.hits" },
  },  
  transform: [
        { calculate: "datum._source['status']" as: "status"},
        { calculate: "datum._source['type_b_partner']" as: "type_b_partner"},
        { calculate: "datum._source['type_a_partner']" as: "type_a_partner"},
        { calculate: "datum._source['_id']" as: "id"},
        { "filter":  "datum._source['status']=='Success'"},
        {
      "aggregate": [
        {"op": "count", "as": "SuccessTxns"}
      ],
      "groupby": ["type_a_partner","type_b_partner"]
        }
    ],  
  mark:"bar",
  "width": {"step": 17},
  encoding: {
    x: { field: "type_a_partner"},
    y: { field: "type_b_partner"}, 
    "color": {"field": "SuccessTxns", type:"quantitative"},
    tooltip : [
    {field : "type_b_partner",type:"nominal"}
    {field : "type_a_partner",type:"nominal"}
    {field : "SuccessTxns", type:"quantitative"}
    ]
    }
  "layer": [{
    "mark": "bar"
  }, {
    "mark": {
      "type": "text",
      "align": "left",
      "baseline": "middle",
      "dx": -9
    },
    "encoding": {
      "text": {field: "SuccessTxns", type: "quantitative"}
    }
  }]

  
  
  
}

我能够提取成功交易计数 (SuccessTxns),但无法使用转换为“总交易”创建字段。

视觉效果是这样的。 Sample visualization

注意:附上示例热图视觉仅用于可视化需求。每个方块将显示成功率

如果我在构建 objective 时犯了任何逻辑错误或无法正确设置上下文,请原谅。如果您对问题陈述有任何疑问,请告诉我。

此致,

已解决。下面是解决方法。

transform: [
        { calculate: "datum._source['status']" as: "status"},
        { calculate: "datum._source['type_a_partner']" as: "type_a_partner"},
        { calculate: "datum._source['type_b_partner']" as: "type_b_partner"},
        { calculate: "datum._source['_id']" as: "id"},
        {"calculate": "datum.status === 'Success' ? 1 : 0", "as": "SC"},
        {
      "aggregate": [
        {"op": "count", "as": "TotalCount"},
        {"op": "sum","field": "SC","as": "SuccessCount"}
      ],
      "groupby": ["type_b_partner","type_a_partner"]
        },
        {"calculate": "datum.SuccessCount / datum.TotalCount * 100","as": "Rate"}
    ]