Use Tablestore SDK for Java para consultar datos dentro de un intervalo de tiempo en una serie temporal, ordenarlos cronológicamente, seleccione los campos a devolver y paginar los resultados.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente de series temporales.
Descripción
Llame a getTimeseriesData para consultar puntos de datos de una sola serie temporal al especificar los identificadores completos de la serie y un intervalo de tiempo. El intervalo incluye la hora de inicio y excluye la hora de finalización.
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
Los datos escritos mediante putTimeseriesData se pueden consultar inmediatamente con getTimeseriesData.
El siguiente ejemplo consulta los datos generados durante la última hora en la serie temporal cpu de example_timeseries_table y devuelve hasta 20 filas por solicitud.
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 contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
timeseriesTableName (obligatorio) |
|
Nombre de la tabla de series temporales. |
|
timeseriesKey (obligatorio) |
|
Identificadores completos de la serie temporal a consultar. Los valores deben coincidir con los usados al escribir los datos. |
|
beginTimeInUs (obligatorio) |
|
Hora de inicio del intervalo de consulta, en microsegundos desde 1970-01-01 00:00:00 UTC. El valor debe ser mayor o igual que |
|
endTimeInUs (obligatorio) |
|
Hora de finalización del intervalo de consulta, en microsegundos. El valor debe ser mayor que |
|
limit (opcional) |
|
Número máximo de filas a devolver en una solicitud. Valor predeterminado y máximo: |
|
nextToken (opcional) |
|
Token de paginación. No especifique este parámetro en la primera solicitud. Si |
|
backward (opcional) |
|
Indica si se deben devolver los datos en orden cronológico inverso. Valor predeterminado: |
|
fieldsToGet (opcional) |
|
Nombres y tipos de los campos de datos a devolver. Si no se especifica este parámetro, se devuelven todos los campos. Un campo no se puede leer si el tipo de datos especificado difiere del tipo real. |
Identificadores de series temporales
timeseriesKey es de tipo TimeseriesKey y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
measurementName (obligatorio) |
|
Nombre de la medición. Si usó un valor vacío para escribir los datos, use también un valor vacío en la consulta. |
|
dataSource (opcional) |
|
Identificador del origen de datos. Si usó un valor vacío para escribir los datos, use también un valor vacío en la consulta. |
|
tags (opcional) |
|
Etiquetas como pares clave-valor de cadenas. El conjunto de etiquetas debe coincidir con el usado al escribir los datos. |
Respuesta
GetTimeseriesDataResponse contiene los siguientes campos específicos de la operación.
|
Campo |
Tipo |
Descripción |
|
|
|
Llame a |
|
|
|
Llame a |
Filas de datos de series temporales
Cada elemento en rows[] es de tipo TimeseriesRow y contiene los siguientes campos.
|
Campo |
Tipo |
Descripción |
|
|
|
Llame a |
|
|
|
Llame a |
|
|
|
Llame a |
Ejemplos
Paginación de todos los resultados
Si una solicitud no devuelve todos los datos, pase repetidamente nextToken de la respuesta hasta que el valor devuelto sea 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);