处理 'influxdb.resultset.ResultSet' 的流入数据库输出
Processing influx db output of 'influxdb.resultset.ResultSet'
我正在尝试将 influxdb 与我的应用程序集成并处理输出。我正在导入 InfluxDBClient 包以连接到本地计算机上的 influx 实例 运行。使用 query() returns 格式的 'influxdb.resultset.ResultSet' 数据。
但是,我希望能够从结果集中专门挑选每个元素用于我的计算。我在这里使用了 influxdb-python 手册中的不同函数,如 keys()、items() 和 values(),但没有用:
http://influxdb-python.readthedocs.io/en/latest/api-documentation.html
这是 query() 的示例输出:
Result: 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}]})
我也发现很难使用上述 link 中提到的 Raw 获取 JSON 格式的数据。如果有任何指针来处理上述输出,那就太好了。
items() returns 以下格式的元组,((u'cpu', None), ),其中生成器可用于循环并获取字典格式的实际数据。我花了一些时间才弄清楚,但很有趣!!
根据 the docs,您可以使用 get_points()
函数从 InfluxDB 结果集中检索结果。该函数允许您通过 measurement、tag、measurement 和 进行过滤tag,或者直接获取所有结果而不进行任何过滤。
获得所有积分
使用 rs.get_points()
将 return 生成结果集中所有点的生成器。
按测量筛选
使用 rs.get_points('cpu')
将 return 一个生成器,用于测量名称为 cpu 的系列中的所有点,无论标签如何。
rs = cli.query("SELECT * from cpu")
cpu_points = list(rs.get_points(measurement='cpu'))
按标签筛选
使用 rs.get_points(tags={'host_name': 'influxdb.com'})
将 return 为所有标记有指定标签的点生成一个生成器,无论测量名称如何。
rs = cli.query("SELECT * from cpu")
cpu_influxdb_com_points = list(rs.get_points(tags={"host_name": "influxdb.com"}))
按测量和标签过滤
使用测量名称和标签将 return 一个生成器,用于一系列具有指定测量名称且其标签与给定标签匹配的所有点。
rs = cli.query("SELECT * from cpu")
points = list(rs.get_points(measurement='cpu', tags={'host_name': 'influxdb.com'}))
我正在尝试将 influxdb 与我的应用程序集成并处理输出。我正在导入 InfluxDBClient 包以连接到本地计算机上的 influx 实例 运行。使用 query() returns 格式的 'influxdb.resultset.ResultSet' 数据。
但是,我希望能够从结果集中专门挑选每个元素用于我的计算。我在这里使用了 influxdb-python 手册中的不同函数,如 keys()、items() 和 values(),但没有用: http://influxdb-python.readthedocs.io/en/latest/api-documentation.html
这是 query() 的示例输出:
Result: 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}]})
我也发现很难使用上述 link 中提到的 Raw 获取 JSON 格式的数据。如果有任何指针来处理上述输出,那就太好了。
items() returns 以下格式的元组,((u'cpu', None), ),其中生成器可用于循环并获取字典格式的实际数据。我花了一些时间才弄清楚,但很有趣!!
根据 the docs,您可以使用 get_points()
函数从 InfluxDB 结果集中检索结果。该函数允许您通过 measurement、tag、measurement 和 进行过滤tag,或者直接获取所有结果而不进行任何过滤。
获得所有积分
使用 rs.get_points()
将 return 生成结果集中所有点的生成器。
按测量筛选
使用 rs.get_points('cpu')
将 return 一个生成器,用于测量名称为 cpu 的系列中的所有点,无论标签如何。
rs = cli.query("SELECT * from cpu")
cpu_points = list(rs.get_points(measurement='cpu'))
按标签筛选
使用 rs.get_points(tags={'host_name': 'influxdb.com'})
将 return 为所有标记有指定标签的点生成一个生成器,无论测量名称如何。
rs = cli.query("SELECT * from cpu")
cpu_influxdb_com_points = list(rs.get_points(tags={"host_name": "influxdb.com"}))
按测量和标签过滤 使用测量名称和标签将 return 一个生成器,用于一系列具有指定测量名称且其标签与给定标签匹配的所有点。
rs = cli.query("SELECT * from cpu")
points = list(rs.get_points(measurement='cpu', tags={'host_name': 'influxdb.com'}))