处理'Influxdb.resultset.ResultSet'的涌入db输出

时间:2016-06-26 16:28:31

标签: python-2.7 influxdb

我正在尝试将Influxdb与我的应用程序集成并处理输出。我正在导入InfluxDBClient包以连接到在我的本地机器上运行的涌入实例。使用query()以“Influxdb.resultset.ResultSet”格式返回数据。

但是,我希望能够从Resultset中专门选择每个元素进行计算。我在这里使用了来自Influxdb-python手册的不同函数,如keys(),items()和values(),但没有用: http://influxdb-python.readthedocs.io/en/latest/api-documentation.html

这是query()的示例输出:

  

结果:ResultSet({'(u'cpu',None)':[{u'usage_guest_nice':0,u'usage_user':0.90783871790308868,u'usage_nice':0,u'usage_steal':0,u 'usage_iowait':0.056348610076366427,u'host':u'xxx.xxx.hostname.com',u'usage_guest':0,u'usage_idle':98.184322579062794,u'usage_softirq':0.0062609566755314457,u'time':u' 2016-06-26T16:25:00Z',u'usage_irq':0,u'cpu':u'cpu-total',u'usage_system':0.84522915123660536}}})

我也发现使用上面链接中提到的Raw很难获得JSON格式的数据。有任何指针来处理上面的输出会很棒。

2 个答案:

答案 0 :(得分:3)

items()以下面的格式返回一个元组,((u' cpu',None)),其中生成器可用于循环并以Dictionary格式获取实际数据。花了一些时间让我弄明白,但这很有趣!!

答案 1 :(得分:1)

根据the docs,您可以使用get_points()函数从InfluxDB结果集中检索结果。该功能允许您通过测量标记测量标记进行过滤,或者只需获取所有结果没有任何过滤。

获得所有积分

使用rs.get_points()将返回ResultSet中所有点的生成器。

按尺寸过滤

使用rs.get_points('cpu')将为测量名称为cpu的系列中的所有点返回一个生成器,无论标记如何。

rs = cli.query("SELECT * from cpu") 
cpu_points = list(rs.get_points(measurement='cpu'))

按标签过滤 无论测量名称如何,使用rs.get_points(tags={'host_name': 'influxdb.com'})将为所有标记有指定标记的点返回生成器。

rs = cli.query("SELECT * from cpu")
cpu_influxdb_com_points = list(rs.get_points(tags={"host_name": "influxdb.com"}))

按尺寸和标签过滤 使用测量名称和标签将为系列中具有指定测量名称AND且其标签与给定标签匹配的所有点返回生成器。

rs = cli.query("SELECT * from cpu")
points = list(rs.get_points(measurement='cpu', tags={'host_name': 'influxdb.com'}))