我正在尝试使用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,但是对于解决这个问题的任何帮助都将受到高度赞赏.
#8746 的扩展:
我试图将配置文件中的精度设置为秒。但是当我写入数据并尝试再次获取它时,它会显示纳秒时间戳。
我阅读了整个文档,但无法弄清楚我的配置文件中的唯一更改是: precision = "s"
帮助我理解这些事情
如何在数据库级别设置精度,以及如何确保我只在epoch. 我使用 IST 作为我的应用程序的时区,所以还告诉我如何在配置中为 InfluxDB 设置相同的时区
我正在使用python-influxdb客户端seriesHelper将数据写入数据库,并且在写入数据时没有指定任何时间。
编辑:在 influxdb-python SeriesHelper 类中添加了一个拉取请求来解决这个问题 - #502
我想在SELECT语句中创建一个动态WHERE子句.
浏览Google搜索结果和InfluxDB文档,我找不到提及COALESCE或任何等效/合理的方法来实现此目的.
这样做的首选方法是什么?
将模拟这个的Python库就足以满足我的目的,但我更喜欢纯粹的"SELECT"示例.
我有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) 要求:我想创建一个 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 条记录,而是只得到了一条。请注意,主机标签不同,理想情况下应该使每个点都是唯一的。
我正在将 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)
有什么建议吗?
我一直在尝试弄清楚如何在没有运气的情况下将 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) 我正在使用 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)?
我正在使用 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) 我正在尝试将日期/时间数据写入 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 ×10
influxdb-python ×10
python ×4
influxdb-2 ×1
influxql ×1
json ×1
pandas ×1
post ×1
python-3.x ×1
time-series ×1