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

IoTDB 分段查询语句详解:GROUP BY + 时序语义

38f9c6efb847e9cdee6840b59e459c44.jpeg

GROUP BY 查询子句的时序语义展开,IoTDB 支持的分段方式总结!

存储的数据通过分析来发挥价值,当一组被存储的数据通过查询得到分析后的结果时,这些数据才真正在数据库中实现了价值闭环。

在关系型数据库中,GROUP BY 子句是 SQL 语言中用于将结果集按照一个或多个列分组的关键字。它通常与聚合函数一起使用,如 COUNT(), SUM(), AVG(), MIN(), MAX() 等,以便对每个分组的数据进行统计或计算。但由于关系型数据库中的数值没有时间顺序的概念,所以在分组时并不会考虑分组键前后。

如下图所示:基于值列的分组通常以数据是否等值为分组条件,分段方式较为固定。

26764b9f94ba794053abbbc259b57205.png

而时序场景下,比起分组键的列值组合,我们通常更加在意时间维度前后数据的联系。基于时间列分组,可能要求不同大小的滑动窗口等符合时序语义的分段方式。

aeafc21b43ad86d1d37d3eb9587421aa.png

因此 IoTDB 提供了针对基于时间列的新型分段场景,支持用户使用内置简单 SQL 语句快速便捷的对时序数据进行分段,更好的提取时序数据的相关特征,帮助用户更高效的在时序场景下发掘数据价值。

01 方法一:按时间区间分段

作为最基本的时间分段方式,IoTDB 可以支持基本的时间滑动窗口分段。可以指定聚合的时间间隔和滑动步长来定义窗口。其 SQL 主要包含三个参数:

  • [startTime, endTime): 查询的时间范围

  • interval: 单个分段窗口的大小

  • sliding step: 窗口的滑动步长

GROUP BY ([startTime, endTime), size, step)

下图展示了这三个参数的含义:

4fff6616789a5ee65b0be89666383e43.png

02 方法二:按数据差值分段

传统的分段方式可以对相同的值进行分段,在时序语义下,由于数据可以保证按时间顺序到来,我们可以将值的变化规律作为分段的依据。

在 IoTDB 的差值分段中,我们将第一条数据作为一个时间段的基准,每个分段会按照给定表达式与基准数值行进行差值运算,如果差值小于给定的阈值则加入当前时间段;如果超过给定阈值,则分为下一个时间段。

下图解释了该分段方式:

4493aea84ca7bc3d867da9b4e6b2c9e6.jpeg

其 SQL 与不同的参数含义如下:

GROUP BY VARIATION(controlExpression[,delta][,ignoreNull=true/false])
  • controlExpression:分组所参照的值,可以是数据行中的某一列或是多列的表达式

  • delta:分组所使用的阈值,默认为 0

  • ignoreNull:用于指定 controlExpression 计算结果为 null 时对数据的处理方式,ignoreNull 为 true 时,则直接跳过对应的点,否则创建新的时间段。

03 方法三:按会话间隔分段

在实际场景,即使是有序的时间列,可能也并不连续。而这些时间列之间的时间间隔便可以作为分段的依据,会话分段可以将时间间隔超过一定阈值的数据切割为不同时间段。如下所示:

4e9b8d93b697362c95139bf7b3915e3f.jpeg

GROUP BY SESSION(timeInterval)

04 方法四:按数据点数分段

在一些场景中,我们会在时序语义下基于连续的时间点数做分段,将连续的指定数量数据点分为一组。如下所示:

39d157597ed4800a61fec9a32fa13f25.jpeg

GROUP BY COUNT(controlExpression,size[,ignoreNull=true/false])

05 方法五:按符合条件的数据点数分段

对于顺序到来的数据,我们还可以指定条件表达式来对数据行进行筛选。将符合条件的连续数据点加入时间段,如下图,将数值为 True 的数据点每三个分为一段,其分段示意图和 SQL 定义如下:

681fb7e9e9d7d007090d0b4398a24da1.jpeg

GROUP BY CONDITION(predictExpression[keep >/>=/=/<=/<]threshold[,ignoreNull=true/false])
  • predictExpression:返回值为 boolean 数据类型的表达式,用于数据行的筛选

  • keep:行数满足 keep 的表达式的数据行会被加入到时间段中

  • ignoreNull:predictExpression 为 null 时数据行的处理方式,为 true 跳过该行,否则创建新的时间段

06 总结

本文为大家详细介绍了当前 IoTDB 中具备时序特色语义的分段方式,不同于关系型数据库的传统关系代数(针对无序集合的算子),上述分段方式均利用了时序数据天然有序的语义,大家可以通过这些便捷的语法实现自身业务的查询需求。除了这些分段方式之外,IoTDB 本身提供了一个通用的分段框架,欢迎感兴趣的朋友参与 IoTDB 社区,贡献多样的分段实现。

规上企业应用实例

能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|太极股份|绍兴安瑞思

航天航空:中航机载共性|北邮一号卫星

钢铁冶炼:宝武钢铁|中冶赛迪

交通运输:中车四方|长安汽车|城建智控|德国铁路

智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|京东|昆仑数据|怡养科技

3e8266eed7ed659a57628485d08999d5.gif

ce2a548677ced4ee530458d9741c7bf1.jpeg

9e6fd08184c33050840083e6b6eed5f2.jpeg

1697a465c28888235fb8dd57f8c7dbdb.jpeg

e4f2d677943ed82b0f748ccd7162fee2.gif

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • oracle 11G long类型如何转换 CLOB
  • VUE3【实用教程】(2024最新版)
  • PyTorch构建一个肺部CT图像分类模型来分辨肺癌
  • 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel
  • 生成式AI未来趋势预测
  • 系统架构设计师①:计算机组成与体系结构
  • 【数据结构】堆的实现以及建堆算法和堆排序
  • Unity UGUI 之 图集
  • 【精品资料】数据安全治理解决方案(27页PPT)
  • Electron 和 React 开发桌面应用程序
  • CPU与IO设备交互
  • 什么是服务器带宽
  • vue+watermark-dom实现页面水印效果
  • ESP32CAM人工智能教学15
  • React中Hooks几个有用的 ref
  • (三)从jvm层面了解线程的启动和停止
  • 345-反转字符串中的元音字母
  • axios 和 cookie 的那些事
  • ESLint简单操作
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 一些 DOM 的知识点
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Nacos系列:Nacos的Java SDK使用
  • pdf文件如何在线转换为jpg图片
  • React16时代,该用什么姿势写 React ?
  • Swift 中的尾递归和蹦床
  • tab.js分享及浏览器兼容性问题汇总
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Webpack 4x 之路 ( 四 )
  • 编写符合Python风格的对象
  • 程序员最讨厌的9句话,你可有补充?
  • 分享一份非常强势的Android面试题
  • 计算机在识别图像时“看到”了什么?
  • 以太坊客户端Geth命令参数详解
  • C# - 为值类型重定义相等性
  • 带你开发类似Pokemon Go的AR游戏
  • #QT(TCP网络编程-服务端)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C#)获取字符编码的类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (MATLAB)第五章-矩阵运算
  • (论文阅读30/100)Convolutional Pose Machines
  • (十三)Flask之特殊装饰器详解
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)ObjectiveC 深浅拷贝学习
  • (转)四层和七层负载均衡的区别
  • .apk文件,IIS不支持下载解决
  • .gitignore文件使用
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端