时序数据库IoTDB数据导入与查询功能详解

1. 引言

本文将详细介绍 Apache IoTDB 如何实现数据的导入和查询功能,包括自动导入 CSV 格式数据、使用 SQL 语句写入数据以及基本查询和聚合查询等。

2. 数据导入

2.1 IoTDB 架构简介

以实际工业应用场景为例,我们提供了一个测试用的 CSV 格式数据表格,该表格记录了某集团高山风机的轮毂温度数据。

2.2 CSV 导入时间序列和值

Apache IoTDB 提供了 CSV 工具,可以将 CSV 格式的数据导入数据库中。具体步骤如下:

  1. 启动 IoTDB server。
  2. 进入 tools 目录,执行以下命令(以 Linux 和 Mac 系统为例):
bash 复制代码
import-csv.sh -h <ip> -p <port> -u <username> -pw <password> -f <xxx.csv> [-fd <./failedDirectory>]
  • -f 指定要导入的数据文件。
  • -fd 指定保存失败文件的目录(可选)。

2.3 SQL 写入序列和值

除了导入 CSV 数据,还可以使用 SQL 语句创建和写入时间序列数据。

2.3.1 创建单条时间序列
sql 复制代码
create timeseries root.BHSFC.Q1.W003.speed FLOAT encoding=RLE
2.3.2 写入数据
sql 复制代码
insert into root.BHSFC.Q1.W003(timestamp, speed) values(1657468800000, 1)
2.3.3 创建多条时间序列
sql 复制代码
insert into root.ln1.wf01(time, status, temperature) aligned values(1657468800000, 0, 1)

3. 数据基本查询

3.1 使用 select from 语句查询

3.1.1 查询单个时间序列的数据
sql 复制代码
select WROT_HubTmp from root.BHSFC.Q1.W002
3.1.2 查询多个时间序列的数据
sql 复制代码
select * from root.BHSFC.** limit 10
3.1.3 查询最新数据
sql 复制代码
select last WROT_HubTmp from root.BHSFC.Q1.W002

3.2 使用 where 语句查询

3.2.1 时间过滤查询
sql 复制代码
select WROT_HubTmp from root.BHSFC.Q1.W002 where time < 2022-01-12
3.2.2 查询时间范围内的最新数据
sql 复制代码
select last WROT_HubTmp from root.BHSFC.Q1.W002 where time >= 2022-1-14T00:00:00
3.2.3 值过滤查询
sql 复制代码
select WROT_HubTmp from root.BHSFC.Q1.W002 where WROT_HubTmp > 20

4. 数据聚合查询

4.1 查询时间序列行数

4.1.1 查询单条时间序列行数
sql 复制代码
select count(WROT_HubTmp) from root.BHSFC.Q1.W002
4.1.2 查询多条时间序列行数
sql 复制代码
select count(*) from root.**

4.2 IoTDB 内置聚合函数功能

4.2.1 单层聚合查询
  • 查询最大值:
sql 复制代码
select MAX_VALUE(*) from root.BHSFC.Q1.W002
  • 查询平均值:
sql 复制代码
select AVG(*) from root.BHSFC.Q1.W002
4.2.2 聚合查询+时间过滤
sql 复制代码
select count(*) from root.BHSFC.Q1.W002 where time > 2022-01-13T00:00:00
4.2.3 分层聚合查询
sql 复制代码
select count(*) from root.** group by level = 2
4.2.4 分段聚合查询
  • 按天分段查询平均值:
sql 复制代码
select AVG(*) from root.BHSFC.Q1.W002 group by ([2022-1-14T00:00:00,2022-1-15T00:00:00),1d)
4.2.5 降采样查询
  • 查询每天的最高风速:
sql 复制代码
select max_value (*) from root.BHSFC.Q1.W002 group by ([2022-1-11T00:00:00,2022-1-15T00:00:00),1d)

4.3 控制填充

4.3.1 前值填充
sql 复制代码
select WROT_HubTmp from root.BHSFC.Q1.W002 where time = 2022-01-16T00:00:00 fill(previous)
4.3.2 线性填充
sql 复制代码
select avg(*) from root.BHSFC.Q1.W002 group by ([2022-1-11T00:00:00,2022-1-15T00:00:00),6h,12h) fill (linear)
4.3.3 特定值填充
sql 复制代码
select WROT_HubTmp from root.BHSFC.Q1.W002 where time = 2022-01-16T00:00:00 fill(15)

5. 结语

通过本文,我们详细了解了 Apache IoTDB 的数据导入和查询功能,包括如何导入 CSV 数据、使用 SQL 语句写入和查询数据,以及如何进行聚合查询和控制空值填充。这些功能为时间序列数据的处理提供了强大的支持。

相关推荐
计算机毕设VX:Fegn089524 分钟前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冉冰学姐1 小时前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
面向Google编程1 小时前
Flink源码阅读:JobManager的HA机制
大数据·flink
Tony Bai1 小时前
【分布式系统】03 复制(上):“权威中心”的秩序 —— 主从架构、一致性与权衡
大数据·数据库·分布式·架构
wb043072012 小时前
SQL工坊不只是一个ORM框架
数据库·sql
至善迎风2 小时前
Redis完全指南:从诞生到实战
数据库·redis·缓存
汽车仪器仪表相关领域3 小时前
全自动化精准检测,赋能高效年检——NHD-6108全自动远、近光检测仪项目实战分享
大数据·人工智能·功能测试·算法·安全·自动化·压力测试
大厂技术总监下海3 小时前
根治LLM胡说八道!用 Elasticsearch 构建 RAG,给你一个“有据可查”的AI
大数据·elasticsearch·开源
星浩AI3 小时前
Google 官方发布:让你的 AI 编程助手"边写、边看、边调",像人类开发者一样工作
人工智能·后端·开源
QQ_4376643144 小时前
Redis协议与异步方式
数据库·redis·bootstrap