python读取influxdb中数据

示例代码一:从infludb中获取指定时间段time和value值,并作图保存

from influxdb_client import InfluxDBClient
import matplotlib.pyplot as plt

# InfluxDB连接信息
url = "http://localhost:8086"
token = "your_token"
org = "your_org"
bucket = "your_bucket"

# 创建InfluxDB客户端
client = InfluxDBClient(url=url, token=token, org=org)

# 查询数据
query = f'from(bucket: "{bucket}") |> range(start: -10m)'
result = client.query_api().query(query)

# 提取time和value
time = []
value = []
for table in result:
    for record in table.records:
        time.append(record.get_time().timestamp() % 600)  # 将time转换为以秒为单位,取模600,record.get_time().timestamp()获取时间戳
        value.append(record.values["_value"])

# 绘制图表
plt.plot(time, value)
plt.xlabel('Time (s)')
plt.ylabel('Value')
plt.title('InfluxDB Data')
plt.savefig('influxdb_data.png')
plt.show()

示例代码二:从infludb中获取指定时间段最大值、最小值、平均值等信息

from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS
from influxdb_client import query_api
from datetime import datetime

token = "your_influxdb_token"
org = "your_influxdb_organization"
bucket = "your_influxdb_bucket"
url = "your_influxdb_url"

client = InfluxDBClient(url=url, token=token, org=org)

query = f'from(bucket:"{bucket}") |> range(start: 2022-01-01T00:00:00Z, stop: 2022-01-02T00:00:00Z) |> filter(fn: (r) => r._measurement == "measurement_name") |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)'

result = client.query_api().query(org=org, query=query)

mean_value = result[0].records[0].values['_value']
max_value = max([record.values['_value'] for record in result[0].records])
min_value = min([record.values['_value'] for record in result[0].records])

print("平均值:", mean_value)
print("最大值:", max_value)
print("最小值:", min_value)

aggregateWindow是InfluxDB的查询函数之一,用于在时间窗口内对数据进行聚合计算。它的基本语法如下:

aggregateWindow(every: duration, fn: aggregateFunction, createEmpty: boolean)
参数说明:
- `every`:指定时间窗口的持续时间,可以使用InfluxDB的持续时间字符串表示,例如"1h"表示1小时,"10m"表示10分钟。
- `fn`:指定聚合函数,可以是以下之一:
  - `count`:计算数据点的数量。
  - `sum`:计算数据点的总和。
  - `mean`:计算数据点的平均值。
  - `median`:计算数据点的中位数。
  - `min`:计算数据点的最小值。
  - `max`:计算数据点的最大值。
  - `mode`:计算数据点的众数。
  - `stddev`:计算数据点的标准差。
  - `first`:获取时间窗口内的第一个数据点。
  - `last`:获取时间窗口内的最后一个数据点。
- `createEmpty`:指定是否在时间窗口内没有数据点时创建空数据点,可选值为`true`或`false`。

在上面的代码示例中,`aggregateWindow`函数被用于计算时间窗口内数据的平均值。根据示例中的查询语句,时间窗口的持续时间为1小时,聚合函数为`mean`,并且在时间窗口内没有数据点时不创建空数据点。

你可以根据自己的需求选择不同的聚合函数和时间窗口的持续时间来实现不同的聚合计算。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值