SignalFx中统计type=ABC的各property指标占比方法问询
统计type=ABC事件中各property的占比问题
问题说明
我有一个带有type和property标签的指标,需要统计type=ABC的事件中各property的占比(按仪表板时间覆盖范围,如过去一天)。当前查询仅返回小数形式的数量,无法得到百分比占比。
当前尝试的查询
A = data('some.request.property', filter=filter('type', 'ABC'), rollup='sum', extrapolation='zero').sum(by=['property']).publish(label='A')
示例数据与期望结果
示例数据共有6个事件,其中5个type=ABC,期望得到各property的百分比占比列表:
40 cat 40 mouse 20 dog
解决方案
要得到百分比占比,需要先计算type=ABC事件的总数量,再用每个property的数量除以总数并乘以100转换为百分比。修改后的查询代码如下:
# 按property分组统计数量 property_counts = data('some.request.property', filter=filter('type', 'ABC'), rollup='sum', extrapolation='zero').sum(by=['property']) # 计算type=ABC事件的总数量 total_count = property_counts.sum() # 计算各property的百分比占比并发布结果 A = (property_counts / total_count * 100).publish(label='A')
逻辑说明
- 第一步:通过
sum(by=['property'])按property分组,得到每个property对应的事件数量 - 第二步:对分组后的结果求和,得到
type=ABC事件的总数量 - 第三步:将每个property的数量除以总数,再乘以100得到百分比数值,最终发布的结果即为各property的占比
内容的提问来源于stack exchange,提问作者S.Dan
相关产品推荐
相关产品推荐

