全部产品
Search
文档中心

:Gunakan model data multi-nilai SDK untuk membaca data

更新时间:Jun 28, 2025

Contoh kode

/*
         * Gunakan API multiFieldQuery().
         * Anda dapat membuat permintaan untuk menanyakan data multi-nilai dengan menggunakan proses ini: Tentukan informasi MultiFieldSubQueryDetails (daftar), buat permintaan MultiFieldSubQuery, lalu buat permintaan MultiFieldQuery.
         * Anda dapat membuat beberapa subquery untuk setiap query data multi-nilai.
         *  
         * Anda harus menyediakan informasi berikut saat melakukan query:
         * MultiFieldSubQueryDetails: detail bidang spesifik untuk metrik target. Bidang-bidang tersebut adalah sub-kategori dari metrik. Sebagai contoh, Anda hanya dapat menanyakan bidang kecepatan atau arah.
         *                                  Anda dapat menentukan parameter berikut: aggregator, dpValue, laju, dan downsample.
         * Metric: metrik yang akan di-query, misalnya angin.
         *  Rentang Waktu: Waktu Mulai dan Waktu Akhir
         *
         * Informasi berikut bersifat opsional:
         * Tags: kondisi yang digunakan untuk memfilter timeline.
         * Limit/Offset: detail paginasi.
         */
        // Buat bidang yang ingin Anda tanyakan.
        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);

        // Buat subquery untuk model data multi-nilai.
        MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric(metric).fieldsInfo(subQueryDetails)
                .filter(Filter.filter(FilterType.LiteralOr, "district", "Yuhang|Xiacheng|Xihu", true).build())
                .build();

        // Buat query untuk model data multi-nilai.
        MultiFieldQuery query = MultiFieldQuery.start(1542772000L).end(1542772020L).msResolution(false)
                .sub(subQuery).build();

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