CALCSTATFUNCARR
Akcia CALCSTATFUNCARR
Funkcia
Výpočet archívnej štatistickej funkcie pre všetky dané časové intervaly.
Deklarácia
CALCSTATFUNCARR archIdent, bt_TmA, et_TmA, step, deepTime, statFuncIdent_Int, validPercIdent_Int, paramIdent, locVarColValueIdent_Rec, statusIdent_Int [,archivInstance_Int]Parametre
archIdent | in | Odkaz na jednu archívnu hodnotu alebo odkaz na ľubovoľný objekt, ktorého hodnoty sa archivujú. |
bt_TmA | in | Identifikátor typu AbsTime - začiatok intervalu. |
et_TmA | in | Identifikátor typu AbsTime - koniec intervalu. |
step | in | Identifikátor typu Int - časový krok [s]. |
deepTime | in | Identifikátor typu Int - časová hĺbka [s] pre výpočet štatistiky. |
statFunctIdent_Int | in | Identifikátor typu Int - typ štatistickej funkcie. |
validPercIdent_Int | in | Identifikátor typu Int - validačné kritérium. |
paramIdent | in | Identifikátor typu Int alebo Real - parameter pre niektoré typy funkcií. |
locVarColValueIdent_Rec | out | Odkaz na stĺpec lokálnej premennej typu RECORD - výsledné hodnoty. |
statusIdent_Int | out | Úspešnosť výpočtu. |
archivInstance_Int | in | Nepovinný identifikátor typu Int - identifikácia inštancie archívu. Ak nie je uvedený, nahradí sa hodnotou 0. |
Popis
Akcia vykoná výpočet štatistickej funkcie danej parametrom statFuncIdent_Int na archívnych dátach reprezentovaných archívnym objektom archIdent pre nasledujúce časové intervaly dané parametrami bt_TmA, et_TmA, step a deepTime:
prvý časový interval - <bt_TmA - deepTime; bt_TmA>
druhý časový interval - <bt_TmA + step - deepTime; bt_TmA + step>
.....
n-tý časový interval - <bt + (N-1)*step - deepTime; bt + (N-1)*_step>
Časová značka výsledku za určitý časový interval je zhodná s koncovým časom príslušného časového intervalu. Po úspešnom vykonaní akcie sú výsledky výpočtu dosadené do stĺpca lokálnej štruktúrovanej premennej danej parametrom locVarColValueIdent_Rec.
Poznámka: Pri výpočte akcie CALCSTATFUNCARR sa neuplatňuje obmedzenie času, ktoré je aktívne pri výpočtoch štatistických archívov a ktoré nedovolí výpočet pre časy v budúcnosti. Pomocou akcie CALCSTATFUNCARR je teda možné napríklad vypočítať štatistiku nad skriptom plneným archívom, ktorý má dáta aj v budúcnosti.
Návratový kód statusIdent_Int môže nadobúdať jednu z nasledujúcich hodnôt:
_ERR_TRANS_ABORT
_ERR_TRANS_ERROR
_ERR_TRANS_IGNORED
_ERR_NO_ERROR
Množina implementovaných funkcií je zhodná z funkciami, ktoré je možné konfigurovať pre štatistický archív (okrem funkcií FILTER a TIMESLICE). Pre jednotlivé funkcie sú v ESL preddefinované lokálne konštanty.
Pozn: Namiesto výpočtu funkcie TIMESLICE je možné použiť akciu GETARCHARR s nastavením parametra stepIdent_Int na veľkosť časového kroku.
Pozn: Funkcia TIMESLICE je implementovaná v patchoch procesu D2000 Archív z 15.6.2025 a novších.
Parameter validPerctIdent_Int predstavuje validačné kritérium použité pri vyhodnocovaní štatistickej funkcie. Môže nadobúdať hodnoty 0 .. 100 (chyba pri nedodržaní podmienky ERR_RANGE_ERROR).
Pre niektoré štatistické funkcie je potrebné zadať parameter paramIdent podľa nasledujúcej tabuľky:
Štatistická funkcia | Popis parametra | ||||||||
_STAT_F_INTEGRAL | Časový rozmer vstupu. Pre jednotlivé typy sú taktiež zavedené preddefinované lokálne konštanty podľa tabuľky:
| ||||||||
_STAT_F_GE_TIME |
Pre ostatné štatistické funkcie sa parameter paramIdent nevyhodnocuje.
Hodnota parametra archivInstance_Int udáva inštanciu archívu, ktorá realizuje požiadavku. Ak nie je uvedený (alebo má hodnotu 0) požiadavku realizuje aktívna inštancia archívu.
Príklad
Výpočet váženého plávajúceho priemeru z hodnôt v rozsahu 2 hodín.
TIME _bt
TIME _et
INT _step
INT _deepTime
REAL _retCode
INT _idx
RECORD NOALIAS (SD.Data) _statData
_bt := %StrToTime("0:00:00 16-11-2006")
_et := %StrToTime("0:00:00 17-11-2006")
_step := 3600 ; hodnota pre každú hodinu
_deepTime := 2*_step ; plávajúci priemer, hĺbka 2 hodiny
CALCSTATFUNCARR H.Col[1], _bt, _et, _step, _deepTime, _STAT_F_WGAVG, 100, 0, _statData^Value, _retCode
IF _retCode = _ERR_NO_ERROR THEN
; výpočet prebehol, prezeranie hodnôt
FOR _idx=1 TO _statData\DIM DO_LOOP
; _statData[_idx]^Value - hodnota
ELSE
; nastala nejaká chyba
ENDIF Poznámka
Použitie akcie CALCSTATFUNARR neumožňuje počítať štatistické funkcie FILTER a TIMESLICE.
Súvisiace stránky: