AddFilter - metoda objektu PmaTrendGroup
Popis:
K existujícímu filtru přidá filtr pro filtraci hodnot jedné proměnné. Metoda musí být volána vždy po volání metody
CreateFilter, která určuje časový rozsah dotazu. Metoda může být volána opakovaně a vytvořit tak více filtrů pro jednu nebo i více proměnných (pro jednu proměnnou lze vytvořit maximálně dva filtry). Výsledný filtr, který se vytvoří voláním metody
CreateFilter a opakovaným voláním metody
AddFilter se předává do metody
GetData.
Syntaxe:
Variant AddFilter(Variant vFilter, String sTrend, String sFilterType, Double nVal1)
Parametry:
vFilter | (Variant) Hodnota filtru vytvořená voláním metody CreateFilter, případně modifikovaná metodou AddFilter. |
sTrend | (String) Název proměnné (viz karta "Data") nad kterou má být aplikován filtr. |
sFilterType | (String) Typ filtru, určuje způsob testování hodnoty proměnné.
"gt" - Hodnota proměnné vyhovuje filtru, pokud je větší než hodnota v parametru vVal1.
"ge" - Hodnota proměnné vyhovuje filtru, pokud je větší nebo rovno hodnotě v parametru vVal1.
"le" - Hodnota proměnné vyhovuje filtru, pokud je menší nebo rovno hodnotě v parametru vVal1.
"lt" - Hodnota proměnné vyhovuje filtru, pokud je menší než hodnota v parametru vVal1. |
nVal1 | (Double) Hodnota, vůči které jsou testovány hodnoty proměnné |
---|
Příklad1:
Zjistí trendovaná data 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 pouze s hodnotami časů a proměnných a1,a2, kdy proměnná a1 je v rozsahu od 30 do 70.
JavaScriptVBScriptVyber a zkopíruj do schránky
var tNow, vFilter, aData;
tNow = Pm.Time;
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))
{
Pm.Debug("Čas první hodnoty je " + aData.GetItem(0, 0));
Pm.Debug("Hodnota proměnné a1 v tomto čase je " + aData.GetItem(1, 0));
Pm.Debug("Hodnota proměnné a2 v tomto čase je " + aData.GetItem(2, 0));
}
Dim tNow, vFilter, aData
tNow = Pm.Time
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 proměnné a1 v tomto čase je " & aData(1, 0))
Pm.Debug "Hodnota proměnné a2 v tomto čase je " & aData(2, 0)
End If
Příklad2:
Jsou vráceny spočítané hodnoty, které jsou vráceny v poli hodnot podle pořadí zadání v metodě
GetData.
Výpočet probíhá nad všemi daty v časovém rozsahu dle zadání v metodě
CreateFilter.
Data nejsou filtrována podle hodnot.
JavaScriptVBScriptVyber a zkopíruj do schránky
var tNow, vFilter, aData;
tNow = Pm.Time;
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))
{
Pm.Debug("Průměrné hodnoty proměnných a1,a2 jsou " + aData.GetItem(0) + "; " + aData.GetItem(4));
Pm.Debug("Vážené průměry proměnných a1,a2 jsou " + aData.GetItem(1) + "; " + aData.GetItem(5));
Pm.Debug("Minimální hodnoty proměnných a1,a2 jsou " + aData.GetItem(2) + "; " + aData.GetItem(6));
Pm.Debug("Počty hodnot proměnných a1,a2 jsou " + aData.GetItem(3) + "; " + aData.GetItem(7));
}
Dim tNow, vFilter, aData
tNow = Pm.Time
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 proměnných a1,a2 jsou " & aData(0) & "; " & aData(4))
Pm.Debug("Vážené průměry proměnných a1,a2 jsou " & aData(1) & "; " & aData(5))
Pm.Debug("Minimální hodnoty proměnných a1,a2 jsou " & aData(2) & "; " & aData(6))
Pm.Debug "Počty hodnot proměnných a1,a2 jsou " & aData(3) & "; " & aData(7)
End If
Příklad3:
Jsou vráceny spočítané hodnoty, které jsou vráceny v poli hodnot podle pořadí zadání v metodě
GetData.
Výpočet probíhá nad daty v časovém rozsahu dle zadáni v metodě
CreateFilter a jsou filtrována dle hodnot dle filtru metody
AddFilter.
JavaScriptVBScriptVyber a zkopíruj do schránky
var tNow, vFilter, aData;
tNow = Pm.Time;
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("avg(a1);avg(a1;weighted);min(a1);count(a1);avg(a2);avg(a2;weighted);min(a2);count(a2)", vFilter);
if (Pm.IsValid(aData))
{
Pm.Debug("Průměrné hodnoty proměnných a1,a2 jsou " + aData.GetItem(0) + "; " + aData.GetItem(4));
Pm.Debug("Vážené průměry proměnných a1,a2 jsou " + aData.GetItem(1) + "; " + aData.GetItem(5));
Pm.Debug("Minimální hodnoty proměnných a1,a2 jsou " + aData.GetItem(2) + "; " + aData.GetItem(6));
Pm.Debug("Počty hodnot proměnných a1,a2 jsou " + aData.GetItem(3) + "; " + aData.GetItem(7));
}
Dim tNow, vFilter, aData
tNow = Pm.Time
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("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 proměnných a1,a2 jsou " & aData(0) & "; " & aData(4))
Pm.Debug("Vážené průměry proměnných a1,a2 jsou " & aData(1) & "; " & aData(5))
Pm.Debug("Minimální hodnoty proměnných a1,a2 jsou " & aData(2) & "; " & aData(6))
Pm.Debug "Počty hodnot proměnných a1,a2 jsou " & aData(3) & "; " & aData(7)
End If