Understanding how data is retrieved can help eliminate confusion on how the data was actually stored. This document has been designed two spell out two scenarios with Cyclic Storage with Delta Retrieval, and Delta Storage with Cyclic Retrieval.
- Author: Glenn Yancey
- Published: 12/21/2014
- Applies to: Historian Server/Client 10.0 and higher
Cyclic Storage vs Delta Retrieval
In the example below, I am storing values for a Tag called "ReactTemp" using Cyclic Retrieval with a resolution of every 1 second. Between the 15 and 17 second mark, the value does not change even though due to Cyclic Storage the value is stored. On the retrieval side through the Historian Client or any ODBC compatible client, only 3 rows are returned. Delta Retrieval tells us to bring back only where values have changed. Even though a value was stored cyclically at each second, Delta retrieval will only yield a value at each timestamp where a value has changed.
Delta Storage vs Cyclic Retrieval
In this example below, we are storing the "ReactTemp" tag only when a value has changed in the system known as Delta Storage. ReactTemp only stored 3 values. Now on the retrieval side when we ask for values during the timestamps, we end up getting 6 values returned since Cyclic Retrieval pulls back a value at an interval of our choosing. The interval (resolution) in this scenario is at 1 second. The values that are returned at each second include a concept called Interpolation. At the 16 and 17 second mark, there are 2 values returned even though no value was stored at those time stamps. Interpolation may be set as default on your tag, and it makes an intelligent guess as to what the values were between two stored points.
To force a query to always return stair-stepped values (where Interpolation is turned off) , specify the following in the query:
AND wwInterpolationType = 'StairStep'
The values returned if we set the Interpolation Type to "StairStep" would bring a value back every second WITHOUT it making guess as to what the value might be.
Although you may have chosen a particular storage method, your method of retrieval may not reflect exactly how the values were stored. We have a Retrieval Method called "FULL" that will pull back your values exactly how they were stored.