Как работает импорт из БД?

Стартовая страница Форумы Понять, как работает ПО Как работает импорт из БД?

Помечено: ,

Просмотр 15 сообщений - с 1 по 15 (из 18 всего)
  • Автор
    Сообщения
  • #21298
    Nexis
    Участник

    Создаю Линию Связи.
    Добавляю Канал Подключения. DB Import.
    В Коммуникаторе настраиваю подключение к БД. Хост. Логин. Пароль. БД.
    Во вкладке «Извлечение данных» ввожу простой «select * from table;»
    Нажимаю кнопку «Создать каналы». Создается один какой-то непонятный канал, вместо подгрузки всех доступных сущностей из таблицы БД.

    • Эта тема была изменена 10 месяцев, 1 неделя назад от Nexis.
    #21300
    Nexis
    Участник

    Или Добавляется всего 100 но тоже непонятных каналов с непонятным именем вида Tag #, где # от 1 до 100.
    Где значения полей сущностей из БД?
    Как подгрузить вообще все сущности из таблицы?

    #21301
    Mikhail
    Модератор

    Добрый день!
    Приложение Администратор не подключается к БД, соответственно не извлекает каких-либо сущностей из БД. Поэтому наименования создаваемых каналов имеют вид Tag N. Переименовать каналы необходимо самостоятельно.

    #21303
    Nexis
    Участник

    Окей. Как осущесвляется привязка к полям сущностей из БД полей сущностей входных каналов КП, для извлечения значений?
    Как импортировать >100 сущностей?

    #21306
    Romiros
    Участник

    Насколько помню, лучше писать конкретный запрос поля со значением из БД (а не select *) и указывать в настройках драйвера точное количество тегов. В таком варианте всё работает.

    #21309
    Mikhail
    Модератор

    Драйвер Импорт из БД получает из базы текущие значения.
    Из результата запроса берётся 1-я строка, а затем полученные поля раскладываются по тегам КП.
    Да, select * лучше заменить на выбор конкретных полей.

    #21312
    Nexis
    Участник

    у меня это целая таблица текущих значений.
    каждая строка со своими полями — текущее значение…
    текущий драйвер в такое не умеет?

    #21318
    Mikhail
    Модератор

    Можете сделать скриншот данных, чтобы была понятна их структура?

    #21327
    dima
    Участник

    Добрый день, у меня реализовано так, возможно есть другой оптимальный запрос, пока такой запрос для вывода.
    Суть вывода, отобразить последний статус оборудования, ищет запрос значение по максимальному 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 |
    +———+—————+———-+——-+

    #21328
    Mikhail
    Модератор

    Добрый день!
    Если пост выше — это вопрос, то уточните сам вопрос.

    #21329
    dima
    Участник

    Mikhail, здравствуйте, это не вопрос был.

    #21330
    Mikhail
    Модератор

    Добрый день!

    OK.
    Возможно, имеет смысл создать хранимую процедуру в БД, чтобы в драйвере импорта указать только вызов этой процедуры.

    #21331
    Nexis
    Участник

    SQL-запросами мой случай к сожалению, не решается.
    Только переписать драйвер импорта БД.
    Ну и при начальном импорте тоже «Tag #» решается тем же путём…

    Формат таблички, откуда идёт выборка примерно такой:
    Id | Index | Name | Value
    daef0d8a-c4b8-41af-8293-6d1509f7748b | 318 | val319 | 2861.87080815573

    И таких записей ну, так, тысяч 10-20-30…
    Index пришлось добавить для сопоставления с номерами сигналов

    Писать громадные, громоздкие SQL-запросы дело неблагодарное…
    Так что, пришлось переписать логику.

    Попутно вопрос.
    Для чего нужны объекты TagGroup?
    Что с ними можно делать в пользовательском интерфейсе? Можно ли теги группировать и выводить одним объектом на графический план?

    #21332
    Mikhail
    Модератор

    TagGroup задаёт отображение данных КП в Коммуникаторе, и не влияет на работу Сервера или Вебстанции.

    Чтобы использовать драйвер импорта без доработок, необходимо написать хранимую процедуру, которая вернёт текущие данные в виде одной строки, которая содержит набор столбцов. Если значений много, то можно задать параметры этой процедуры для выбора диапазона.

    #21334
    Nexis
    Участник

    Окей.
    Какие тогда существуют механизмы функциональной группировки каналов, для обеспечения их совместной логики?

Просмотр 15 сообщений - с 1 по 15 (из 18 всего)
  • Вы должны авторизироваться для ответа в этой теме.