全部產品
Search
文件中心

Time Series Database:SDK多值讀取

更新時間:Jan 27, 2025
範例程式碼:
        /*
         *  通過multiFieldQuery() API。
         *  請求建立流程:MultiFieldSubQueryDetails List -> MultiFieldSubQuery -> MultiFieldQuery
         *  現在多值查詢支援多個子查詢。
         *
         *  查詢時必須提供的資訊:
         *  MultiFieldSubQueryDetails List: 查詢指標下具體的度量(子類比)資訊。例如只查詢"speed"或者“direction”
         *                                  裡面可以指定彙總運算(Aggreagtor),值過濾(dpValue),斜率計算(rate),降採樣(downsample)等。
         *  Metric: 代表查詢的資料指標,例如 "wind"
         *  Time Range: Start Time and End Time
         *
         *  可選資訊:
         *  Tags: 過濾時間的資訊
         *  Limit/Offset: 分頁處理
         */
        // 建立要查詢 fields 的資訊
        // Query : Filter: level >= 1.2 & speed >= 45.2
        MultiFieldSubQueryDetails fieldDetail_1 = MultiFieldSubQueryDetails
                .field("speed").aggregator(Aggregator.NONE).dpValue(">=45.2").build();
        MultiFieldSubQueryDetails fieldDetail_2 = MultiFieldSubQueryDetails
                .field("level").aggregator(Aggregator.NONE).dpValue(">=1.2").build();
        MultiFieldSubQueryDetails fieldDetail_3 = MultiFieldSubQueryDetails
                .field("direction").aggregator(Aggregator.NONE).build();
        MultiFieldSubQueryDetails fieldDetail_4 = MultiFieldSubQueryDetails
                .field("description").aggregator(Aggregator.NONE).build();

        List<MultiFieldSubQueryDetails> fieldsDetails = new ArrayList();
        fieldsDetails.add(fieldDetail_1);
        fieldsDetails.add(fieldDetail_2);
        fieldsDetails.add(fieldDetail_3);
        fieldsDetails.add(fieldDetail_4);

        // 建立多值模型子查詢
        MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric("wind")
                .tag("sensor", "95D8-7913")
                .tag("city", "hangzhou")
                .tag("province", "zhejiang")
                .fieldsInfo(fieldsDetails)
                .build();

        // 建立多值模型查詢
        MultiFieldQuery query = MultiFieldQuery.start(1537170208L).end(1537170209L)
                .sub(subQuery).build();

        List<MultiFieldQueryResult> result = tsdb.multiFieldQuery(query);
        if (result != null) {
            System.out.println("##### Multi-field Query Result : " + JSON.toJSONString(result));
            if (result.size() > 0) {
                System.out.println("##### Multi-field Query Result asMap : " + JSON.toJSONString(result.get(0).asMap()));
            }
        } else {
            System.out.println("##### Empty reply from HiTSDB server. ######");
        }