5.1.13 Data Retrieval
Overview
This section describes the data acquisition of time-series container of GridDB in this chapter.
Data Acquisition
The following are methods to fetch and read TimeSeries containers:
Specified time
Time to get the data (= low) of the series container, you will need to specify the time is Rouki of time series container.
List.1 Acquire Data for a Specified Time (TimeSeriesRetrieve.java)
// Specify Time
InstrumentLog log = logTs.get(format.parse("2016/07/02 12:00"));
System.out.println("get by Time");
System.out.println(String.format("%s\t%-20s\t%-10s", log.timestamp, log.weatherStationId,
log.temperture));
- Line 100: Use
TimeSeries.get (Date)to get rows with a specified time stamp.
Execution results are as follows.
List.2 Resultsget by Time Sat Jul 02 12:00:00 EDT 2016 weather_station_1 80.0
Specified range
Time series container will be able to get to specify the range to be retrieved.
List.3 Aquire rows within a Range (TimeSeriesRetrieve.java)
// Specify Time Range
System.out.println("get by Time Range");
Date start = format.parse("2016/07/02 9:00");
Date end = TimestampUtils.add(start, 6, TimeUnit.HOUR);
Query<InstrumentLog> query = logTs.query(start, end);
// fetch row
RowSet<InstrumentLog> rowSet = query.fetch();
while (rowSet.hasNext()) {
InstrumentLog log = rowSet.next();
System.out.println("Timestamp\t\t\tWeatherStation ID\tTemperture\tLive Image");
System.out.println(String.format("%s\t%-20s\t%-10s\t%s", log.timestamp,
log.weatherStationId, log.temperture));
}
- Line 119-120: Generate the start and end time for the range.
- Line 122: Use
TimeSeries.query (Date, Date)method with start and end times for the range of data to fetch. - Line 124-126: Fetch rows.
Execution results are as follows.
List.4 Resultsget by Time Range Sat Jul 02 09:00:00 EDT 2016 weather_station_1 75.0 Sat Jul 02 12:00:00 EDT 2016 weather_station_1 80.0 Sat Jul 02 15:00:00 EDT 2016 weather_station_1 75.0
Relative Time
You can fetch rows with timestamps are earlier or later than specified timestamp with the TimeOperator enum.
Table 1 TimeOperator Enum
| Acquisition method | Description |
| TimeOperator.NEXT | Returns the oldest among the Rows whose timestamp are identical with or later than the specified time. |
| TimeOperator.NEXT_ONLY | Returns the oldest among the Rows whose timestamp are later than the specified time. |
| TimeOperator.PREVIOUS | Returns the newest among the Rows whose timestamp are identical with or earlier than the specified time. |
| TimeOperator.PREVIOUS_ONLY | Returns the newest among the Rows whose timestamp are earlier than the specified time. |
// Specify the next time, including a specified time
InstrumentLog log = logTs.get(format.parse("2016/07/02 12:00"), TimeOperator.NEXT);
System.out.println("get by Next Time");
System.out.println(String.format("%s\t%-20s\t%-10s", log.timestamp, log.weatherStationId,
log.temperture));
// Specify the next time
log = logTs.get(format.parse("2016/07/02 12:00"), TimeOperator.NEXT_ONLY);
System.out.println("get by NextOnly Time");
System.out.println(String.format("%s\t%-20s\t%-10s", log.timestamp, log.weatherStationId,
log.temperture));
// Specify the previous time, including a specified time
log = logTs.get(format.parse("2016/07/02 12:00"), TimeOperator.PREVIOUS);
System.out.println("get by Previous Time");
System.out.println(String.format("%s\t%-20s\t%-10s", log.timestamp, log.weatherStationId,
log.temperture));
// Specify the previous time
log = logTs.get(format.parse("2016/07/02 12:00"), TimeOperator.PREVIOUS_ONLY);
System.out.println("get by PreviousOnly Time");
System.out.println(String.format("%s\t%-20s\t%-10s", log.timestamp, log.weatherStationId,
log.temperture));
- Line 144: you get to specify the
TimeOperator.NEXT. - Line 150: you get to specify the
TimeOperator.NEXT_ONLY. - Line 156: you get to specify the
TimeOperator.PREVIOUS. - Line 162: you get to specify the
TimeOperator.PREVIOUS_ONLY.
Serving as a reference time has designated all " 2016/07/02 12:00 ".
Execution results are as follows.
List.6 Results that the constant time was on the basis ofget by Next Time Sat Jul 02 12:00:00 EDT 2016 weather_station_1 80.0 get by NextOnly Time Sat Jul 02 15:00:00 EDT 2016 weather_station_1 75.0 get by Previous Time Sat Jul 02 12:00:00 EDT 2016 weather_station_1 80.0 get by PreviousOnly Time Sat Jul 02 09:00:00 EDT 2016 weather_station_1 75.0
Aggregatation
Time series container is able to aggregate the data for the specified time period.
List.7 Aggregate Average
// Average Temperature
Date start = format.parse("2016/07/01 12:00");
Date end = format.parse("2016/07/02 9:00");
AggregationResult aggrResult =
logTs.aggregate(start, end, "temperture", Aggregation.AVERAGE);
System.out.println("Average Temperature:" + aggrResult.getDouble() + "\n");
- 181-182 line:
TimeSeries.aggregate (Date, Date, String, Aggregation)method You have a summary to find the average value of the temperature.
Execution results are as follows.
List.8 Aggregate ResultsAverage Temperature: 67.5
The different types of Aggregation methods are as follows:
Table 2 Aggregation types
| Aggregation method | Description |
| Aggregation.AVERAGE | Obtain the average value. |
| Aggregation.COUNT | Obtain the number of samples. |
| Aggregation.MAXIMUM | Obtain the maximum value. |
| Aggregation.MINIMUM | Obtain the minimum value. |
| Aggregation.STANDARD_DEVIATION | Obtain the standard deviation. |
| Aggregation.TOTAL | Obtain the total value (sum). |
| Aggregation.VARIANCE | Obtain the variance within the rows. |
| Aggregation.WEIGHTED_AVERAGE | Obtain the weighted average. |
For more information, please refer to the GridDB API Reference
Complete source code
Complete source code used in this sample can be downloaded from the following.
Download: timeseries-retrieve.zip