具有相同时间戳但测量值不同的 InfluxDB 写入点

Posted

技术标签:

【中文标题】具有相同时间戳但测量值不同的 InfluxDB 写入点【英文标题】:InfluxDB write points with same timestamp but different measurement 【发布时间】:2019-07-15 17:56:25 【问题描述】:

要求: 我想创建一个 influxDB 数据库来存储来自多个传感器的时间序列数据,这些传感器报告来自不同位置的温度。

问题: 当我用相同的时间戳向数据库写入点但不同的标签(例如:位置)和字段(温度)值时,influx 会用最新的时间戳覆盖标签和字段值

我遵循了他们网站上提供的文档,他们展示了一个具有上述要求的示例数据库,但找不到使用的架构。

Example Table with duplicate timestamps

附加信息: 示例输入:

json_body_1 = [

    "measurement": "cpu_load_short",
    "tags": 
        "host": "server02",
        "region": "us-west"
    ,
    "time": "2009-11-10T23:00:00Z",
    "fields": 
        "Float_value": 0.7,
        "Int_value": 6,
        "String_value": "Text",
        "Bool_value": False
    
,

    "measurement": "cpu_load_short",
    "tags": 
        "host": "server01",
        "region": "us-west"
    ,
    "time": "2009-11-10T23:00:00Z",
    "fields": 
        "Float_value": 1.0,
        "Int_value": 2,
        "String_value": "Text",
        "Bool_value": False
    
]

我使用了官方文档中给出的示例,仍然不是 2 条记录,我只得到了一条。请注意主机标签不同,理想情况下应该使每个点都是唯一的。

Documentation

【问题讨论】:

【参考方案1】:

今天我也遇到了同样的问题,现在我来解决。 :)

from influxdb import InfluxDBClient

client = InfluxDBClient(host='host name', port=8086, database='test_db',username='writer', password=Config.INFLUXDB_WRITE_PWD)

points = [
    "measurement": "cpu_load_short",
    "tags": 
        "host": "server02",
        "region": "us-west"
    ,
    "time": "2009-11-10T23:00:00Z",
    "fields": 
        "Float_value": 0.7,
        "Int_value": 6,
        "String_value": "Text",
        "Bool_value": False
    
,

    "measurement": "cpu_load_short",
    "tags": 
        "host": "server01",
        "region": "us-west"
    ,
    "time": "2009-11-10T23:00:00Z",
    "fields": 
        "Float_value": 1.0,
        "Int_value": 2,
        "String_value": "Text",
        "Bool_value": False
    
]

status = client.write_points(json_body_1, database='test_db', batch_size=10000, protocol='json')

这是输出

> select * from cpu_load_short;
name: cpu_load_short
time                Bool_value Float_value Int_value String_value host     region
----                ---------- ----------- --------- ------------ ----     ------
1257894000000000000 false      1           2         Text         server01 us-west
1257894000000000000 false      0.7         6         Text         server02 us-west

【讨论】:

你能解释一下你在做什么不同吗? 是不是有不同的标签会创建一个新条目?看起来是帖子中唯一的区别 拥有不同的标签可以让您插入具有相同时间戳的相同值。具有相同的值和时间戳,InfluxDb 将更新旧的,所以不同的标签会做的伎俩。

以上是关于具有相同时间戳但测量值不同的 InfluxDB 写入点的主要内容,如果未能解决你的问题,请参考以下文章

获取测量的标签值 - influxDB

在 Influxdb 中,如何删除所有测量值?

如何在 InfluxDB 中编辑测量值(= 带有时间戳的值集)?

通过 WinHttpRequest 将多个测量值发布到 influxDB 的正确行分隔符是啥?

如何在 InfluxDB 中创建测量

如何查询所有 InfluxDB _internal 数据库测量?