Todos os produtos
Search
Central de documentação

Tablestore:Collapse (distinct)

Última atualização: Jul 03, 2026

Use o recurso de collapse (distinct) para agrupar o conjunto de resultados com base em uma coluna específica quando a consulta retornar grandes volumes de dados de um mesmo tipo. Os dados desse tipo aparecem apenas uma vez nos resultados, o que garante a diversidade dos tipos de resultado.

Pré-requisitos

Observações de uso

  • O recurso de collapse permite paginação apenas pelos parâmetros Offset e Limit, sem suporte a tokens.

  • A agregação ocorre antes do agrupamento quando ambos são aplicados simultaneamente ao conjunto de resultados.

  • Em consultas com collapse, o número total de itens retornados corresponde à soma dos valores de Offset e Limit, com limite máximo de 100.000 resultados.

  • O total de linhas na resposta reflete a quantidade que atende aos critérios da consulta antes da aplicação do collapse (distinct). Não é possível consultar esse total após o agrupamento do conjunto de resultados.

Parâmetros

Parâmetro

Descrição

TableName

Nome da tabela de dados.

IndexName

Nome do índice de pesquisa.

Query

Tipo da consulta. Aceita qualquer tipo de consulta disponível.

Collapse

Parâmetro de agrupamento, que inclui o parâmetro FieldName.

FieldName: nome da coluna usada como base para agrupar o conjunto de resultados. Suporta apenas colunas com valores dos tipos de dados INTEGER, FLOATING-POINT e KEYWORD.

Offset

Posição inicial da consulta atual.

Limit

Número máximo de linhas a retornar na consulta atual.

Defina o parâmetro Limit como 0 para obter apenas a contagem de linhas que atendem aos critérios da consulta, sem recuperar os dados.

Código de exemplo

O exemplo abaixo demonstra como consultar linhas em que o valor de user_id corresponde a "00002" e agrupar o conjunto de resultados com base no valor da coluna product_name:

func QueryWithCollapse(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)       // Specify the name of the table. 
    searchRequest.SetIndexName(indexName)       // Specify the name of the search index. 

    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(&search.MatchQuery{    // Specify the query conditions. 
        FieldName:          "user_id",
        Text:               "00002",
    })
    searchQuery.SetCollapse(&search.Collapse{
        FieldName: "product_name",              // Collapse the result set based on the value of the product_name column. 

    })
    searchQuery.SetOffset(0)
    searchQuery.SetLimit(100)
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{ReturnAll:true}) // Return all columns in the rows that meet the query conditions. 
    searchRequest.SetSearchQuery(searchQuery)

    searchResponse, err := client.Search(searchRequest)   // Perform the query. 
    if err != nil {
        fmt.Println("Failed to search with error:", err)
        return
    }
    for _, row := range searchResponse.Rows {           // Display the rows that are returned. 
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
}

FAQ

Referências