当前位置: 首页 > news >正文

CnosDB:深入理解时序数据质量函数

在CnosDB中,我们设计并实现了计算数据质量的多个指标,这些指标可以从多个维度评估时序数据的质量,对于时间戳列,我们考虑数据的缺失点、冗余点和延迟点。对于值列,我们考虑数据的异常值、范围、变化、速度和加速度。

CnosDB:深入理解时序数据质量函数

数据质量问题会对数据应用造成巨大影响,严重困扰着信息社会的各个领域。据统计,全球财富1000强公司中超过25%的关键数据存在错误。2009年,戴尔台湾网站将4800元新台币的19寸显示器以500元新台币售出,8小时内下单140万台,造成直接经济损失达60亿新台币。英国一家电话公司因数据错误每年损失6亿英镑。

时序数据的获取、存储、传输和计算过程中均可能产生大量错误,如数据不完整、不一致等。其来源和形式上的多样使得数据有更大的可能产生不一致和冲突,数据的更新也会导致过时和不一致数据迅速产生。特别是在物联网场景中。在时序数据管理过程中,从数据的采集到最终将数据存储到时序数据库中,任何一个传感器故障或网络传输错误等问题都可能导致数据质量问题。在没有事先评估数据质量的情况下对脏数据进行分析可能会产生误导性的结果。

CnosDB 是一个专注于时序数据处理的数据库,旨在解决时序数据存储与分析问题,为用户提供高效的时序数据管理与查询便利。在CnosDB中,我们设计并实现了计算数据质量的多个指标,这些指标可以从多个维度评估时序数据的质量,对于时间戳列,我们考虑数据的缺失点、冗余点和延迟点。对于值列,我们考虑数据的异常值、范围、变化、速度和加速度。在CnosDB中,这些指标能通过聚合函数进行计算,其中包括以下四个函数:

completeness

用途

函数 completeness 用于计算时间序列的完整性,其衡量的是数据不缺失的比例。例如,网站日志的日访问量(即COUNT聚合值)就是一个记录值,若平时的日访问量在1000左右,突然某一天降到100了,就需要检查一下数据是否缺失了。

算法简述

函数 completeness 首先统计数据的行数 cnt ,然后考虑了数据列中可能出现的 NaN 和 Inf 的情况,对其进行线性平滑处理,同时统计上述两种特殊值计数 specialcnt ,再通过扫描数据统计缺失计数 misscnt,则完整性 completeness 的计算公式:1 – \frac{misscnt + specialcnt} {cnt + misscnt}。值为0~1之间的数值,越靠近1表示质量越好,越靠近0表示质量越差。

函数用法

completeness(time, value)

参数

  • time:Timestamp

  • value:BIGINT / BIGINT UNSIGNED / DOUBLE

返回类型

  • DOUBLE

示例

创建表 wzz:

CREATE table wzz(value double);
INSERT wzz VALUES (1,  12.34), (3, 34.54 ), (4, 1.43), (6, 14.03), (10, 12.30), (13, 11.54), (14,  112.20), (16, 14.44), (18,  134.02), (19, 116.34), (22, 1234.45),  (24,10.36), (26, 124.21),  (31, 6.34), (33, acos(12345));

最后一个数据中的 acos(12345) 表示NaN。

SELECT * FROM wzz;

插入数据后,表内数据为:

    +-------------------------------+---------+| time                          | val     |+-------------------------------+---------+| 1970-01-01T00:00:00.000000001 | 12.34   || 1970-01-01T00:00:00.000000003 | 34.54   || 1970-01-01T00:00:00.000000004 | 1.43    || 1970-01-01T00:00:00.000000006 | 14.03   || 1970-01-01T00:00:00.000000010 | 12.3    || 1970-01-01T00:00:00.000000013 | 11.54   || 1970-01-01T00:00:00.000000014 | 112.2   || 1970-01-01T00:00:00.000000016 | 14.44   || 1970-01-01T00:00:00.000000018 | 134.02  || 1970-01-01T00:00:00.000000019 | 116.34  || 1970-01-01T00:00:00.000000022 | 1234.45 || 1970-01-01T00:00:00.000000024 | 10.36   || 1970-01-01T00:00:00.000000026 | 124.21  || 1970-01-01T00:00:00.000000031 | 6.34    || 1970-01-01T00:00:00.000000033 | NaN     |+-------------------------------+---------+

查询时序数据的完整性:

SELECT completeness(time, value) FROM wzz;
    +----------------------------------+| completeness(wzz.time,wzz.value) |+----------------------------------+|  0.8235294117647058              |+----------------------------------+

consistency

用途

函数 consistency 计算时间序列的一致性,其衡量的是时序数据均匀分布的不密集冗余的比例。例如,气象站的冗余温度传感器可能会造成站点的数据重复采集等。

算法简述

同函数 completeness ,经过缺失值填充后,通过扫描数据统计出冗余计数 redundancy ,则一致性 consistency 的计算公式:

1 – \frac{redundancycnt} {cnt}。值为0~1之间的数值,越靠近1表示质量越好,越靠近0表示质量越差。

参数

  • time: Timestamp

  • value: BIGINT / BIGINT UNSIGNED / DOUBLE

返回类型

  • DOUBLE

示例

建立的表即为函数completeness中示例的表wzz。查询时序数据的一致性:

SELECT consistency(time, value) FROM wzz;
    +---------------------------------+| consistency(wzz.time,wzz.value) |+---------------------------------+|  0.8666666666666667             |+---------------------------------+

timeliness

用途

函数 timeliness 用于计算时间序列的时效性,其衡量的是时序数据按时到达不延迟的比例。例如监控数据的时效性场景很多,包括汇聚值报警、查看指标的历史趋势图、实时的数据报表(天/周/季/年的同/环比)、趋势异常检测以及历史数据离线分析等,可以看到,每种场景的查询数据量、数据的分布以及对数据时效性的需求不尽相同,时序数据库需要在这些场景下都能够高效地获取数据。

算法简述

同函数 completeness ,经过缺失值填充后,通过扫描数据统计出延迟计数 latecnt ,则时效性 timeliness 的计算公式:

1 – \frac{latecnt}{cnt}。值为0~1之间的数值,越靠近1表示质量越好,越靠近0表示质量越差。

参数

  • time: Timestamp

  • value: BIGINT / BIGINT UNSIGNED / DOUBLE

返回类型

  • DOUBLE

示例

建立的表即为函数completeness中示例的表wzz。查询时序数据的一致性:

SELECT timeliness(time, value) FROM wzz;
    +--------------------------------+| timeliness(wzz.time,wzz.value) |+--------------------------------+|  0.9333333333333333            |+--------------------------------+

validity

用途

函数validity用于计算时间序列的有效性,其衡量的是数据满足约束条件的比例。例如一地的月平均降水量是负值,这必然是有问题的。

算法简述

首先统计数据的行数 cnt ,然后进行缺失值填充,去除其中的 NaN 和 Inf ,然后通过自定义计算方法得到计数 valuecnt、variationcnt、speedcnt、speedchangecnt ,则有效性 validity 的计算公式:

1 – \frac{0.25 * (valuecnt + variationcnt + speedcnt + speedchangecnt)}{cnt}。值为0~1之间的数值,越靠近1表示质量越好,越靠近0表示质量越差。

参数

  • time: Timestamp

  • value: BIGINT / BIGINT UNSIGNED / DOUBLE

返回类型

  • DOUBLE

示例

建立的表即为函数completeness中示例的表wzz。查询时序数据的有效性:

SELECT validity(time, value) FROM wzz;
    +------------------------------+| validity(wzz.time,wzz.value) |+------------------------------+|  0.8                         |+------------------------------+

CnosDB简介

CnosDB是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的社区网站:https://cn.cnosdb.com

相关文章:

  • MFC GDI 绘图模式、映射模式、画笔、笔、字体
  • 题解:CF859C Pie Rules
  • tcpdump源码分析
  • Python数据分析实验四:数据分析综合应用开发
  • AWS安全性身份和合规性之IAM Identity Center(AWS Single Sign-On)
  • 民国漫画杂志《时代漫画》第13期.PDF
  • AI早班车5.25
  • 【EXCEL_VBA_基础知识】10 使用Dir函数合并多个文件数据
  • python冰雹序列的探索与编程实现
  • Restful API设计与使用:介绍什么是RESTful架构,以及如何在Spring Boot中设计和实现Restful API
  • Mybatis源码剖析---第二讲
  • 【Java面试】一、Redis篇(上)
  • 链表-设计LRU缓存结构
  • uni-app App端实现文字语音播报(Ba-TTS)
  • PTA 6-4 配对问题
  • 收藏网友的 源程序下载网
  • [译]Python中的类属性与实例属性的区别
  • Android交互
  • co模块的前端实现
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES6核心特性
  • fetch 从初识到应用
  • happypack两次报错的问题
  • HTML中设置input等文本框为不可操作
  • interface和setter,getter
  • JavaScript DOM 10 - 滚动
  • JS实现简单的MVC模式开发小游戏
  • PV统计优化设计
  • Python_OOP
  • Python学习笔记 字符串拼接
  • react 代码优化(一) ——事件处理
  • vue 配置sass、scss全局变量
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前端设计模式
  • 提醒我喝水chrome插件开发指南
  • 新版博客前端前瞻
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 2017年360最后一道编程题
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #include
  • #QT 笔记一
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)为C# Windows服务添加安装程序
  • ***监测系统的构建(chkrootkit )
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET 命令行参数包含应用程序路径吗?