5.1.21 Multi-Get

What is Multi-Get

Note: The concept of Multi-Get is described in our GridDB_TechnicalReference (Section 4.7.2)

Create the acquisition conditions

List.1 Create the acquisition conditions(MultiGet.java)
private static Map<String, RowKeyPredicate<?>> createMultiGetCondition(
				Collection<String, WeatherStation> weatherStationCol)
				throws GSException, ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm", Locale.US);

		// Create search condition of WeatherStation
		RowKeyPredicate<String> wsRowKeys = RowKeyPredicate.create(String.class);

		// Create multiget condition
		Map<String, RowKeyPredicate<?>> containerPredicateMap = new HashMap<>();
		for (int i = 0; i < 2; i++) {
				// Get WeatherStation
				WeatherStation weatherStation = weatherStationCol.get(String.valueOf(i + 1));
				wsRowKeys.add(weatherStation.id);

				// Create search condition of InstrumentLog
				RowKeyPredicate<Date> logRowKeys = RowKeyPredicate.create(Date.class);
				// Set TimeSeries Rows Timestamp
				logRowKeys.setStart(format.parse("2016/07/02 6:00"));
				logRowKeys.setFinish(format.parse("2016/07/02 12:00"));
				// Add ContainerName and RowKeyPredicate
				String logContainerName = "weather_station_" + weatherStation.id;

				// Put multiget condition
				containerPredicateMap.put(logContainerName, logRowKeys);
		}
		// Put multiget condition
		String wsContainerName = "weather_station";
		containerPredicateMap.put(wsContainerName, wsRowKeys);
		return containerPredicateMap;
}

Multi-Get execution

List.2 Multi-Get execution(MultiGet.java)
// Create Connection
store = gridLogic.createGridStore();

// Get Collection
Collection<String, WeatherStation> weatherStationCol =
		store.getCollection("weather_station", WeatherStation.class);

// Create MultiGet parameters
Map<String, RowKeyPredicate<?>> containerPredicateMap =
		careteMultiGetCondition(weatherStationCol);

// Get by multiget
Map<String, List<Row>> multiGetResults = store.multiGet(containerPredicateMap);

Result of Multi-Get execution

List.3 Obtain of Multi-Get results(MultiGet.java)
// Retrieve results
for (Entry<String, List<Row>> multiGetResult : multiGetResults.entrySet()) {
// Container Name
String containerName = multiGetResult.getKey();
System.out.println(containerName + " ################");

if ("weather_station".equals(containerName)) {
		// Retrieve WeatherStation Rows
		retieveWeatherStationRows(multiGetResult);
} else {
		// Retrieve InstrumentLog Rows
		retrieveInstrumentLogRows(multiGetResult);
}
}
List.4 Result of Multi-Get execution
weather_station_2 ################
Timestamp                       WeatherStation ID       Temperature      Live Image
Sat Jul 02 06:00:00 JST 2016    weather_station_2       70.0            None
Sat Jul 02 09:00:00 JST 2016    weather_station_2       75.0            None
Sat Jul 02 12:00:00 JST 2016    weather_station_2       80.0            None
weather_station ################
ID      Name                    Longitude               Latitude        Camera
1       Hokkaido-Sapporo        43.06417                141.34694       true
2       Aomori-Aomori           40.82444                140.74          true
weather_station_1 ################
Timestamp                       WeatherStation ID       Temperature      Live Image
Sat Jul 02 06:00:00 JST 2016    weather_station_1       70.0            None
Sat Jul 02 09:00:00 JST 2016    weather_station_1       75.0            None
Sat Jul 02 12:00:00 JST 2016    weather_station_1       90.0            None

Source Code

Complete source code used in this sample can be downloaded from the following.

Download:multi-get.zip