我必须以毫秒精度查询 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;
}