Страница 1 из 1

"Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Пт авг 12, 2016 2:54 pm
NewOrdered
Добрый день!
Пытаюсь использовать ValueState для подсчета наработки установок. Тэги используются дискретные (вкл./выкл.)
Запрос, сформированный с помощью AF Query (немного модифицирован для привода к часам из мс)

Код: Выделить всё
SELECT TagName AS 'Наименование', CONVERT(DECIMAL(10,2), StateTime/3600000) AS 'Наработка, ч.'
FROM History
WHERE TagName LIKE 'ШАБЛОН_ДЛЯ_ПОИСКА'
AND wwRetrievalMode = 'ValueState'
AND Value = 1
AND wwStateCalc = 'Total'
AND wwCycleCount = 1
AND DateTime >= @DateTimeStart
AND DateTime <= @DateTimeEnd
ORDER BY TagName /*позволяет увидеть задвоение*/


Дает результат, в котором каждому тэгу соответствует 2 строки, причем иногда полностью идентичные, а иногда с разными данными (то есть DISTINCT не поможет).

В чем может быть дело?

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Пн авг 15, 2016 1:40 pm
Генератор зла
Код: Выделить всё
SELECT TagName AS 'Наименование', CONVERT(DECIMAL(10,2), StateTime/3600000) AS 'Наработка, ч.'
FROM History
WHERE TagName LIKE 'Sys%'
AND wwRetrievalMode = 'ValueState'
AND Value = 1
AND wwStateCalc = 'Total'
AND wwCycleCount = 1
AND DateTime >= DateAdd(mi, -100, GetDate())
AND DateTime <= DateAdd(mi, 90, GetDate())
ORDER BY TagName /*позволяет увидеть задвоение*/

Нет никакого удвоения

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 3:22 pm
NewOrdered
К сожалению, у меня задваиваются как системные тэги, так и и импортированные

inSQL.PNG
импортированные тэги
(31.35 КБ) Скачиваний: 0

inSQL2.PNG
системные тэги
(41.11 КБ) Скачиваний: 0

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 3:35 pm
Генератор зла
Может, дело в этом?
Naming Conventions for Tags
Tagnames may contain letters, digits, and special characters, where:
• letter = any letter as defined by the Unicode Standard. The Unicode definition of letters includes Latin characters from a through z and from A through Z, in addition to letter characters from other languages.

• digit = any numerical character

• special character = any graphics character except the following: characters whose ASCII table code is 0 through 32 -(non-graphic characters) and . + - * / \ = ( ) ` ~ ! ^ & @ [ ] { } | : ; ’ , < > ? “ space

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 3:42 pm
NewOrdered
Генератор зла писал(а):Может, дело в этом?
Naming Conventions for Tags
Tagnames may contain letters, digits, and special characters, where:
• letter = any letter as defined by the Unicode Standard. The Unicode definition of letters includes Latin characters from a through z and from A through Z, in addition to letter characters from other languages.

• digit = any numerical character

• special character = any graphics character except the following: characters whose ASCII table code is 0 through 32 -(non-graphic characters) and . + - * / \ = ( ) ` ~ ! ^ & @ [ ] { } | : ; ’ , < > ? “ space


Обратный слэш в имени тэга появляется при импорте супер-тэга. Я думаю, приведенное вами правило распространяется на имена обычных тэгов, имена супертэгов и имена членов супертэгов.
И к сожалению, оно не объясняет, почему "задваиваются" системные тэги, в имени которых нет обратного слэша.

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 3:46 pm
Генератор зла
Думаю, Вам надо отловить средствами SQL-сервера запрос, который в него реально попадает, может там будет подсказка.
Может, всё дело в версиях MSSQL и Historian. Я тестировал на старой-доброй SP4, но могу попробовать и на SP 2014 R2

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 4:35 pm
NewOrdered
Генератор зла писал(а):Думаю, Вам надо отловить средствами SQL-сервера запрос, который в него реально попадает, может там будет подсказка.
Может, всё дело в версиях MSSQL и Historian. Я тестировал на старой-доброй SP4, но могу попробовать и на SP 2014 R2


Да, вы правы, в профайлере видно, что при нажатии кнопки execute в MSSQLMS, а также при запросе из AF Query и из самописной клиентской программы серверу отправляется по ДВА идентичных запроса.
Почему это так и как это влияет на результат пока не понятно.

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 4:49 pm
NewOrdered
Пардон, попутал. Двойные запросы в профайлере это на самом деле разные события: SQL:BatchStarted и SQL: BatchCompleted. То есть с передаваемыми серверу запросами все в порядке.
Значит дело в том как сам InSQL формирует результат запроса.

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Вт авг 16, 2016 6:44 pm
Генератор зла
Режьте запрос построчно :) Начиная с wwVersion

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Ср окт 12, 2016 3:16 pm
NewOrdered
Генератор зла писал(а):Режьте запрос построчно :) Начиная с wwVersion

Воспользовался вашим советом. Начал с параметра Value: убрал его из запроса. получил вообще интересный результат.

Запрос на сутки:

Код: Выделить всё
SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = '20161011 9:00:00.000'
SET @EndDate = '20161012 9:00:00.000'
SET NOCOUNT OFF
SELECT History.TagName AS 'Наименование', vValue as 'Состояние', CONVERT(DECIMAL(10,2), StateTime/3600000) AS 'Наработка, ч.'
FROM History
WHERE History.TagName IN ('M3_M3\On')
AND wwRetrievalMode = 'ValueState'
/*AND Value = 1*/
AND wwStateCalc = 'Total'
AND wwCycleCount = 1
AND wwVersion = 'Latest'
AND DateTime >= @StartDate
AND DateTime <= @EndDate


Результат 3 строки

Код: Выделить всё
M3_M3\On      1   24,00
M3_M3\On    0   10,05
M3_M3\On    1   1,85


Первая строка - явно неправда.
Вторая - ближе к правде, была остановка

Третья строка - еще одно состояние "1"???

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Ср окт 12, 2016 3:36 pm
NewOrdered
Вывод даты и времени

Код: Выделить всё
11.10.2016 9:00:00   M3_M3\On   1   24,00   TOTAL
12.10.2016 9:00:00   M3_M3\On   0   10,05   TOTAL
12.10.2016 9:00:00   M3_M3\On   1   1,85   TOTAL


Хотя при значении системного параметра TimeStampRule = 1 должно выводиться дата время конца запрошенного интервала.

Чую, что дело идет к переустановке :)

Re: "Задвоение" тэгов в результате запроса (InSQL 9)

СообщениеДобавлено: Пт окт 14, 2016 4:13 pm
NewOrdered
Проблема решена. Невнимательно читал букварь.
В условии отбора по дате должно быть одно строгое и одно нестрогое неравенство.

Код: Выделить всё
AND DateTime > @StartDate

Код: Выделить всё
AND DateTime <= @EndDate


В таком случае сервер возвращает корректные данные.