Максимальное количество людей на вебинаре единовременно

Автор Uunit, августа 13, 2019, 08:17:03 am

« предыдущая - следующая »

Uunit

Компания занимается вебинарами, единовременно может проходить порядка 10 вебинаров.
на каждом вебинаре более 100 уникальных пользователей.

Цель, на каждом канале высчитать пиковое значение пользователей.

На каждый канал свой csv файл.
В файлах есть столбцы "На вебинаре с" и "Досмотрел до"
Вижу два пути решения:
1) intervalmatch
2) Использовать цикл
--------------
1) С intervalmatch, завести интервал по минутам с 00:01 до 23:59, а потом по этому интервалу, дате и комнате, производить расчёт.
2) Завести цикл который будет каждую минуты высчитывать, был ли данный пользователь онлай в данный момент и так по кругу.
--------------

Подскажите, возможно есть какой то ещё вариант, куда проще или выбирая первый вариант я иду в верном направлении?

Uunit

Пошёл по первому пути, написал следующее:
Цитата: undefinedLET vStart      = Num(Time('07:00')*1440);
Let vEnd        = Num(Time('24:00')*1440);
LET vNumOfTime  = vEnd-vStart;

Time:
LOAD
 Time#($(vStart)+RowNo()-1) as TimeID AutoGenerate $(vNumOfTime);


Calendar:
LOAD
 TimeID as TimeID,
 Time#(Num(TimeID)/1440,'hh:mm') as Время
Resident Time;
DROP Table Time;

IntervalMatch (Время) Load [На вебинаре с],[Досмотрел до] resident Veb;

TimeID заполняется всё верно.
То есть 420, 421, 422 и т.д.
Но на этапе:
Цитата: undefinedTime#(Num(TimeID)/1440,'hh:mm') as Время
, почему то не хочет переводить в тип время.
По идее, должен обратно разделить на 1440, 420/1440=0,291666666666667, что по сути и есть 7:00
Что я упускаю?

Uunit

Нашёл свою ошибку.
ЦитироватьTime:
LOAD
 Time#($(vStart)+RowNo()-1) as TimeID AutoGenerate $(vNumOfTime);
То что выделил жирным было лишнее.
Тему можно удалить)))

Uunit

Ещё вопрос.
Макс число людей на вебинаре единовременно всё считается.
Цель: указать пиковое время.
Но пиковое время может быть не уникальным.
Например:
18:48 было 353 человека
18:59 было 353 человека
19:31 было 353 человека,
а в остальное время людей было меньше.

Задача, вывести первое пиковое время и последнее в формате hh:mm-hh:mm

Ниже привёл формулу, всё работает и показывает 18:48
Цитата: undefinedFirstSortedValue (distinct Время,-Aggr(Count([Телефон]),Время,Комната,[Дата.autoCalendar.Date]))
Но вывести 19:31 я не могу, потому что формула выше. без distinct оставляет ячейку пустой, так как значение не уникальное.

П.С. Через Concat выводить все даты тоже не вариант, иногда число не уникальных значений бывает больше 30.

Вопрос: можно ли как то сделать двухуровневую сортировку, т.е. :
1) От больше к меньшему по Count([Телефон])
2) От большего к меньшему по Время

Uunit

Проблему решил.
Вдруг кому пригодится
Цитата: undefinedIF(
 FirstSortedValue (distinct Время,-Aggr(Count([Телефон]),Время,Комната,[Дата.autoCalendar.Date]))
 =
 FirstSortedValue ( Время, -Aggr (If (Count([Телефон]) = Max (TOTAL <Комната,[Дата.autoCalendar.Date]> Aggr (Count([Телефон]), Комната, Время,[Дата.autoCalendar.Date])), Время), Комната, Время,[Дата.autoCalendar.Date]))
  ,       // Истина
        Time(FirstSortedValue (distinct Время,-Aggr(Count([Телефон]),Время,Комната,[Дата.autoCalendar.Date])))
        , // Ложь
            Time(FirstSortedValue (distinct Время,-Aggr(Count([Телефон]),Время,Комната,[Дата.autoCalendar.Date]))) // Время первого пика
        &'-'&
            Time(FirstSortedValue ( Время, -Aggr (If (Count([Телефон]) = Max (TOTAL <Комната,[Дата.autoCalendar.Date]> Aggr (Count([Телефон]), Комната, Время,[Дата.autoCalendar.Date])), Время), Комната, Время,[Bizon.Дата.autoCalendar.Date]))) // Время последнего пика
  )

admin

Добрый день.
Коллега, поздравляю ;)
Думаю, что Ваша тема сможет помочь многим если к ней еще будет и фрагмент данных или модель для решения этой задачи ))