すべてのプロダクト
Search
ドキュメントセンター

:SDK の複数値データモデルを使用してデータを読み取る

最終更新日:Jan 14, 2025

[サンプルコード]

/*
         * multiFieldQuery() API を使用します。
         * このプロセスを使用して、複数値データを照会するリクエストを作成できます。MultiFieldSubQueryDetails(リスト)情報を指定し、MultiFieldSubQuery リクエストを作成してから、MultiFieldQuery リクエストを作成します。
         * 複数値データクエリごとに複数のサブクエリを作成できます。
         *  
         * クエリを実行するときは、次の情報を提供する必要があります。
         * MultiFieldSubQueryDetails: ターゲットメトリックの特定のフィールドの詳細。フィールドは、メトリックのサブカテゴリです。たとえば、速度または方向フィールドのみを照会できます。
         *                                  次のパラメーターを指定できます。aggregator、dpValue、rate、および downsample。
         * Metric: 照会するメトリック(例: 風)。
         *  時間範囲: 開始時刻と終了時刻
         *
         * 次の情報はオプションです。
         * タグ: タイムラインをフィルタリングするために使用される条件。
         * Limit/Offset: ページネーションの詳細。
         */
        // Create the fields that you want to query.
        MultiFieldSubQueryDetails speedFieldDetails = MultiFieldSubQueryDetails
                .field("speed").aggregator(Aggregator.SUM).downsample("2s-sum").build();
        MultiFieldSubQueryDetails levelFieldDetails = MultiFieldSubQueryDetails
                .field("level").aggregator(Aggregator.AVG).downsample("2s-avg").build();
        MultiFieldSubQueryDetails tempFieldDetails = MultiFieldSubQueryDetails
                .field("temperature").aggregator(Aggregator.COUNT).downsample("2s-count").build();
        MultiFieldSubQueryDetails allFieldsDetails1 = MultiFieldSubQueryDetails
                .field("*").aggregator(Aggregator.MAX).downsample("2s-max").alias("max_").build();
        MultiFieldSubQueryDetails allFieldsDetails2 = MultiFieldSubQueryDetails
                .field("*").aggregator(Aggregator.MIN).downsample("2s-min").alias("min_").build();

        List<MultiFieldSubQueryDetails> subQueryDetails = new LinkedList<>();
        subQueryDetails.add(speedFieldDetails);
        subQueryDetails.add(levelFieldDetails);
        subQueryDetails.add(tempFieldDetails);
        subQueryDetails.add(allFieldsDetails1);
        subQueryDetails.add(allFieldsDetails2);

        // Create a subquery for the multi-value data model.
        MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric(metric).fieldsInfo(subQueryDetails)
                .filter(Filter.filter(FilterType.LiteralOr, "district", "Yuhang|Xiacheng|Xihu", true).build())
                .build();

        // Create a query for the multi-value data model.
        MultiFieldQuery query = MultiFieldQuery.start(1542772000L).end(1542772020L).msResolution(false)
                .sub(subQuery).build();

        List<MultiFieldQueryResult> results = tsdb.multiFieldQuery(query);