Utilisez le SDK Tablestore pour Java pour interroger les données d'une série temporelle sur une plage horaire donnée, trier les résultats par horodatage, sélectionner les champs à renvoyer et paginer les résultats.
Prérequis
Installez le SDK Tablestore pour Java et initialisez un client de séries temporelles.
Description
Appelez la méthode getTimeseriesData pour récupérer les points de données d'une seule série temporelle en spécifiant ses identifiants complets ainsi qu'une plage horaire. Cette plage inclut l'heure de début mais exclut l'heure de fin.
public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException
Les données écrites via l'appel à putTimeseriesData sont immédiatement disponibles pour interrogation avec getTimeseriesData.
L'exemple suivant interroge les données générées au cours de la dernière heure pour la série temporelle cpu dans la table example_timeseries_table et renvoie jusqu'à 20 lignes par requête.
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());
}
Paramètres
L'objet GetTimeseriesDataRequest accepte les paramètres suivants.
|
Nom |
Type |
Description |
|
timeseriesTableName (obligatoire) |
|
Nom de la table de séries temporelles. |
|
timeseriesKey (obligatoire) |
|
Identifiants complets de la série temporelle à interroger. Les valeurs doivent correspondre exactement à celles utilisées lors de l'écriture des données. |
|
beginTimeInUs (obligatoire) |
|
Heure de début de la plage d'interrogation, exprimée en microsecondes depuis le 01/01/1970 00:00:00 UTC. La valeur doit être supérieure ou égale à |
|
endTimeInUs (obligatoire) |
|
Heure de fin de la plage d'interrogation, en microsecondes. La valeur doit être strictement supérieure à |
|
limit (facultatif) |
|
Nombre maximal de lignes renvoyées par requête. Valeur par défaut et maximale : |
|
nextToken (facultatif) |
|
Jeton de pagination. Ne spécifiez pas ce paramètre lors de la première requête. Si le champ |
|
backward (facultatif) |
|
Indique si les données doivent être renvoyées dans l'ordre chronologique inverse. Par défaut : |
|
fieldsToGet (facultatif) |
|
Noms et types des champs de données à renvoyer. En l'absence de spécification, tous les champs sont retournés. La lecture d'un champ échoue si le type de données indiqué diffère du type réel. |
Identifiants de série temporelle
Le paramètre timeseriesKey est de type TimeseriesKey et comprend les attributs suivants.
|
Nom |
Type |
Description |
|
measurementName (obligatoire) |
|
Nom de la mesure. Si une valeur vide a été utilisée lors de l'écriture, spécifiez également une valeur vide pour l'interrogation. |
|
dataSource (facultatif) |
|
Identifiant de la source de données. Si une valeur vide a été utilisée lors de l'écriture, spécifiez également une valeur vide pour l'interrogation. |
|
tags (facultatif) |
|
Tags sous forme de paires clé-valeur de type chaîne. L'ensemble des tags doit correspondre exactement à celui utilisé lors de l'écriture des données. |
Réponse
L'objet GetTimeseriesDataResponse contient les champs spécifiques à cette opération.
|
Champ |
Type |
Description |
|
|
|
Appelez |
|
|
|
Appelez |
Lignes de données de série temporelle
Chaque élément du tableau rows[] est de type TimeseriesRow et comprend les champs suivants.
|
Champ |
Type |
Description |
|
|
|
Appelez |
|
|
|
Appelez |
|
|
|
Appelez |
Exemples
Paginer l'ensemble des résultats
Si une requête ne renvoie pas la totalité des données, transmettez itérativement le paramètre nextToken issu de la réponse jusqu'à ce que la valeur retournée soit 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);