predix sum只查询非负数

时间:2017-11-25 12:03:58

标签: time-series predix

我有一个时间序列数据集,它有负数和非负数。有一个值(-999)表示云中的纳米值。我想要做的是,我想使用求和的查询,将负数考虑在内。在查询时有没有办法省略负数?

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,那么您正在查找Predix Time Series查询,该查询将返回所有标记读数的总和,但不会从结果中排除任何-999值。

如果是这样,查询正文可能如下所示:

{"start": "1w-ago", 
 "tags": [{
      "name": "STACK", 
      "filters": {"measurements": {"values": -999, "condition": "gt"}}, 
      "aggregations": [{"type": "sum", "sampling": {"datapoints": 1}}]
      }]
}

我用PredixPy SDK编写了一个小测试脚本来演示方案和结果,如果这对您有帮助的话。

# Run this is a new space to create services
import predix.admin.app
app = predix.admin.app.Manifest()
app.create_uaa('stack-admin-secret')
app.create_client('stack-client', 'stack-client-secret')
app.create_timeseries()

# Populate some test data into time series
tag = 'STACK'
values = [-999, -5, 10, 20, 30]

ts = app.get_timeseries()
for val in values:
    ts.send(tag, val)

# Query and compare against expected result
expected = sum(values[1:])
response = ts.get_datapoints(tag, measurement=('gt', -999), aggregations='sum')
result = response['tags'][0]['results'][0]['values'][0][1]
print(expected, result)

您可能还想在将来考虑使用质量属性时,使用质量属性,而不是过滤大于-999的值,您可以查询质量是好还是不确定。

{"start": "1w-ago", 
 "tags": [{"name": "STACK", 
           "filters": {"qualities": {"values": ["3"]}}, 
           "aggregations": [{"type": "sum", "sampling": {"datapoints": 1}}]
         }]   
}

希望有所帮助。