Как работает интервал опроса для статистики сеанса?

#analytics

#аналитика

Вопрос:

Я использую программное обеспечение (HPE ALM, но здесь это не важно), которое отображает ежедневные пики использования лицензии. Токен лицензии используется для каждого сеанса и освобождается в конце сеанса. И все сеансы сохраняются в таблице истории сеансов (на MS SQL Server).

Когда я запускаю такого рода запросы:

 SELECT TOP 1 count(*) as CountSimultaneous
FROM td.SESSIONS_HISTORY T1, td.SESSIONS_HISTORY T2
WHERE td.SESSIONS_HISTORY.CLIENT_TYPE = 'Application Lifecycle Management Client UI'
and T1.START_TIME between T2.START_TIME and T2.END_TIME
/* Add here the start/end dates */
GROUP BY T1.SESSION_ID
ORDER BY CountSimultaneous DESC;
  

Цифры немного отличаются от того, что я получаю на вкладке Использование лицензий (мой пик на 10-20 выше).

По словам хорошо информированного пользователя, разница связана с тем, что задействован некоторый интервал опроса.

Как работает подход с интервалом опроса? Некоторые выборки берутся случайным образом из таблицы истории сеансов. Например, топ-10 сеансов между (START_TIME — x — 5 минут) и (END_TIME — x); когда x изменяется за рассматриваемый период времени (вчера, на прошлой неделе, в прошлом месяце и т.д.).

Я не заинтересован в получении тех же результатов, что и поставщик. Цель состоит в том, чтобы понять эту концепцию, которая, по-видимому, используется в других инструментах (Analytics, LoadRunner и т. Д.).

Ответ с примером псевдокода / SQL будет высоко оценен (даже если он взят из другого инструмента).

Комментарии:

1. Я не буду предоставлять вам SQL, но я укажу, что единственный способ получить тот же пик, что и у поставщика, — это сопоставить вашу частоту дискретизации с их частотой.

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

Ответ №1:

Слишком много работы, чтобы нарисовать картинку, но давайте предположим, что у вас есть (time, session count) данные, которые выглядят следующим образом:

 (0, 10)
(1, 10)
(2, 10)
(3, 50)
(4, 10)
(5, 10)
  

Если ваш поставщик измеряет каждую секунду, он увидит всплеск 50 при time = 3.

Если вы выполняете выборку или запрос каждые пять секунд, вы увидите пиковое значение 10. Вы пропустите пик в 50.

Комментарии:

1. Для меня это не совсем понятно, потому что входные данные — это не (время, количество сеансов), а (дата начала сеанса, дата окончания сеанса). Он не поступает из базы данных временных рядов или меры, принятой в поток данных, такой как системная метрика.

2. Я мог бы сделать это данными временных рядов. Если я запрашиваю ОТДЕЛЬНОЕ НАЧАЛО, СЧИТАЙТЕ (*) Я получаю обратный отсчет до миллисекунды. Агрегирование начинается с подсчета между диапазонами дат.