Kibana Canvas es sql Запрос таблицы данных для выбора самых последних записей с учетом нескольких условий - PullRequest
0 голосов
/ 09 января 2020

Мне нужна помощь в создании запроса для заполнения доски состояния сотрудников с использованием таблицы данных холста Kibana. Индекс ES (prox-reader- *) получает журналы от устройства чтения значков, которое отправляет события, когда сотрудник входит или выходит из системы. Идея заключается в том, что на панели состояния должен отображаться только список сотрудников, которые в настоящее время присутствуют. Моя цель - получить что-то вроде этого:

|   Employee   |    Time In    | 
--------------------------------
|     Bob      |    8:00 AM    | 
|     Alice    |    8:03 AM    | 
|     Jim      |    8:06 AM    |

Я могу написать запрос, который создает таблицу данных о последних событиях входа в систему (см. Ниже), но я не знаю, как добавить logi c, чтобы в списке отображался только самый последний случай входа сотрудника. И как мне избежать перечисления сотрудников, которые с тех пор вышли из системы?

filters
| essql
  query="SELECT
    full_name AS Employee,
    (\"@timestamp\" - INTERVAL 5 HOUR) AS Time
    FROM \"prox-reader-*\"
    WHERE \"reader\" LIKE 'Entry Door Reader'
    AND \"event\" LIKE '8'
    "
| mapColumn "Time" fn={getCell "Time" | formatdate format="hh:mm A"}
| table perPage=15
| render

Приведенный выше код приводит к такой таблице:

|   Employee   |     Time      | 
--------------------------------
|     Bob      |    8:00 AM    |
|     Alice    |    8:03 AM    |
|     Jim      |    8:06 AM    |
|     Jim      |    10:06 AM   |
|     Bob      |    11:15 AM   |

Значение «reader» может быть несколько разных вещей, но мне просто интересно, если они входили в здание или выходили из него ... поэтому значение может быть «Считыватель входной двери» или «Считыватель выходной двери». Поле 'event' определяет, были ли они успешными ... '8' - это успешный вход / выход, но существует множество других кодов для различных типов отказов.

Как мне написать запрос es sql, который предоставляет список всех сотрудников, которые прошли регистрацию, которые с тех пор не вышли из системы, и который смотрит только на события за последние 10 часов? (Причина, по которой я хочу ограничить его последними 10 часами, заключается в том, что в случае, если сотрудник забудет выполнить разметку в конце дня, на следующий день мы удалим все ложные срабатывания за день до этого.)

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...