Promotic
WikipediaLinkedInYoutubeTwitterFacebook

AddFilter - metoda objektu PmTrend

Popis:
K existujícímu filtru se přidá filtr pro filtraci hodnot jedné veličiny. Metoda musí být volána vždy po volání metody CreateFilter, jenž určuje časový rozsah dotazu. Metodu lze volat opakovaně a vytvořit tak více filtrů pro jednu nebo i více veličin (nad jednou veličinou lze vytvořit maximálně dva filtry). Výsledný filtr, jenž je vytvořen voláním metody CreateFilter a opakovaným voláním AddFilter se předává metodě GetData.
Syntaxe:
AddFilter(vFilter As Variant, sTrend As String, sFilterType As String, nVal1 As Double) As Variant
Volání:
vFilter = oTrend.AddFilter(vFilter, sTrend, sTypeFilter, nVal)
Parametry:
vFilter(Variant) Hodnota filtru vytvořená předchozím voláním CreateFilter, případně modifikovaná pomocí metody AddFilter.
sTrend(String) Název veličiny (viz záložka Data), nad níž má být aplikován filter.
sFilterType(String) Typ filtru, určuje způsob testování hodnoty veličiny.
"gt" - Hodnota veličiny vyhovuje filtru, pokud je ostře větší než hodnota v parametru vVal1.
"ge" - Hodnota veličiny vyhovuje filtru, pokud je větší nebo rovno hodnotě v parametru vVal1.
"le" - Hodnota veličiny vyhovuje filtru, pokud je menší nebo rovno hodnotě v parametru vVal1.
"lt" - Hodnota veličiny vyhovuje filtru, pokud je ostře menší než hodnota v parametru vVal1.
nVal1(Double) Hodnota, vůči níž jsou testovány hodnoty veličiny
Příklad1:
Zjištění trendovaných dat v časovém rozsahu <aktuální čas - 1 hodina, aktuální čas>. Trendovaná data jsou filtrována a jsou vrácena v podobě matice dat jen hodnoty časů a veličin a1,a2, kdy veličina a1 je v rozsahu od 30 do 70.
Dim vFilter, tNow, aData
tNow = Now
vFilter = oTrend.CreateFilter(tNow-1/24, 1, tNow, 1, -1)
vFilter = oTrend.AddFilter(vFilter, "a1", "lt", 70)
vFilter = oTrend.AddFilter(vFilter, "a1", "gt", 30)
aData = oTrend.GetData("time;a1;a2", vFilter)
If Pm.IsValid(aData) Then
  Pm.Debug "Čas první hodnoty je " & aData(0,0)
  Pm.Debug "Hodnota veličiny a1 v tomto čase je " & aData(1,0)
  Pm.Debug "Hodnota veličiny a2 v tomto čase je " & aData(2,0)
End If
Příklad2:
Jsou vráceny spočítané hodnoty, jenž jsou vráceny v poli hodnot dle pořadí zadání v metodě GetData. Výpočet probíhá nad všemi daty v časovém rozsahu dle zadáni v CreateFilter. Data nejsou filtrována podle hodnot.
Dim vFilter, tNow, aData
tNow = Now
vFilter = oTrend.CreateFilter(tNow-1/24, 1, tNow, 1, -1)
aData = oTrend.GetData("avg(a1);avg(a1;weighted);min(a1);count(a1);avg(a2);avg(a2;weighted);min(a2);count(a2)", vFilter)
If Pm.IsValid(aData) Then
  Pm.Debug "Průměrné hodnoty veličin a1,a2 jsou " & aData(0)&"; "& aData(4)
  Pm.Debug "Vážené průměry veličin a1,a2 jsou " & aData(1)&"; "& aData(5)
  Pm.Debug "Minimální hodnoty veličiny a1,a2 jsou " & aData(2)&"; "& aData(6)
  Pm.Debug "Počty hodnot veličin a1,a2 jsou " & aData(3)&"; "& aData(7)
End If
Příklad3:
Jsou vráceny spočítané hodnoty, jenž jsou vráceny v poli hodnot dle pořadí zadání v metodě GetData. Výpočet probíhá nad daty v časovém rozsahu dle zadáni v CreateFilter a jsou filtrována dle hodnot dle filtru v AddFilter.
Dim vFilter, tNow, aData
tNow = Now
vFilter = oTrend.CreateFilter(tNow-1/24, 1, tNow, 1, -1)
vFilter = oTrend.AddFilter(vFilter, "a1", "lt", 70)
vFilter = oTrend.AddFilter(vFilter, "a2", "gt", 30)
aData = oTrend.GetData("avg(a1);avg(a1;weighted);min(a1);count(a1);avg(a2);avg(a2;weighted);min(a2);count(a2)", vFilter)
If Pm.IsValid(aData) Then
  Pm.Debug "Průměrné hodnoty veličin a1,a2 jsou " & aData(0)&"; "& aData(4)
  Pm.Debug "Vážené průměry veličin a1,a2 jsou " & aData(1)&"; "& aData(5)
  Pm.Debug "Minimální hodnoty veličiny a1,a2 jsou " & aData(2)&"; "& aData(6)
  Pm.Debug "Počty hodnot veličin a1,a2 jsou " & aData(3)&"; "& aData(7)
End If
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice