1. median 函数说明
[TOC]
1.1. 文档说明
用于描述block
statistics
中用于统计的函数median
的使用说明以及实现逻辑
1.2. 修订记录
日期 | 文档版本 | 增加/修订内容 | 程序版本要求 |
---|---|---|---|
2021-07-13 | R1 | 第一次添加文档说明 | >= 6.1.0 |
1.3. 函数解释
median
函数用于统计周期
内的中位数
中位数的统计按照以下逻辑进行
- 将统计周期内的一组数据按照从小到大进行排序,将非数字类型的值剔除掉
- 如果数组长度是奇数个,直接查找中间位置的值并返回
- 如果数组长度是偶数个,则取出中间位置的两个数值做平均数运算
简单举例
1 2 3 4 5 6 -> (3 + 4) / 2 = 3.5 1 2 3 4 5 -> 3 1 3 2 4 5 -> 3 1 3 a 4 5 -> (3 + 4) / 2 = 3.5 a a a a a -> 没有输出
1.3.1. 数据来源
数据来源全部来自统计对代理的订阅
1.3.2. 数据约束
- 必须是
数字(包含浮点和整数)类型
,例如{"S01":1.234}
如果要统计非数字类型,会尝试强制转换为数字类型,转换失败,则当前数据包丢弃,不做统计
举例说明
脚本
{ "schedule": { "spec": "0 */1 * * * *" }, "key":"S01", "func":"median", "result":{ "precision":1 } }
数据样本
- 值为数字的字符串类型
time value --- ---- 2021-07-13T09:00:00 {"S01":"1"} 2021-07-13T09:00:01 {"S01":"2"} 2021-07-13T09:00:02 {"S01":"3"} 2021-07-13T09:00:03 {"S01":"4"} ... ... 2021-07-13T09:00:59 {"S01":"59"}
统计周期范围
2021-07-13T09:00:00
到2021-07-13T10:00:00
的integral
值为 30- 数字类型
time value --- ---- 2021-07-13T09:00:00 {"S01":1} 2021-07-13T09:00:01 {"S01":2} 2021-07-13T09:00:02 {"S01":3} 2021-07-13T09:00:03 {"S01":4} ... ... 2021-07-13T09:00:59 {"S01":59}
统计周期范围
2021-07-13T09:00:00
到2021-07-13T10:00:00
的integral
值为 30- 值为非数字的字符串类型
time value --- ---- 2021-07-13T09:00:00 {"S01":"a"} 2021-07-13T09:01:00 {"S01":"b"} 2021-07-13T09:02:00 {"S01":"c"} 2021-07-13T09:03:00 {"S01":"d"} 2021-07-13T09:04:00 {"S01":"e"} ... ... 2021-07-13T09:59:59 {"S01":"f"}
统计周期范围
2021-07-13T09:00:00
到2021-07-13T10:00:00
内没有结果输出- 数字类型、值为数字的字符串类型、值为非数字的字符串类型的组合
time value --- ---- 2021-07-13T09:00:00 {"S01":"a"} 2021-07-13T09:01:00 {"S01":"1"} 2021-07-13T09:02:00 {"S01":"c"} 2021-07-13T09:03:00 {"S01":"d"} 2021-07-13T09:04:00 {"S01":9} ... ... 2021-07-13T09:59:59 {"S01":"10"}
统计周期范围
2021-07-13T09:00:00
到2021-07-13T10:00:00
的median
值为 9