标签: influxdb-python

如何使用Pandas从InfluxDB中检索超过10k行?

我正在尝试使用InfluxDB的Python客户端来检索存储在InfluxDB上的数据,但不能超过10k行.我(不成功)跟随的例子在这里.综上所述:

import influxdb
dfclient = influxdb.DataFrameClient('localhost', 8086, 'root', 'root', 'mydb')
q = "select * from some_measurement"
df = dfclient.query(q, chunked=True)  # Returns only 10k points
Run Code Online (Sandbox Code Playgroud)

这个问题似乎涉及到InfluxDB的文件化的内部限制在这里(即max-row-limit配置选项).我正在浏览消息来源,试图找出如何获得大于10k行的DataFrame,但是对于解决这个问题的任何帮助都将受到高度赞赏.

python pandas influxdb influxdb-python

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

DB 级别的 Influx DB 精度设置

#8746 的扩展:

我试图将配置文件中的精度设置为秒。但是当我写入数据并尝试再次获取它时,它会显示纳秒时间戳。

我阅读了整个文档,但无法弄清楚我的配置文件中的唯一更改是: precision = "s"

帮助我理解这些事情

如何在数据库级别设置精度,以及如何确保我只在epoch. 我使用 IST 作为我的应用程序的时区,所以还告诉我如何在配置中为 InfluxDB 设置相同的时区

我正在使用python-influxdb客户端seriesHelper将数据写入数据库,并且在写入数据时没有指定任何时间。

编辑:在 influxdb-python SeriesHelper 类中添加了一个拉取请求来解决这个问题 - #502

influxdb influxdb-python

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

与InfluxDB合并/动态WHERE子句

我想在SELECT语句中创建一个动态WHERE子句.

浏览Google搜索结果和InfluxDB文档,我找不到提及COALESCE或任何等效/合理的方法来实现此目的.

这样做的首选方法是什么?

将模拟这个的Python库就足以满足我的目的,但我更喜欢纯粹的"SELECT"示例.

influxdb influxdb-python

6
推荐指数
0
解决办法
254
查看次数

如何使用 influxdb-python 向 influxdb 发送正确的时间戳

我有test带测量的influxdb 数据库:

name: mes1
time          Amount     Buy_order_id Price     
----          ------     ------------ -----     
1529832177822 0.02294    132868375    130117.83 
Run Code Online (Sandbox Code Playgroud)

我想在 Grafana 中制作图表,但所有数据都在 1970 年。我还有其他测量:

name: cpu_load_short
time                Bool_value Float_value Int_value String_value host     region
----                ---------- ----------- --------- ------------ ----     ------
1257894000000000000 true       0.64        3         Text         server01 us-west
Run Code Online (Sandbox Code Playgroud)

这次效果很好。我发现,测量cpu_load_short中的时间存储在 ns 中,但测量mes1中的数据存储在 ms 中。

mes1收到来自 websocket 的时间。时间cpu_load_short是从 python 生成的:

datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
Run Code Online (Sandbox Code Playgroud)

所有数据都通过 influxdb-python 发送到 influxdb。我尝试调整时间mes1并在数字末尾添加六个零:

'1529832177822' -> '1529832177822000000'
Run Code Online (Sandbox Code Playgroud)

但我收到了:

OverflowError: signed integer is greater …
Run Code Online (Sandbox Code Playgroud)

python-3.x influxdb influxdb-python

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

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

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

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

我按照他们网站上提供的文档进行操作,他们显示了具有上述要求的示例数据库,但无法找到使用的模式。

具有重复时间戳的示例表

附加信息:示例输入:

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
    }
}]
Run Code Online (Sandbox Code Playgroud)

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

文档

time-series influxdb influxdb-python

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

与 InfluxQL 相比,flux 查询非常慢(慢 10 倍)

我正在将 influx1.x 升级到 influx2.x (将查询从 influxQL 更新为 Flux 语法)。对于非常简单的查询,当我尝试查询超过 500,000 个点时,性能会急剧下降,并且我不确定是否可以采取任何措施来改进查询以获得更好的性能

涌入QL:

select last("y") AS "y" from "mydata".autogen."profile" 
WHERE time >= '2019-01-01T00:00:00Z' and time <= '2019-01-07T23:59:59Z' 
GROUP BY time(1s) FILL(none)
Run Code Online (Sandbox Code Playgroud)

通量:

data=from(bucket: "mydata")
|> range(start: 2019-01-01T00:00:00Z, stop: 2019-01-07T23:59:59Z)
|> filter(fn: (r) => r._measurement == "profile")
|> filter(fn: (r) => r._field=="y")
|> aggregateWindow(every: 1s, fn: last, createEmpty: false)
|> yield()
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

influxdb influxdb-python influxql influxdb-2 flux-influxdb

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

将 Python 字典写入 InfluxDB?

我一直在尝试弄清楚如何在没有运气的情况下将 python dict 写入 InfluxDB。我尝试过使用 InfluxDBClient 以及通过 API 使用 Requests Post。

我有以下代码:

for server in  data['service_group_stat']['member_stat_list']:
    metrics = {}
    metrics['measurement'] = "LB01"
    metrics['tags'] = {}
    metrics['fields'] = {}
    metrics['tags']['SGNAME'] = name
    metrics['tags']['SRVNAME'] = server['server']
    metrics['fields']['CURCONNS'] = server['cur_conns']
    metrics['fields']['TOTCONNS'] = server['tot_conns']
    metrics['fields']['REQBYTES'] = server['req_bytes']
    metrics['fields']['REQPKTS'] = server['req_pkts']
    metrics['fields']['RESPBYTES'] = server['resp_bytes']
    metrics['fields']['RESPPKTS'] = server['resp_pkts']
    pprint(metrics)
Run Code Online (Sandbox Code Playgroud)

这会给我以下输出:

{'fields': {'CURCONNS': 33,
            'REQBYTES': 3151292236,
            'REQPKTS': 21160834,
            'RESPBYTES': 66671993850,
            'RESPPKTS': 51709706,
            'TOTCONNS': 332177},
 'measurement': 'LB01',
 'tags': {'SGNAME': 'SG_ACCOUNT.BUSINESS.COM_443',
          'SRVNAME': u'WWW0006'}}
{'fields': {'CURCONNS': 39,
            'REQBYTES': 3387948728,
            'REQPKTS': …
Run Code Online (Sandbox Code Playgroud)

python influxdb influxdb-python

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

使用带有 Line 协议的 Python 客户端将数据插入 Influxdb

我正在使用 InfluxDb 并具有简单的线路协议行,如下所示:

cpu,atag=test1 idle=100,usertime=10,system=1
Run Code Online (Sandbox Code Playgroud)

我有使用字典的 python 客户端,如下所示

client = InfluxDBClient(host, port, USER, PASSWORD, DBNAME)
client.create_database(DBNAME)

tagdic= {'Name': 'n1', 'data': 7}
fielddic= {'Name': 'field', 'f1': 70}
def main():
    var = 1
    while var == 1 :  
     client.write("cpu,atag=test1 idle=100,usertime=10,system=1")
     #client.write_points([{"measurement": "cpu", "tags": tagdic, "fields": fielddic}])   
Run Code Online (Sandbox Code Playgroud)

只要我使用 write_points 和字典来使用 write_points,上面的程序就可以正常工作,但是当我使用 client.write 时出现错误。

我如何 通过使用协议值 = 'line' 而不是默认协议 'json' 来使用这里提到的 client.write (行号 -255)?

python influxdb influxdb-python

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

使用 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万
查看次数

将 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
查看次数