全部产品
Search
文档中心

Tablestore:Collapse (distinct)

更新时间:Jul 06, 2025

Gunakan fitur collapse (distinct) untuk menggabungkan set hasil berdasarkan kolom tertentu ketika hasil kueri mencakup sejumlah besar data dari tipe tertentu. Data dari tipe tersebut hanya ditampilkan sekali dalam hasil kueri, memastikan keberagaman jenis hasil.

Dalam banyak skenario, Anda dapat menggunakan fitur collapse (distinct) untuk mendapatkan nilai unik berdasarkan kolom-kolom yang digabungkan. Namun, fitur ini hanya didukung untuk kolom bertipe INTEGER, FLOATING-POINT, atau KEYWORD. Maksimal 100.000 hasil teratas akan dikembalikan.

Catatan penggunaan

  • Jika menggunakan fitur collapse (distinct), paginasi hanya dapat dilakukan dengan menentukan parameter offset dan limit.

  • Jika menggabungkan dan merangkum set hasil secara bersamaan, rangkuman akan dihasilkan sebelum penggabungan.

  • Jika menggabungkan hasil kueri, jumlah total hasil yang dikembalikan ditentukan oleh nilai parameter offset dan limit. Maksimal 100.000 hasil dapat dikembalikan.

  • Jumlah total baris dalam respons mencerminkan jumlah baris yang memenuhi kondisi kueri sebelum menggunakan fitur collapse (distinct). Setelah penggabungan, jumlah total nilai unik tidak dapat diquery.

Operasi API

Anda dapat mengonfigurasi parameter collapse dalam operasi Search untuk mengimplementasikan fitur collapse (distinct).

Parameter

Parameter

Deskripsi

query

Tipe kueri. Anda dapat menetapkan parameter ini ke semua tipe kueri.

collapse

Menggabungkan set hasil berdasarkan kolom yang ditentukan oleh bidang fieldName.

fieldName: nama kolom berdasarkan mana set hasil digabungkan. Hanya kolom dengan nilai bertipe INTEGER, FLOATING-POINT, atau KEYWORD yang didukung.

offset

Posisi dari mana kueri saat ini dimulai.

limit

Jumlah maksimum baris yang ingin Anda kembalikan dalam kueri saat ini.

Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, tetapkan parameter limit ke 0.

getTotalCount

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default parameter ini adalah false, yang menentukan bahwa jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan.

Jika Anda menetapkan parameter ini ke true, performa kueri akan terpengaruh.

tableName

Nama tabel data.

indexName

Nama indeks pencarian.

columnsToGet

Menentukan apakah akan mengembalikan semua kolom dari setiap baris yang memenuhi kondisi kueri. Anda dapat menentukan bidang returnAll dan columns untuk parameter ini.

Nilai default bidang returnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan bidang columns untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menentukan kolom yang ingin Anda kembalikan, hanya kolom kunci utama yang dikembalikan.

Jika Anda menetapkan bidang returnAll ke true, semua kolom dikembalikan.

Metode

Anda dapat menggabungkan hasil kueri data menggunakan Tablestore CLI atau Tablestore SDK. Sebelum menggunakan fitur collapse (distinct), pastikan prasyarat berikut terpenuhi:

Gunakan Tablestore CLI

Anda dapat menjalankan perintah search di Tablestore CLI untuk menanyakan data menggunakan indeks pencarian dan mengonfigurasi parameter Collapse untuk mengimplementasikan fitur collapse (distinct). Untuk informasi lebih lanjut, lihat Indeks pencarian.

  1. Jalankan perintah search untuk menggunakan indeks pencarian search_index dalam menanyakan data dan mengembalikan semua kolom terindeks dari setiap baris yang memenuhi kondisi kueri.

    search -n search_index --return_all_indexed
  2. Contoh kode berikut menunjukkan cara memasukkan kondisi kueri seperti yang diprompt oleh sistem:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": {
            "FieldName": "product_name"
        },
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "MatchQuery",
            "Query": {
                "FieldName": "user_id",
                "Text": "00002",
                "MinimumShouldMatch": 1
            }
        }
    }

Gunakan Tablestore SDK

Anda dapat menggabungkan hasil kueri data menggunakan Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET, dan Tablestore SDK for PHP. Dalam contoh berikut, Tablestore SDK for Java digunakan untuk menggambarkan cara mengimplementasikan fitur collapse (distinct).

Contoh kode berikut menunjukkan cara menanyakan baris di mana nilai kolom user_id cocok dengan "00002" dan kemudian menggabungkan set hasil berdasarkan nilai kolom product_name:

private static void UseCollapse(SyncClient client){
    SearchQuery searchQuery = new SearchQuery(); // Tentukan kondisi kueri. 
    MatchQuery matchQuery = new MatchQuery();
    matchQuery.setFieldName("user_id");
    matchQuery.setText("00002");

    searchQuery.setQuery(matchQuery);
    Collapse collapse = new Collapse("product_name"); // Gabungkan set hasil berdasarkan kolom product_name. 
    searchQuery.setCollapse(collapse);

    //searchQuery.setOffset(1000);// Posisi dari mana kueri saat ini dimulai. 
    searchQuery.setLimit(20);
    //searchQuery.setGetTotalCount(true);// Tetapkan parameter GetTotalCount ke true untuk mengembalikan jumlah total baris yang memenuhi kondisi kueri. 

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);// Tentukan nama tabel data dan nama indeks pencarian.     
    // Anda dapat menggunakan parameter columnsToGet untuk menentukan kolom yang ingin Anda kembalikan atau tentukan bahwa semua kolom dikembalikan. Jika Anda tidak menentukan parameter ini, hanya kolom kunci utama yang dikembalikan. 
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Tetapkan parameter ReturnAll ke true untuk mengembalikan semua kolom. 
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Tentukan kolom yang ingin Anda kembalikan. 
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse response = client.search(searchRequest);  
    //System.out.println(response.getTotalCount());    
    //System.out.println(response.getRows().size()); // Tampilkan jumlah baris yang dikembalikan berdasarkan kolom product_name. 
    System.out.println(response.getRows()); // Tampilkan nama produk yang dikembalikan berdasarkan kolom product_name. 
}

Aturan penagihan

Jika menggunakan indeks pencarian untuk menanyakan data, throughput baca akan dikonsumsi. Untuk informasi lebih lanjut, lihat Item penagihan indeks pencarian.

Fitur collapse (distinct) tidak memengaruhi aturan penagihan yang ada.

FAQ

Referensi

  • Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri nested, kueri vektor KNN, dan kueri exists. Anda dapat memilih metode kueri berdasarkan kebutuhan bisnis Anda untuk menanyakan data dari berbagai dimensi.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri menggunakan fitur pengurutan dan paginasi. Untuk informasi lebih lanjut, lihat Lakukan pengurutan dan paginasi.

    Anda dapat menggunakan fitur collapse (distinct) untuk menggabungkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Jika ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi operasi Search atau mengeksekusi pernyataan SQL. Misalnya, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan jumlah total baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika ingin memperoleh semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.