Difference between revisions of "Time Series Management"

From Gcube Wiki
Jump to: navigation, search
(How To Access TimeSeries data)
(How To Access TimeSeries data)
Line 59: Line 59:
  
  
Once the EPR for the TimeSeries have been retrieved the client can interact directly with the <code>TimeSeriesManager</code> port-type,
+
Once the EPR for the TimeSeries have been retrieved the client can interact directly with the <code>TimeSeriesManager</code> port-type to retrieve information about column definition and the contained data.
 +
 
 +
<source lang="java5" highlight="4">
 +
TimeSeriesServiceCall timeSeriesServiceCall = new TimeSeriesServiceCall(user, timeSeriesEPR , scope , secMan);
 +
 
 +
//retrieving the column definitions
 +
ColumnDefinition[] columns =timeSeriesServiceCall.getDimensions();
 +
for (ColumnDefinition column: columns){
 +
        EntryType type = column.getColumnType(); //returns the entry type of this column (Attribute, Dimension, Value)
 +
        String fieldId = column.getId(); //returns the id of this column (the name of this column in the db)
 +
        String label = column.getLabel(); //returns the user defined name for this column
 +
        Dimension dimension = column.getDimension(); //in case of dimension entry type it return the informations about the related codelist (id, name) otherwise it is null
 +
}
 +
 
 +
//retrieving data (order can be null if default order is required)
 +
String jsonData= timeSeriesServiceCall.getAllDataAsJSon(new Limit(0, 1000), new Order(columnId, OrderType.Descending));
 +
//json data contains the field id of every column and the related value
 +
</source>

Revision as of 17:54, 26 June 2012

Time Series Management and Analysis facilities.


Overview

The TimeSeriesManagerService is an application that offers facilities to import, curate and access time series data. The main goal of this service is to elaborate large amount of time series data in real time applying multiple operations: aggregation, union, grouping, filters etc.

Architecture

The interface of the TimeSeries Manager service is distributed across 6 port-types:

  • the ImportFactory port-type serves as the interface of a single WS-Resource, it allows clients to create new import resources (ImportManager instances).
  • the ImportManager port-type allows clients to import new time series offering operation like import, de-normalization etc.
  • the CurationFactory port-type serves as the interface of a single WS-Resource, it allows clients to create new curation resources (CurationManager instances).
  • the CurationManager port-type allows clients to curate time series offering operation like set column type, replace value etc.
  • the TimeSeriesFactory port-type serves as the interface of a single WS-Resource, it allows clients to create new time series resources (TimeSeriesManager instances).
  • the TimeSeriesManager port-type allows clients to operate on time series offering operation like union, grouping, aggregation etc.


How To Access TimeSeries data

TimeSeries offers an high-level library for interaction included in the TimeSeriesServiceStubs. This library offers facilities for service retrieving simply instantiating a TimeSeriesFactoryCall Object passing as argument a GCUBEScope and a SecurityManager Array.

GCUBEScope scope= ..some scope..
//running without security
GCUBESecurityManager secMan= new GCUBESecurityManagerImpl(){
 			@Override
			public boolean isSecurityEnabled() {
				return false;
			}
 
		};
 
TimeSeriesFactoryCall timeSeriesFactoryCall= new TimeSeriesFactoryCall(scope, new GCUBESecurityManager[]{secMan});

The TimeSeriesFactoryCall offers facilities to retrieve information about time series or to open a certain time series giving it a specific id.

...
TimeSeriesFactoryCall timeSeriesFactoryCall= new TimeSeriesFactoryCall(scope, new GCUBESecurityManager[]{secMan});
String user = ..some user..
//getting the list of timeseries by ownertimeSeriesFactoryCall.getUserRelatedTimeSeries(user);
//getting the list of published timeseries
timeSeriesFactoryCall.getPublishedTimeSeries();
 
//retrieving the EPR to interact with a  timeseries
String timeSeriesId= ..id..
EndpointReferenceType timeSeriesEPR = timeSeriesFactoryCall.open(timeSeriesId, user);


Once the EPR for the TimeSeries have been retrieved the client can interact directly with the TimeSeriesManager port-type to retrieve information about column definition and the contained data.

TimeSeriesServiceCall timeSeriesServiceCall = new TimeSeriesServiceCall(user, timeSeriesEPR , scope , secMan);
 
//retrieving the column definitions
ColumnDefinition[] columns =timeSeriesServiceCall.getDimensions();for (ColumnDefinition column: columns){
        EntryType type = column.getColumnType(); //returns the entry type of this column (Attribute, Dimension, Value)
        String fieldId = column.getId(); //returns the id of this column (the name of this column in the db)
        String label = column.getLabel(); //returns the user defined name for this column
        Dimension dimension = column.getDimension(); //in case of dimension entry type it return the informations about the related codelist (id, name) otherwise it is null
}
 
//retrieving data (order can be null if default order is required)
String jsonData= timeSeriesServiceCall.getAllDataAsJSon(new Limit(0, 1000), new Order(columnId, OrderType.Descending));
//json data contains the field id of every column and the related value