InfluxDB-InfluxQL基础语法教程--数据说明与基础SELECT语句

点击查看:

Nginx+Grafana+Prometheus+Jmeter搭建可视化测试监控平台 (包括InfluxDB)

1、官方测试数据导入

InfluxDB - 官方测试数据导入

继上一篇分享的内容:

官方文档地址:

https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/

2、数据说明

下面是本次演示的示例数据
表名:h2o_feet
数据示例:

数据描述 :
表h2o_feet中所存储的是6分钟时间区间内的数据。

  1. 该表有一个tag,即location,该tag有两个值,分别为coyote_creek 和santa_monica,使用如下方式可以查询:

  2. 该表有两个fields,分别为level description和water_level,其中level description存储的是string类型的值,而water_level存储的是float类型的值。查询方式如下:

3、基本select语句

语法如下:

SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]

select语句是由SELECT子句和FROM子句组成的。

3.1 SELECT子句

在SELECT字句中,有如下几种形式,分别用于查询各种指定的数据:

语法意思
SELECT *查询measurement中所有的fields和 tags。示例sql:select * from h2o_feet;
SELECT "<field_key>"查询指定的一个field。示例sql:select water_level from h2o_feet;
SELECT "<field_key>","<field_key>"查询多个field。示例sql:select "level description", "water_level" from h2o_feet;
SELECT "<field_key>","<tag_key>"查询指定的field和tag。示例sql:select water_level,location from h2o_feet; 注:在SELECT子句中,如果包含了tag,那么此时就必须指定至少一个field。比如如下的sql就是错误的,因为它只select了一个tag,而没有field:select location from h2o_feet;
SELECT "<field_key>"::field,"<tag_key>"::tag跟上面一样,也是查询指定的field和tag。::[field | tag]语法用来指定标识符的类型,因为有时候tag和field有可能同名,因此用 ::[field | tag]语法来加以区分。

在SELECT子句中,还包含数学运算、聚合函数、基本的类型转换、正则表达式等。



3.2 FROM子句

FROM子句用于指定要查询的measurement,支持的语法如下:

语法意思
FROM <measurement_name>从指定measurement中查询数据。这种方式会从当前DB、默认retention policy的measurement中查询数据。
FROM <measurement_name>,<measurement_name>从多个measurement中查询数据
FROM <database_name>.<retention_policy_name>.<measurement_name>从指定DB、指定retention policy的measurement中查询数据
FROM <database_name>..<measurement_name>从指定DB、默认retention policy的measurement 中查询数据

FROM子句中还支持正则表达式。

https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/#regular-expressions

3.3 关于引号

如果measurement、tag、field等的标识符除了[A-z,0-9,_]之外,还有其他字符,或者标识符是keyword关键字,那么在引用的时候必须加上双引号。比如在表 h2o_feet 中,"level description"就是一个带有空格的field,如此一来在查询到的时候,就必须加上双引号了。如下图,在查询level description时若不加双引号,则会报错。

官方推荐,虽然有些标识符不是必须使用双引号,但是推荐对所有标识符使用双引号!



3.4 示例sql
  1. 从单个measurement中查询该measurement所有的tag和field

  2. 从单个measurement中查询指定的tag和field

  3. 从单个measurement中查询指定的tag和field,并指定它们的标识类型

    这种方式一般使用较少。

  4. 从measurement中查询所有的field

    The SELECT clause supports combining the * syntax with the :: syntax.

  5. 在查询时进行基本的数学运算

    InfluxDB遵循标准的四则运算规则。更多操作详见Mathematical Operators。

  6. 同时从多个measurement中查询它们的所有数据

  7. 从一个全路径的measurement中查询数据

    可见,所谓的全路径,其实就是指在FROM子句中,指定了measurement所在的DB,以及要查询数据所在的retention policy。

  8. 查询指定数据库中的measurement的数据

    查询选择NOAA_water_database中的数据,DEFAULT的保留策略,和h2o_feet表,... 是指定数据库的DEFAULT保留策略。


    The query selects data in the NOAA_water_database, the DEFAULT retention policy, and the h2o_feet measurement. The .. indicates the DEFAULT retention policy for the specified database.


3.5 关于SELECT语句的常见疑问

在SELECT 子句中,必须要有至少一个field key!如果在SELECT子句中只有一个或多个tag key,那么该查询会返回空。这是由InfluxDB底层存储数据的方式所导致的结果。
示例:

上面的查询结果返回为空,是因为在它的SELECT子句中,只查询了location这个tag key。
如果想要查询跟location这个tag key有关的任何数据,则在SELECT字句中必须至少要包含一个field key,如下:

送书活动:

留言+分享赠书
免费赠送技术类图书,无套路,纯免费!

《TensorFlow深度学习实战大全》
(活动码003)
点击下方小程序查看图书内容详情

第001期送书活动:
《Python自动化测试实战》

第002期送书活动:

《Python网络爬虫开发从入门到精通》

点击查看

技术人的简历这样写,才不直男!

再见,刘强东!


文章合集

Selenium | Appium | Jenkins | Jmeter 

软件测试方法汇总 | Postman接口参数化 | 测试用例设计

视频教程

Selenium  |  Appium | Jenkins | Jmeter

AWS与Docker

如何使用AWS EC2+Docker+JMeter构建分布式负载测试基础架构
Docker容器数据持久化和容器网桥连接
Docker删除image和container
Docker与VM虚拟机的区别以及Docker的特点

JMeter分布式压测环境搭建

END

觉得不错,可以点“在看”,或者转发留言

精彩的内容要和朋友分享

<think>好的,用户之前问过关于免费机床数据采集的内容,现在又接着问InfluxDB + Grafana,看来他们可能正在考虑实施数据采集系统,特别是在监控和可视化方面。我需要先回顾一下之前给出的信息,确保这次的回答连贯。 用户可能已经了解了InfluxDB和Grafana作为免费工具组合的一部分,现在想要更详细的介绍。他们可能是中小企业的技术人员,或者是对工业物联网感兴趣的个人开发者,预算有限但希望实现有效的数据监控。 需要明确InfluxDB和Grafana各自的角色,以及它们如何协同工作。用户可能关心如何安装配置,有没有具体的应用案例,尤其是在机床数据采集中的实际应用。同时,他们可能想知道这个组合的优势和可能的局限性,比如是否容易上手,社区支持如何。 要确保回答结构清晰,分点介绍,突出技术特点、使用场景和步骤。可能还需要提到常见问题,比如数据存储优化或可视化技巧,帮助他们避免常见陷阱。此外,结合之前的机床数据采集内容,给出实际例子会更有帮助,比如如何用这两个工具监控机床的振动或温度数据。 检查是否需要补充一些资源链接或社区支持信息,方便用户进一步学习。同时,提醒他们注意数据安全和协议兼容性,这些在之前的回答中也提到过,保持一致性。最后,保持语言简洁,避免技术术语过于复杂,确保用户能够理解并实际应用。</think>--- ### **InfluxDB + Grafana 介绍** InfluxDB 是一款开源的时序数据库,专为**高频率时间序列数据**(如传感器读数、设备状态)设计;Grafana 是开源的可视化工具,支持多数据源联动分析。二者结合广泛用于工业监控、物联网等场景。 --- #### **1. 核心功能特点** | **组件** | **核心功能** | **优势** | |------------|-----------------------------------------------------------------------------|--------------------------------------------------------------------------| | **InfluxDB** | - 存储时序数据(时间戳、数值、标签)<br>- 支持高效写入查询<br>- 提供类SQL查询语言(Flux/InfluxQL) | - 高性能读写(每秒百万级数据点)<br>- 数据压缩率高<br>- 支持连续聚合(downsampling) | | **Grafana** | - 数据可视化(图表、仪表盘)<br>-数据源整合(InfluxDB、MySQL、Prometheus等)<br>- 告警通知配置 | - 丰富的图表类型(折线图、热力图等)<br>- 灵活定制界面<br>- 支持团队协作权限管理 | --- #### **2. 机床数据采集中的应用** ##### **典型场景** - **实时监控**:采集主轴转速($n = \frac{1000V_c}{\pi D}$)、温度、能耗等数据,生成动态看板。 - **历史分析**:存储长期数据,分析设备利用率(例如 $OEE$ 计算)。 - **异常检测**:设置阈值告警(如振动值超过 $5\text{mm/s}$ 触发通知)。 ##### **数据流示例** 1. **采集层**:通过 Modbus/TCP 或 OPC UA 从机床控制器读取数据。 2. **存储层**:数据写入 InfluxDB,按时间戳和标签(如设备ID、参数类型)组织。 3. **可视化层**:Grafana 连接 InfluxDB,创建实时仪表盘(如转速趋势图)。 --- #### **3. 部署配置步骤** 1. **安装 InfluxDB** - 下载地址:[InfluxDB官网](https://www.influxdata.com/) - 配置数据存储策略(如保留周期 `RETENTION POLICY`)。 2. **安装 Grafana** - 下载地址:[Grafana官网](https://grafana.com/) - 添加 InfluxDB 数据源(需填写IP、端口、数据库名)。 3. **数据写入示例**(Python脚本) ```python from influxdb_client import InfluxDBClient client = InfluxDBClient(url="http://localhost:8086", token="your_token") write_api = client.write_api() data = "machine_data,device=CNC-01 rpm=3000,temp=45.2" write_api.write(bucket="factory", record=data) ``` 4. **创建仪表盘** - 在 Grafana 中新建面板,选择 InfluxDB 数据源,编写查询语句(如 `SELECT mean("temp") FROM "machine_data"`)。 --- #### **4. 优势局限** | **优势** | **局限** | |-----------------------------------|---------------------------------------| | 完全免费开源,社区活跃 | 大规模数据需优化存储策略(分片、集群) | | 低延迟实时展示(<1秒) | 复杂查询需学习 Flux/InfluxQL 语法 | | 支持工业协议插件(如MQTT、Modbus) | 告警功能较基础(需配合其他工具如Alertmanager) | --- #### **5. 实际案例参考** - **机床振动监控**: - 采集振动传感器数据(单位:$m/s^2$),存储至 InfluxDB- 在 Grafana 中设置阈值告警,触发时发送邮件或 Slack 通知。 - **能耗分析**: - 统计多台机床的每日能耗(公式:$E = P \cdot t$),生成对比柱状图。 --- #### **6. 学习资源推荐** - **官方文档**:[InfluxDB文档](https://docs.influxdata.com/)、[Grafana文档](https://grafana.com/docs/) - **社区教程**:GitHub 开源项目(如 `telegraf-influxdb-grafana` 模板)。 通过 InfluxDB + Grafana,用户可快速构建低成本、高灵活性的数据监控系统,尤其适合机床数据采集的初期探索中小规模部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软测小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值