O Tablestore SDK for Java lê uma única linha de uma tabela de dados pela chave primária. Use as opções de solicitação para limitar as colunas retornadas, restringir o intervalo de versões ou filtrar valores de coluna.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Definição do método
public GetRowResponse getRow(GetRowRequest getRowRequest) throws TableStoreException, ClientException
Lê uma única linha de uma tabela de dados pela chave primária. Especifique as condições de consulta em SingleRowQueryCriteria e obtenha o resultado com response.getRow().
Defina pelo menos um dos parâmetros: maxVersions ou timeRange. Caso contrário, o servidor retornará um erro de parâmetro.
O exemplo a seguir lê a linha com chave primária row1 da tabela get_row_demo e retorna apenas a versão mais recente de cada coluna.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("RequestId: " + response.getRequestId());
System.out.println("Read CU: " + response.getConsumedCapacity().getCapacityUnit().getReadCapacityUnit());
System.out.println("Row: " + response.getRow());
Parâmetros
Configure os seguintes parâmetros em SingleRowQueryCriteria:
Name | Type | Description |
tableName (required) | String | Nome da tabela de dados de leitura. |
primaryKey (required) | PrimaryKey | Colunas de chave primária e seus valores.
|
maxVersions (one of two) | OptionalValue<Integer> | Número máximo de versões a retornar. Defina pelo menos um entre Retorna até essa quantidade de versões, da mais recente para a mais antiga. |
timeRange (one of two) | OptionalValue<TimeRange> | Intervalo de versões a retornar. Configure pelo menos um dos parâmetros: Cada coluna de atributo pode ter múltiplas versões. Definir um intervalo de tempo retorna apenas as versões dentro desse período. |
columnsToGet (optional) | Set<String> | Colunas para leitura. A lista pode incluir colunas de chave primária e de atributo.
|
filter (optional) | OptionalValue<Filter> | Condição de filtro. Para mais informações, consulte Usar filtros. Ao configurar simultaneamente |
Exemplos
Ler colunas de atributo específicas
Use addColumnsToGet para especificar os nomes das colunas de atributo a ler. Apenas essas colunas serão retornadas.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
// Read only col1 and col2
criteria.addColumnsToGet("col1");
criteria.addColumnsToGet("col2");
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (selected columns): " + response.getRow());
Ler por intervalo de versões
Use setTimeRange para especificar um intervalo de tempo de versões. Apenas as versões dentro do intervalo serão retornadas.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
// Read all versions from the past day
long now = System.currentTimeMillis();
criteria.setTimeRange(new TimeRange(now - 86400 * 1000L, now));
criteria.setMaxVersions(Integer.MAX_VALUE);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (time range): " + response.getRow());
Ler com filtro
Use setFilter para definir um filtro de valor de coluna. O Tablestore retorna a linha apenas se ela corresponder à condição do filtro.
String tableName = "get_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria(tableName, primaryKey);
criteria.setMaxVersions(1);
// Return the row only when col1 equals "val1"
SingleColumnValueFilter filter = new SingleColumnValueFilter(
"col1",
SingleColumnValueFilter.CompareOperator.EQUAL,
ColumnValue.fromString("val1"));
// Skip the row when the column is missing
filter.setPassIfMissing(false);
criteria.setFilter(filter);
GetRowResponse response = client.getRow(new GetRowRequest(criteria));
System.out.println("Row (filtered): " + response.getRow());