我必须以毫秒精度查询TSDB。默认情况下,使用TDSBQuery(通过TSDB.newQuery()获得)时,此要求未得到满足。我试过TSQuery,但它没有用。返回的结果远远超过HTTP查询API返回的结果(带来了我需要的正确数据): http://localhost:9999/api/query?start=1197849600.001&end=1197849882.000&msResolution=true&m=sum:CP101_X&ms。 您能否帮助您了解如何使用Java API实现毫秒精度查询?
谢谢, 问候, 林
我使用了以下Java代码:
TSQuery q = getMetricForValidate();
q.validateAndSetQuery();
Query[] queries = q.buildQueries(tsdb);
for (int i = 0; i < queries.length; i++)
{
DataPoints[] dps = queries[i].run();
if (dps.length > 0)
{
for (DataPoint dp : dps[0])
{
System.out.println(dp.timestamp());
}
}
}
private static TSQuery getMetricForValidate()
{
final TSQuery query = new TSQuery();
query.setStart("119784960.0001");
query.setEnd("1197849882.000");
query.setMsResolution(true);
final ArrayList<TSSubQuery> subs = new ArrayList<TSSubQuery>(1);
subs.add(getSubMetricForValidate());
query.setQueries(subs);
return query;
}
public static TSSubQuery getSubMetricForValidate()
{
final TSSubQuery sub = new TSSubQuery();
sub.setAggregator("sum");
sub.setMetric("01CP101_X");
sub.setRate(false);
return sub;
}
答案 0 :(得分:0)
在调试TSDMain类时,我发现毫秒级的过滤不是在数据库级别执行,而是在HTTPJsonSerializer的客户端代码中执行。我相信这是目前支持的实施。是否还有其他解决方案? 问候, 林