仅对非负数进行前缀和查询
predix sum query on non negative numbers only
我有一个包含负数和非负数的时间序列数据集。有一个值(-999)表示云中的 nan 值。我想要做的是,我想使用一个将负数考虑在内的求和查询。有没有办法在查询时省略负数?
如果我对你的问题的理解正确,你正在寻找一个 Predix Time Series 查询,它将 return 所有标签读数的总和,但从结果中排除任何 -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}}]
}]
}
希望对您有所帮助。
我有一个包含负数和非负数的时间序列数据集。有一个值(-999)表示云中的 nan 值。我想要做的是,我想使用一个将负数考虑在内的求和查询。有没有办法在查询时省略负数?
如果我对你的问题的理解正确,你正在寻找一个 Predix Time Series 查询,它将 return 所有标签读数的总和,但从结果中排除任何 -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}}]
}]
}
希望对您有所帮助。