Skip to content
Snippets Groups Projects
Commit a31922db authored by BRONES Romain's avatar BRONES Romain
Browse files

[ArchiveExtractor] Utilisation de la fonction ExtractBetweenDates

* Plutôt que GetAttDataBetweenDate
* Evite la création d'un attribut dynamique
* Permet une résolution temporelle sub-seconde
parent 09d6bcef
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,7 @@ DBDFMT = "%Y-%m-%d %H:%M:%S"
# Extractor date format for GetNearestValue
DBDFMT2 = "%d-%m-%Y %H:%M:%S"
ArrayTimeStampToDatetime = np.vectorize(datetime.datetime.fromtimestamp)
##---------------------------------------------------------------------------##
def dateparse(datestr):
......@@ -76,7 +77,7 @@ def query_ADB_BetweenDates(attr,
extractor="archiving/TDBExtractor/4"):
"""
Query attribute data from an archiver database, get all points between dates.
Use GetAttDataBetweenDates.
Use ExtractBetweenDates.
Warning : if the time interval gives a huge set of data, it can stall.
Parameters
......@@ -152,32 +153,22 @@ def query_ADB_BetweenDates(attr,
# For each date chunk
for i_d in range(len(cdates)-1):
# Make retrieval request
logger.debug("Perform GetAttDataBetweenDates (%s, %s, %s)"%(
logger.debug("Perform ExtractBetweenDates (%s, %s, %s)"%(
attr,
cdates[i_d].strftime(DBDFMT),
cdates[i_d+1].strftime(DBDFMT))
)
[N,], [name,] = ADB.GetAttDataBetweenDates([
_date, _value = ADB.ExtractBetweenDates([
attr,
cdates[i_d].strftime(DBDFMT),
cdates[i_d+1].strftime(DBDFMT)
])
# Read the history
logger.debug("Retrieve hystory of %d values. Dynamic attribute named %s."%(N, name))
attrHist = ADB.attribute_history(name, N)
# Transform to datetime - value arrays
_value = np.empty(N, dtype=float)
_date = np.empty(N, dtype=object)
for i_h in range(N):
_value[i_h]=attrHist[i_h].value
_date[i_h]=attrHist[i_h].time.todatetime()
# Remove dynamic attribute
logger.debug("Remove dynamic attribute %s."%name)
ADB.RemoveDynamicAttribute(name)
_value = np.asarray(_value, dtype=float)
if len(_date) > 0:
_date = ArrayTimeStampToDatetime(_date/1000.0)
value.append(_value)
date.append(_date)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment