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