azure - 将多行合并为具有百分比贡献的单行
问题描述
我有一个表,其中包含节点 ID、操作名称和给定类型的失败次数。我想通过添加一个提供相对操作失败百分比的新列来折叠具有相同 ID 的节点。具体来说,这是表格的样子
let nodeFailures = datatable(nodeId:string, OpName:string, failureCount:long)
[
"A", "DemoOp1", 2000,
"A", "DemoOp2", 4000,
"A", "DemoOp3", 4000,
"B", "DemoOp1", 4500,
"B", "DemoOp4", 4500
];
我想把它折叠成 2 行 - 像
nodeFailuresSummarized = datatable(nodeId:string, failureCount:long, analysis: string)
[
"A", 10000, "DemoOp1(20%), DemoOp2(40%), DemoOp3(40%)",
"B", 9000, "DemoOp1(50%), DemoOp4(50%)"
];
我一直在玩summary 和 percentile*() 聚合的游戏,但运气不佳.. 在这里将不胜感激.. 非常感谢!
解决方案
let nodeFailures = datatable(nodeId:string, OpName:string, failureCount:long)
[
"A", "DemoOp1", 2000,
"A", "DemoOp2", 4000,
"A", "DemoOp3", 4000,
"B", "DemoOp1", 4500,
"B", "DemoOp4", 4500
];
let totalFailures = toscalar(nodeFailures | summarize sum(failureCount));
nodeFailures
| extend Percent = round(failureCount * 100.0 / totalFailures, 2)
| summarize sum(failureCount), List = make_list(strcat(OpName, " (", Percent, "%)")) by nodeId
| extend List = strcat_array(List, ", ")
输出将是:
| nodeId | sum_failureCount | List|
| A | 10000 | DemoOp1 (10.53%), DemoOp2 (21.05%), DemoOp3 (21.05%)|
| B | 9000 | DemoOp1 (23.68%), DemoOp4 (23.68%)
|
推荐阅读
- docker - 如何在已启动的 VM 上通过云功能执行“docker run”?
- sql - SQL 过程按参数值分组
- ruby-on-rails - Rails 在事务单元测试回滚后运行代码
- python - 在 python 中,如何用熊猫替换特征空间模块?
- php - Prometheus:导出自定义 php 指标未显示在普罗米修斯中
- amazon-web-services - 如何检查我的 EC2 实例是否可突增?(AWS)
- r - 将 sf 转换为标记的 ppp
- go - 如何在每天的特定时间运行作业?
- c++ - 如何在 C++ 中正确使用并行化以使代码更快?
- spring - Spring WebClient 将动态请求正文作为 JSON 传递