0

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

1 回答 1

0

在调试 TSDMain 类的时候,我发现毫秒级的过滤并不是在数据库级别进行的,而是在 HTTPJsonSerializer 中的客户端代码中进行的。我相信这是当前支持的实现。是否还有其他解决方案?问候,弗洛林

于 2015-11-10T12:19:06.597 回答