标签: influxdb

使用 Influx 和 python 将数据写入数据库

我正在使用 influxdb 尝试'measurements'使用 influxdb v4.0.0 在本地 influxdb 上编写一些内容...

我有点困惑,因为有些地方说你使用 dict 或者你可以使用 json 和/或线路协议......

从这里http://influxdb-python.readthedocs.io/en/latest/examples.html#tutorials-pandas从这里和这里https://github.com/influxdata/influxdb-python/blob/master/influxdb/客户端.py

1st -使用以下命令创建数据库对象:

InfluxDBClient('localhost', database='DBNAME')
Run Code Online (Sandbox Code Playgroud)

第二 -使用数据创建字典:

measurement = {}
measurement['measurement'] = 'energy'
measurement['tags'] = {}
measurement['fields'] = {}
measurement['tags']['MeterID'] = str(meterId)
measurement['fields']['Energy_Wh'] = str(eFrame.getReading())
Run Code Online (Sandbox Code Playgroud)

第三步 -将数据推送到 BD:

try:
    self.db.write(measurement)
except Exception as e:
    print e
Run Code Online (Sandbox Code Playgroud)

该程序可以运行,但没有数据存储在数据库中,而是我的控制台输出如下:

2017-01-11 12:41:09,741 - INFO - Saving Meter: MeterId = 09060178
u'points'
Meter-ID: 09060178 Energy Value (Wh): 10380300
{'fields': {'Energy_Wh': '10380300'}, 'tags': {'MeterID': …
Run Code Online (Sandbox Code Playgroud)

python post json influxdb influxdb-python

1
推荐指数
1
解决办法
2万
查看次数

influxdb查询时如何写case?

我有一个Grafana + InfluxDB + Telegraf设置来监控我组织的服务器。我想制作一个仪表板,在其中监视多个服务器的计算机资源,例如 CPU、RAM 等。我想在 Grafana 仪表板中,如果我的服务器处理器高于 80%,则仅显示“0”;如果服务器处理器低于 80%,则显示“1”。为此,我如何使用CASE WHEN语句根据我设置的阈值显示 0/1。

influxdb grafana telegraf influxql

1
推荐指数
1
解决办法
8677
查看次数

是否可以从 Grafana 的堆积线图中排除一个系列

我家里有很多电表,还有一个全屋电表,所有这些都向 influxdb 报告,我用 grafana 绘制图表。

我想要的是一个图表,其中所有仪表读数与整个房屋仪表分开堆叠,我希望将其显示在同一个图表上但不堆叠。

有人知道这是否可能吗?

graph stacked-chart influxdb grafana

1
推荐指数
1
解决办法
1141
查看次数

Grafana 和 InfluxDB 显示 null 的最新值

我正在学习如何将 Graphana 与 InfluxDB 结合使用。我准备了一个简单的示例,它显示一个图表,其中包含随时间变化的字母出现次数。我使用简单的 InfluxDB 测量,其中包含一个标签letter和一个字段count。为了显示数据,我使用查询:

SELECT mean("count") 
FROM "lettersCount" 
WHERE ("letter" =~ /^$letter$/) AND $timeFilter 
GROUP BY time($interval), "letter"
Run Code Online (Sandbox Code Playgroud)

例如 示例图 但正如您在我的示例中所看到的,该系列中的某些部分有点短(我的示例中的字母“p”),因为当时没有出现该字母。我正在寻找一种在没有测量的情况下显示先前值的方法。

influxdb grafana

1
推荐指数
1
解决办法
2604
查看次数

为什么 Grafana 中的 Flux 查询默认不排序?

Grafana 7.5.1 与 InfluxDB 1.8.2。我正在尝试创建一个表格,显示每个不同标签值的“单位”值之和。我正在获取数据,但默认情况下我需要按降序对总和进行排序。这是我的通量查询:

    from(bucket: "consumption") 
    |> range(start: -1y) 
    |> filter(fn: (r)  => r._measurement == "stuff" and r._field == "units" and r._value > 0) 
    |> group(columns: ["dc","tnt"]) 
    |> sum(column: "_value")
    |> sort(columns: ["_value"], desc: true)
    |> map(fn: (r) => ({r with _value: r._value / 4.0}))
    |> yield()
Run Code Online (Sandbox Code Playgroud)

我还有一个减少转换(计算 --> 总计)和组织字段转换。

但无论我在排序函数中做什么,它都不会改变表中的任何内容。该表始终按标签值(“dc”、“tnt”)的字母顺序排序。我需要它按 _value 降序排序。我究竟做错了什么?

谢谢!

influxdb grafana fluxlang

1
推荐指数
1
解决办法
3451
查看次数

从 timescaledb 切换到 influxdb - 如何组织数据?(许多数据点,每个查询都会通过给定的设备 ID 获取所有数据)

目前我正在使用带有一张表的时间刻度数据库(timestamp、device_id、group_id、data jsonb)。我正在考虑切换到 influxdb 因为它具有扩展的可能性。数据大小:约10M行。

数据架构:

  1. 时间戳(明显)
  2. 设备ID
  3. 组号
  4. 数据 => 2 到 30 个浮点值

按组 ID 分组的所有记录均位于一个设备 ID 下。99% 的情况下,我需要通过设备 ID 或组 ID 以及可选的时间边界来获取所有数据点。无需按给定的 periodid 查询单个测量结果。保留 - 永远(仅根据需要删除)。

对于给定的要求,influxdb 是一个不错的选择吗?如果是这样,如何为此类用例组织存储桶/标签?

事实上,在大多数情况下,我不需要部分和跨设备查询数据,这可能很重要。

postgresql time-series influxdb timescaledb

1
推荐指数
1
解决办法
271
查看次数

存储 2e19 以上的数字

uint256我正在使用 InfluxDB,需要以全精度(无浮点)存储非常大的数字 ( )。

我目前正在使用字符串来实现此目的,但因此我失去了对这些数字执行算术运算的能力,这是我需要实现的。

前任。

{ _measurement=transfer, _field=amount, _value=90000000000000000000001 }
{ _measurement=transfer, _field=amount, _value=12000000000000000000000 }
Run Code Online (Sandbox Code Playgroud)
from(bucket: "xxx")
  |> range(start: 0)
  |> filter(fn: (r) => r._measurement == "transfer" and r._field == "amount")
  |> toUint()
  |> sum()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:runtime error @4:6-4:13: toInt: failed to evaluate map function: cannot convert string "90000000000000000000001" to int due to invalid syntax

是否有像ClickHouse 的 uint256这样的内置解决方案或第三方包来实现此目的?

influxdb

1
推荐指数
1
解决办法
93
查看次数

如何在InfluxDB中克隆完整的数据库

我正在使用Db创建备份测量,如下所示:

SELECT * INTO backdata FROM sourcedata
Run Code Online (Sandbox Code Playgroud)

上面的命令创建了backdata测量.有没有办法克隆完整数据库与所有测量不同的dbname?

influxdb

0
推荐指数
1
解决办法
3416
查看次数

更新与InfluxDB中的条件匹配的多个字段值

在InfluxDB测量中,如何更新与查询匹配的点的字段值?从v1.6开始,这仍然不容易实现吗?

如该GitHub票证中的示例所示,实现这种目标的最干净方法是什么?

UPDATE access_log SET username='something' WHERE mac='xxx'
Run Code Online (Sandbox Code Playgroud)

有什么比通过更新单个点从客户端驱动全部操作更好的方法吗?

sql-update influxdb

0
推荐指数
1
解决办法
7469
查看次数

influxdb 和时间精度

将值写入 influxdb 时遇到一些问题。考虑下面的例子

curl -i -XPOST 'http://localhost:8086/write? db=devmessdaten&precision=rfc3339' --data-binary 'Pist,Anlage="ff4113bc-dec1-435c-9503-c31436dd98b8" value=0 2018-03-21T00:53:00Z'
Run Code Online (Sandbox Code Playgroud)

我得到了错误的时间戳

HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: dfa5b762-3af5-11e8-87d8-000000000000
X-Influxdb-Build: OSS
X-Influxdb-Error: unable to parse 'Pist,Anlage="ff4113bc-dec1-435c-9503-c31436dd98b8" value=0 2018-03-21T00:53:00Z': bad timestamp
X-Influxdb-Version: 1.5.1
X-Request-Id: dfa5b762-3af5-11e8-87d8-000000000000
Date: Sun, 08 Apr 2018 06:27:12 GMT
Content-Length: 127
Run Code Online (Sandbox Code Playgroud)

time influxdb

0
推荐指数
1
解决办法
1335
查看次数

两个 Grafana 面板 singlestat 和具有相同查询的图形之间的区别

我创建了以下 Grafana 仪表板:

在此处输入图片说明singlestat面板使用以下查询:

SELECT sum("value") FROM "rails.pageviews" 
WHERE $timeFilter 
GROUP BY time($__interval) fill(null)
Run Code Online (Sandbox Code Playgroud)

图面板采用了完全相同的查询:

SELECT sum("value") FROM "rails.pageviews" 
WHERE $timeFilter 
GROUP BY time($__interval) fill(null)
Run Code Online (Sandbox Code Playgroud)

如何让单统计面板显示总浏览量?它应该是 12 (8+2+2) 而不是 4,对吧?


当我调试从 Influxdb 返回的数据时:

response:Object
  results:Array[1]
    0:Object
    statement_id:0
    series:Array[1]
      0:Object
      name:"rails.pageviews"
      columns:Array[2]
        0:"time"
        1:"sum"
      values:Array[73]
        0:Array[1530870900000,null]
        (...)
        37:Array[1530882000000,null]
        38:Array[1530882300000,8]
        39:Array[1530882600000,null]
        (...)
        44:Array[1530884100000,null]
        45:Array[1530884400000,2]
        46:Array[1530884700000,null]
        (...)
        53:Array[1530886800000,null]
        54:Array[1530887100000,2]
        55:Array[1530887400000,null]
        (...)
        72:Array[1530892500000,null]
Run Code Online (Sandbox Code Playgroud)

time influxdb grafana

0
推荐指数
1
解决办法
2872
查看次数

将 yfinance Timestamp 中的日期写入 influxdb 并查询日期 - 时区支持

我正在尝试将日期/时间数据写入 influxdb 并将数据查询到数据帧。

当我写数据日期时间时看起来像这样......

ticker= 'AAPL'
import yfinance as yf
df = yf.Ticker('AAPL').history(period="1d").index[0]
print(df)

output:
Timestamp('2023-01-05 00:00:00-0500', tz='America/New_York')
Run Code Online (Sandbox Code Playgroud)

...当我将数据查询到数据帧并打印它时,我得到:

df['_time']

output:
0   2023-01-05 05:00:00+00:00
Name: _time, dtype: datetime64[ns, tzutc()]
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能在 influxdb 中正确写入时间?

请参阅下面的完整代码:

########## WRITE ##########

    import yfinance as yf
    import influxdb_client
    from influxdb_client.client.write_api import SYNCHRONOUS, PointSettings


    token = "my-token"
    org = "my-org"
    url = "my-url"
    bucket = "stocks_us"
    retention_policy = "autogen"
    
    client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
    write_api = client.write_api(write_options=SYNCHRONOUS)

   df = yf.Ticker('AAPL').history(period="1d")

   with client:
    """
    Ingest DataFrame with default …
Run Code Online (Sandbox Code Playgroud)

influxdb influxdb-python

0
推荐指数
1
解决办法
156
查看次数