Расчет среднего значения?

Сервер БД Historian, ранее InSQL

Расчет среднего значения?

Сообщение LexSL » Чт фев 09, 2012 9:40 pm

Коллеги знающие! :)
Ситуация такая:
Historian и аналоговый тег, метод сохранения = cyclic ,10 sec.
Создал EventTag, тип детектора = "Shedule" с частотой равной 1 часу, Action = Summary, CalculationType = AVG,Duration = 1 Hour, Resolution = 10000 ms. Ну и естественно добавил тот аналоговый тег.
Закоммитил, все нормально, каждый час срабатывает детектор и вычисляет мне среднее за прошедший час, Historian там как то записывает в таблицу SummaryData, а часовые значения я смотрю через вьюшку v_SummaryData. Все нормально.

Но вот я делаю запрос:
Код: Выделить всё
DECLARE @dt1 datetime
DECLARE @dt2 datetime

SET @dt1 = '20120209 15:00:00'
SET @dt2 = '20120209 16:00:00'

SELECT Avg(Value) FROM dbo.History
      WHERE TagName = N'Tag1'
         AND DateTime>=@dt1
            AND DateTime<=@dt2
                   AND wwRetrievalMode ='Cyclic'
                       AND wwCycleCount = 360
                       AND wwQualityRule = 'Good')

и он мне возвращает значение, ну вот хоть и рядом с тем, что уже есть в SummaryData, но немножко другое.
Я рассуждаю так: сохранение раз в 10 сек, значит за час он сохранил 360 значений, из этих 360 значений я ищу среднее, причем качество должно быть этих значений Good.
Вот сколько не бьюсь, так и не могу понять почему значения средних разные.
Пробовал еще так:
Код: Выделить всё
.......
AND wwRetrievalMode ='Cyclic'
          AND wwResolution = 10000
           AND wwQualityRule = 'Good'
.
Все равно значение хоть и рядом, но отличается от того значения, что сам Historian по детектору формирует.
Как правильно все же делать? и каким значениям доверять?

И вдогонку: если сервер ввода-вывода был на какое-то время недоступен (связи например не было) и хисториан не сохранял значения, он потом "правильно" посчитает среднее после восстановления связи? или лучше все же мне самому прямым запросом к History считать среднее, указывая параметр wwQualityRule = 'Good'?
LexSL
 
Сообщения: 80
Зарегистрирован: Вт дек 14, 2010 2:53 pm

Re: Расчет среднего значения?

Сообщение Генератор зла » Чт фев 09, 2012 11:08 pm

LexSL писал(а):AND DateTime>=@dt1
AND DateTime<=@dt2

Я ошибаюсь, или правильнее было бы:
AND DateTime>=@dt1
AND DateTime<@dt2

Calculation type = AVG
Time Stamp = ?

Потренируйтесь "на кошках" (тег SysTimeMin)
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Расчет среднего значения?

Сообщение LexSL » Пт фев 10, 2012 11:49 am

Доброго дня!
Генератор зла писал(а):Я ошибаюсь, или правильнее было бы:
AND DateTime>=@dt1
AND DateTime<@dt2

В итоге проб и ошибок оказалось действительно именно так! где выделено жирным:
AND DateTime>=@dt1
AND DateTime<@dt2
тогда запрос к dbo.History возвращает такое же среднее, какое и рассчитывает посредством временного детектора.
То есть расчет среднего значения за час в итоге получился таким:
Код: Выделить всё
DECLARE @dt1 datetime
DECLARE @dt2 datetime
SET @dt1 = '20120209 15:00:00'
SET @dt2 = '20120209 16:00:00'

SELECT Avg(Value) FROM dbo.History
      WHERE TagName = N'Tag1'
         AND DateTime>=@dt1
            AND DateTime<@dt2
             AND wwRetrievalMode ='Cyclic'
              AND wwResolution = 10000
               AND wwQualityRule = 'Good'


Генератор зла писал(а):Calculation type = AVG

это уже относится к вьюшке v_SummaryDate: поле CalcType
LexSL
 
Сообщения: 80
Зарегистрирован: Вт дек 14, 2010 2:53 pm


Вернуться в Historian Server

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron