Use o Tablestore SDK for Java para consultar dados de uma série temporal em um intervalo de tempo, ordenar os resultados por tempo, selecione os campos de retorno e paginar as respostas.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente de séries temporais.
Descrição
Chame getTimeseriesData para consultar pontos de dados de uma única série temporal. Especifique os identificadores completos da série e um intervalo de tempo. O intervalo inclui o horário inicial e exclui o horário final.
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
É possível consultar imediatamente, com getTimeseriesData, os dados gravados por putTimeseriesData.
O exemplo a seguir consulta dados gerados na última hora da série temporal cpu em example_timeseries_table e retorna até 20 linhas por solicitação.
TimeseriesClient timeseriesClient = client.asTimeseriesClient();
Map<String, String> tags = new HashMap<>();
tags.put("region", "cn-hangzhou");
tags.put("host", "host_0");
TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "source_0", tags);
long endTimeInUs = System.currentTimeMillis() * 1000L;
long beginTimeInUs = endTimeInUs - 3600L * 1000L * 1000L;
GetTimeseriesDataRequest request =
new GetTimeseriesDataRequest("example_timeseries_table");
request.setTimeseriesKey(timeseriesKey);
request.setTimeRange(beginTimeInUs, endTimeInUs);
request.setLimit(20);
GetTimeseriesDataResponse response = timeseriesClient.getTimeseriesData(request);
for (TimeseriesRow row : response.getRows()) {
System.out.println(row.getTimeInUs());
System.out.println(row.getFields());
}
Parâmetros
GetTimeseriesDataRequest contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
timeseriesTableName (obrigatório) |
|
Nome da tabela de séries temporais. |
|
timeseriesKey (obrigatório) |
|
Identificadores completos da série temporal a consultar. Os valores devem ser idênticos aos usados na gravação dos dados. |
|
beginTimeInUs (obrigatório) |
|
Horário inicial do intervalo de consulta, em microssegundos desde 1970-01-01 00:00:00 UTC. O valor deve ser maior ou igual a |
|
endTimeInUs (obrigatório) |
|
Horário final do intervalo de consulta, em microssegundos. O valor deve ser maior que |
|
limit (opcional) |
|
Número máximo de linhas a retornar por solicitação. Valor padrão e máximo: |
|
nextToken (opcional) |
|
Token de paginação. Não especifique este parâmetro na primeira solicitação. Se |
|
backward (opcional) |
|
Defina se os dados retornam em ordem cronológica inversa. Padrão: |
|
fieldsToGet (opcional) |
|
Nomes e tipos dos campos de dados a retornar. Se este parâmetro não for especificado, todos os campos serão retornados. Um campo não poderá ser lido se o tipo de dado especificado diferir do tipo real. |
Identificadores de séries temporais
timeseriesKey é do tipo TimeseriesKey e contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
measurementName (obrigatório) |
|
Nome da medição. Se um valor vazio foi usado na gravação dos dados, use também um valor vazio na consulta. |
|
dataSource (opcional) |
|
Identificador da fonte de dados. Caso a gravação tenha sido feita com valor vazio, use valor vazio na consulta. |
|
tags (opcional) |
|
Tags como pares chave-valor do tipo string. O conjunto de tags deve corresponder exatamente ao usado na gravação dos dados. |
Resposta
GetTimeseriesDataResponse contém os seguintes campos específicos da operação:
|
Campo |
Tipo |
Descrição |
|
|
|
Chame |
|
|
|
Chame |
Linhas de dados de séries temporais
Cada elemento em rows[] é do tipo TimeseriesRow e contém os seguintes campos:
|
Campo |
Tipo |
Descrição |
|
|
|
Chame |
|
|
|
Chame |
|
|
|
Chame |
Exemplos
Paginar todos os resultados
Se uma solicitação não retornar todos os dados, passe repetidamente o nextToken da resposta até que o valor retornado seja null.
byte[] nextToken = null;
do {
request.setNextToken(nextToken);
GetTimeseriesDataResponse response =
timeseriesClient.getTimeseriesData(request);
for (TimeseriesRow row : response.getRows()) {
System.out.println(row.getTimeInUs());
System.out.println(row.getFields());
}
nextToken = response.getNextToken();
} while (nextToken != null);