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"}
]
我正在努力创建一个热图来显示 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"}
]