Найти пиковое время с историческими данными - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь в среднем определить, в какие часы дня самые активные пользователи приложения.Данные включают метку времени и идентификаторы.Я конвертирую метку времени в столбец в виде даты (M / d / yy), а в другой столбец - в час (ЧЧ: мм), чтобы я мог находить средних пользователей по времени по часам.

Например, если 17.02.2009 в 15:00 есть 6 пользователей, а 18.02.2009 в 15:00 - 5 пользователей и 19.02.2009 в 15:00там 4 пользователя, среднее число пользователей в 15:00 будет 5. Я хочу запросить таблицу, в которой каждый раз с 0:00 до 23:45 по 15 минутным бинам, со средним числом пользователей для каждого времени.Это то, что я пытался до сих пор, но когда я вычисляю его вручную, запрос не показывает правильные результаты:

Table
| where timestamp > datetime(2018-5-23)
| extend hourNum= format_datetime(bin(timestamp, time(15m)),"HH:mm")
| extend Date= format_datetime(timestamp, "M/d/yy") 
| project timestamp, ID , Date, hourNum
| summarize avgUsers= (dcount(ID)*1.0)/dcount(Date) by hourNum

Буду признателен за любую помощь, спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019

Это может быть вызвано тем фактом, что dcount является приблизительным значением фактического отдельного счета согласно этому документу :

Синтаксис

summarize dcount(Expr [, Accuracy])

Аргументы

Expr: выражение, которое будет использоваться для расчета агрегации.

Точность, если указана, контролирует баланс междускорость и точность (см. примечание).

  • 0 = наименее точный и быстрый расчет.Ошибка 1,6%
  • 1 = значение по умолчанию, которое уравновешивает точность и время расчета;ошибка около 0,8%.
  • 2 = точный и медленный расчет;ошибка около 0,4%.
  • 3 = очень точный и медленный расчет;ошибка около 0,28%.
  • 4 = супер точный и самый медленный расчет;ошибка около 0,2%.

Вы можете попробовать перейти с уровня точности 4, что должно приблизить вещи к ручным вычислениям.

В качестве альтернативы, вы можете попробовать использовать двойной summarize (еще медленнее, но точнее):

| summarize by ID, hourNum
| summarize count() by hourNum

Затем вы можете объединить ID и DateCount на hourNum и сделать деление.

В целом, я бы предложил пойтис более точным расчетом для простоты и достаточно хорошей точности.

...