influxdb常用sql总结

influxdb,常用,sql,总结 · 浏览次数 : 224

小编点评

**InfluxDB 数据操作指南** **1. 连接数据库** ```bash influxdbinflux -username admin -password "password" ``` **2. 查看数据库** ```bash # 显示所有数据库 show databases # 显示当前数据库名称 use database_name ``` **3. 查看表和表结构** ```bash # 显示所有数据库表 show measurements # 显示指定表结构 show field keys from measurement_name ``` **4. 建表并添加数据** ```sql # 创建名为 sensor_data 的表,并将数据写入其中 INSERT sensor_data,location=home,device_id=sensor001 temperature=25,humidity=50 ``` **5. 更新数据** ```sql # 更新 sensor_data 测量中 temperature 字段的值为 26 INSERT sensor_data,location=home,device_id=sensor001 temperature=26,humidity=50 ``` **6. 删除表和数据** ```sql # 删除名为 measurement_name 的表 DROP MEASUREMENT measurement_name # 删除数据满足条件的记录 DELETE FROM sensor_data WHERE location='home' AND device_id='sensor001' ``` **7. 分组查询** ```sql # 按 location 和 device_id 分组数据 SELECT SUM(&temperature) FROM sensor_data GROUP BY location, device_id # 按时间范围分组数据 SELECT time(&created_at) AS time, COUNT(*) AS count FROM sensor_data GROUP BY time ``` **8. 创建时间窗口** ```sql # 按 1 小时的时间窗口对 temperature 值进行分组 SELECT time(&created_at) AS time, temperature FROM sensor_data GROUP BY time WITH interval 1h ``` **9. 查看标签值** ```sql # 获取所有 tag 的值 SHOW TAG VALUES FROM measurement WITH KEY = "location" WHERE time > now() - 1h # 获取指定时间点的 tag 值 SELECT <tag_key> FROM measurement WHERE time > now() - 1h ``` **10. 聚合函数** ```sql # 计算每个分组的平均温度值 SELECT MEAN(&temperature) FROM sensor_data WHERE time > now() - 1h GROUP BY time # 计算每个分组的标准差 SELECT STDDEV(&temperature) FROM sensor_data WHERE time > now() - 1h GROUP BY time ``` **11. 按时间排序** ```sql # 按时间降序排序所有数据 SELECT * FROM sensor_data ORDER BY time DESC # 按时间升序排序所有数据 SELECT * FROM sensor_data ORDER BY time ASC ``` **12. 处理空数据** ```sql # 使用 fill() 函数给空值赋予 0 值 SELECT fill(0, "field_key") FROM sensor_data WHERE field_key IS NULL # 使用 fill() 函数给空值赋予特定值 SELECT fill("other_value", "field_key") FROM sensor_data WHERE field_key IS NULL ```

正文

本文为博主原创,转载请注明出处:

  1.登录influxdb

influx -username admin -password "password"

  2.查看数据库

##查看有哪些数据库
show databases;

##选中数据库
use database_name;

  3.查看表及表结构

##查看所有数据库表
show measurements;

##查看measurement_name有哪些 fields
show field keys from  measurement_name

##查看measurement_name有哪些tag
show tag keys from  measurement_name

  4.建表并新增数据

  InfluxDB 使用写入操作来自动创建表。当你向新的测量写入数据时,如果该测量不存在,则会自动创建一个新表。

insert <tbname>,<tags> <values> [timestamp]

  在insert执行语句中,tag与tag、field与field之间用","进行分割,

  tag与field之间用空格分割 tag的value都是String类型,不需要加双引号

   field的String类型数据,需要放在双引号中,否则会报错

  如果需要显示添加时间戳,在filed后添加空格,再添加时间戳

INSERT sensor_data,location=home,device_id=sensor001 temperature=25,humidity=50

  上述写入操作将自动创建一个名为 sensor_data 的表,并将数据写入其中。

  5.更新数据

  在 InfluxDB 中,数据是不可变的,因此不能直接更新已有的数据点。如果要更改数据值,需要执行插入操作,并覆盖具有相同时间戳的数据。

  假设要更新 sensor_data 测量中 temperature 字段的值为 26,可以执行以下操作:

INSERT sensor_data,location=home,device_id=sensor001 temperature=26,humidity=50

  6.删除表与数据:

DROP MEASUREMENT measurement_name

  根据过滤条件删除数据:  

DELETE FROM sensor_data WHERE location='home' AND device_id='sensor001'

  7.group by

  在 InfluxDB 中,group by 只能用于对 tag 相关的字段进行分组,而不能对 field 字段进行分组。这是因为在 InfluxDB 的数据模型中,tag 是用来标识和过滤数据的元数据,而 field 则是实际存储数据的值。

  在查询语句中,将 GROUP BY 关键字与适当的 tag 键名结合使用,以指定要分组的标签。

SELECT <aggregate_function>(<field_key>) FROM <measurement_name> GROUP BY <tag_key>

  示例:

                         

  8.时间窗口

  结合 time() 函数以及指定的时间范围,可以在分组查询中创建时间窗口。例如:

GROUP BY time(<interval>)

  其中 <interval> 可以是秒、分钟、小时等单位: interval 可以直接使用时间缩写:如 1d == 1天, 1h == 1小时, 5m = 5分钟, 10s == 10秒,

  9.查看tag得字段有哪些值

  不可以使用distinct函数,distinct 函数可以对field生效,但对tag查询会失效

SHOW TAG VALUES FROM measurement WITH KEY = "location" WHERE time > now() - 1h

  10.聚合函数

  在进行分组查询时,需要使用适当的聚合函数(如 mean()sum()count() 等)对 field 进行计算。这样可以根据每个分组计算出相应的结果。

##最大值
SELECT SUM(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

##平均值
SELECT MEAN(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

##返回一个字段(field)的唯一值
SELECT DISTINCT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

##返回一个(field)字段中的非空值的数量
SELECT COUNT(<field_key>) FROM <measurement_name> [WHERE <stuff>] [GROUP BY <stuff>]

  11.排序 order by time desc

  influxdb 排序只能用于time 进行排序:升序:order by time asc,降序 order by time desc 

select * from tableName order by time asc

  12. FILL 数据空处理

  空数据处理 fill(),相当于mysql的IFNULL的作用,但不能指定字段

  给空数据赋予某个值,如下,给是空值的赋予0(可以赋予其它值,如-1、2),只能位于sql所有条件之后

select * from tableName fill(0)

 

与influxdb常用sql总结相似的内容:

influxdb常用sql总结

本文为博主原创,转载请注明出处: 1.登录influxdb influx -username admin -password "password" 2.查看数据库 ##查看有哪些数据库 show databases; ##选中数据库 use database_name; 3.查看表及表结构 ##查看

influxdb 端点使用http进行sql查询,写数据

转载请注明出处: InfluxDB有以下几个常用的端点,它们的作用和传参方式如下: 1./ping 端点: 作用:用于检查InfluxDB实例的状态,返回InfluxDB的构建类型和版本信息。 传参:无需传参,仅发送GET请求即可。 调用示例: curl http://localhost:8086/

[转帖]grafana 连接 influxdb 1.x 和 2.x

文章目录 一、安装 influxdbⅠ、docker 安装 二、常用操作Ⅰ、influxdb 1.x版本添加用户认证Ⅱ、influxdb 2.x 使用命令行Ⅲ、CLI 配置tokenⅤ、CLI 查询测试 三、grafana 安装使用Ⅱ、docker 安装 grafana 四、grafana 连接 i

nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

转载请注明出处: 1.Eggjs 特性: Eggjs 是 Node.js 服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是 Egg.js 的一些特性和作用: 框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。 Egg.js 遵

influxdb得导出与导入

转载请注明出处: 1、备份元数据 基本语法: influxd backup 备份元数据,没有任何其他参数,备份将只转移当前状态的系统元数据到path-to-backup。path-to-backup为备份保存的目录,不存在会自动创建。 该备份会备份所有数据库以及所有

[转帖]Influxdb 2.x 快速入门

Influxdb 2.x 快速入门 https://www.jianshu.com/p/268fca65f10e Influxdb是由Golang 构建的时序数据库,由于由Go语言构建使得其跨平台部署相对方便。用户只需下载其可执行文件到相应系统执行即可。 核心概念 示例数据(解释某些概念用) _ti

[转帖]【InfluxDB V2.0】介绍与使用,flux查询、数据可视化

目录 一、关键概念 二、系统结构 三、配置文件 四、Flux查询语句 五、可视化数据 附录 一、关键概念 相比V1 移除了database 和 RP,增加了bucket。 V2具有以下几个概念: timestamp、field key、field value、field set、tag key、ta

[转帖]influxdb 2.0.3 tar.gz的安装与配置

下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.0.3_linux_amd64.tar.gz 安装influxdb ### 解压 [root@jyzbdb2 soft]# tar -zxf influxdb2-2.0.3_li

influxdb 中得 fields 与 tag 区别总结

本位为博主原创,转载请注明出处: 1.Field与Tag说明 在 InfluxDB 表结构中,field 和 tag 是用于存储数据的两种不同类型。 Field(字段): Field 用于存储实际的数值数据,例如温度、湿度等测量值。 Field 是可变的,可以随时间的推移而改变其值。 Field 的

influxdb 保留策略

转载请注明出处: InfluxDB 中的保留策略用于定义时间序列数据在数据库中的保留期限。保留策略决定了数据在 InfluxDB 中的存储持续时间和精度。以下是 InfluxDB 的保留策略类型以及如何设置和查看它们的详细说明: 保留策略类型: 默认保留策略(Default Retention Po