Стартовая страница › Форумы › Понять, как работает ПО › Как работает импорт из БД?
- В этой теме 17 ответов, 5 участников, последнее обновление 2 года, 4 месяца назад сделано Mikhail.
-
АвторСообщения
-
24.11.2021 в 22:22 #21298NexisУчастник
Создаю Линию Связи.
Добавляю Канал Подключения. DB Import.
В Коммуникаторе настраиваю подключение к БД. Хост. Логин. Пароль. БД.
Во вкладке «Извлечение данных» ввожу простой «select * from table;»
Нажимаю кнопку «Создать каналы». Создается один какой-то непонятный канал, вместо подгрузки всех доступных сущностей из таблицы БД.- Эта тема была изменена 2 года, 5 месяцев назад от Nexis.
24.11.2021 в 22:28 #21300NexisУчастникИли Добавляется всего 100 но тоже непонятных каналов с непонятным именем вида Tag #, где # от 1 до 100.
Где значения полей сущностей из БД?
Как подгрузить вообще все сущности из таблицы?25.11.2021 в 15:43 #21301MikhailМодераторДобрый день!
Приложение Администратор не подключается к БД, соответственно не извлекает каких-либо сущностей из БД. Поэтому наименования создаваемых каналов имеют вид Tag N. Переименовать каналы необходимо самостоятельно.25.11.2021 в 16:10 #21303NexisУчастникОкей. Как осущесвляется привязка к полям сущностей из БД полей сущностей входных каналов КП, для извлечения значений?
Как импортировать >100 сущностей?26.11.2021 в 06:58 #21306RomirosУчастникНасколько помню, лучше писать конкретный запрос поля со значением из БД (а не select *) и указывать в настройках драйвера точное количество тегов. В таком варианте всё работает.
26.11.2021 в 16:00 #21309MikhailМодераторДрайвер Импорт из БД получает из базы текущие значения.
Из результата запроса берётся 1-я строка, а затем полученные поля раскладываются по тегам КП.
Да, select * лучше заменить на выбор конкретных полей.26.11.2021 в 16:52 #21312NexisУчастнику меня это целая таблица текущих значений.
каждая строка со своими полями — текущее значение…
текущий драйвер в такое не умеет?29.11.2021 в 13:07 #21318MikhailМодераторМожете сделать скриншот данных, чтобы была понятна их структура?
03.12.2021 в 10:24 #21327dimaУчастникДобрый день, у меня реализовано так, возможно есть другой оптимальный запрос, пока такой запрос для вывода.
Суть вывода, отобразить последний статус оборудования, ищет запрос значение по максимальному ID и IP, в конце считает количество статусов. Import из PostgreSQL.SELECT
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.60′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.61′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.62′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.63′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.64′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.65′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.66′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.67′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.68′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.69′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.70′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.71′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.72′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.73′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.74′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.75′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.76′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.77′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.78′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.79′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.80′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.81′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.82′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.83′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.84′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.85′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.86′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.87′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.88′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.89′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.90′) AND s_data.»date»>CURRENT_DATE),
(SELECT status FROM statistics.s_data WHERE id=(SELECT MAX(id) FROM statistics.s_data WHERE place_id=’10.3.33.91′) AND s_data.»date»>CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 1 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 3 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 4 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 5 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 6 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 7 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status = 255 AND s_data.»date» > CURRENT_DATE),
(SELECT count(status) FROM statistics.s_data WHERE status > 1 AND s_data.»date» > CURRENT_DATE)
FROM statistics.s_data ORDER BY
s_data DESC
LIMIT 1Текущие данные тегов КП
+———+—————+———-+——-+
| Сигнал | Наименование | Значение | Канал |
+———+—————+———-+——-+
| 1 | status | 1,000 | 501 |
+———+—————+———-+——-+
| 2 | status | 1,000 | 502 |
+———+—————+———-+——-+
| 3 | status | 4,000 | 503 |
+———+—————+———-+——-+
| 4 | status | 1,000 | 504 |
+———+—————+———-+——-+
| 5 | status | 1,000 | 505 |
+———+—————+———-+——-+
| 6 | status | 1,000 | 506 |
+———+—————+———-+——-+
| 7 | status | 1,000 | 507 |
+———+—————+———-+——-+
| 8 | status | 1,000 | 508 |
+———+—————+———-+——-+
| 9 | status | 5,000 | 509 |
+———+—————+———-+——-+
| 10 | status | 5,000 | 510 |
+———+—————+———-+——-+
| 11 | status | 1,000 | 511 |
+———+—————+———-+——-+
| 12 | status | 5,000 | 512 |
+———+—————+———-+——-+
| 13 | status | 1,000 | 513 |
+———+—————+———-+——-+
| 14 | status | 1,000 | 514 |
+———+—————+———-+——-+
| 15 | status | 1,000 | 515 |
+———+—————+———-+——-+
| 16 | status | 1,000 | 516 |
+———+—————+———-+——-+
| 17 | status | 1,000 | 517 |
+———+—————+———-+——-+
| 18 | status | 1,000 | 518 |
+———+—————+———-+——-+
| 19 | status | 1,000 | 519 |
+———+—————+———-+——-+
| 20 | status | 1,000 | 520 |
+———+—————+———-+——-+
| 21 | status | 1,000 | 521 |
+———+—————+———-+——-+
| 22 | status | 1,000 | 522 |
+———+—————+———-+——-+
| 23 | status | 4,000 | 523 |
+———+—————+———-+——-+
| 24 | status | 1,000 | 524 |
+———+—————+———-+——-+
| 25 | status | 5,000 | 525 |
+———+—————+———-+——-+
| 26 | status | 1,000 | 526 |
+———+—————+———-+——-+
| 27 | status | 5,000 | 527 |
+———+—————+———-+——-+
| 28 | status | 1,000 | 528 |
+———+—————+———-+——-+
| 29 | status | 1,000 | 529 |
+———+—————+———-+——-+
| 30 | status | 5,000 | 530 |
+———+—————+———-+——-+
| 31 | status | 1,000 | 531 |
+———+—————+———-+——-+
| 32 | status | 1,000 | 532 |
+———+—————+———-+——-+
| 33 | count | 637,000 | 533 |
+———+—————+———-+——-+
| 34 | count | 1,000 | 534 |
+———+—————+———-+——-+
| 35 | count | 65,000 | 535 |
+———+—————+———-+——-+
| 36 | count | 282,000 | 536 |
+———+—————+———-+——-+
| 37 | count | 20,000 | 537 |
+———+—————+———-+——-+
| 38 | count | 5,000 | 538 |
+———+—————+———-+——-+
| 39 | count | 18,000 | 539 |
+———+—————+———-+——-+
| 40 | count | 391,000 | 540 |
+———+—————+———-+——-+03.12.2021 в 17:15 #21328MikhailМодераторДобрый день!
Если пост выше — это вопрос, то уточните сам вопрос.06.12.2021 в 10:01 #21329dimaУчастникMikhail, здравствуйте, это не вопрос был.
06.12.2021 в 14:30 #21330MikhailМодераторДобрый день!
OK.
Возможно, имеет смысл создать хранимую процедуру в БД, чтобы в драйвере импорта указать только вызов этой процедуры.07.12.2021 в 15:07 #21331NexisУчастникSQL-запросами мой случай к сожалению, не решается.
Только переписать драйвер импорта БД.
Ну и при начальном импорте тоже «Tag #» решается тем же путём…Формат таблички, откуда идёт выборка примерно такой:
Id | Index | Name | Value
daef0d8a-c4b8-41af-8293-6d1509f7748b | 318 | val319 | 2861.87080815573И таких записей ну, так, тысяч 10-20-30…
Index пришлось добавить для сопоставления с номерами сигналовПисать громадные, громоздкие SQL-запросы дело неблагодарное…
Так что, пришлось переписать логику.Попутно вопрос.
Для чего нужны объекты TagGroup?
Что с ними можно делать в пользовательском интерфейсе? Можно ли теги группировать и выводить одним объектом на графический план?07.12.2021 в 15:24 #21332MikhailМодераторTagGroup задаёт отображение данных КП в Коммуникаторе, и не влияет на работу Сервера или Вебстанции.
Чтобы использовать драйвер импорта без доработок, необходимо написать хранимую процедуру, которая вернёт текущие данные в виде одной строки, которая содержит набор столбцов. Если значений много, то можно задать параметры этой процедуры для выбора диапазона.
07.12.2021 в 19:59 #21334NexisУчастникОкей.
Какие тогда существуют механизмы функциональной группировки каналов, для обеспечения их совместной логики? -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.