Расчет на каждый день индивидуально

Я только что создал таблицу, выглядящую так:

Таблица

Я сделал это, поместив временные группы и идентификаторы ChargingPoint-ID (LPNumber) как значения в таблицу (инструмент визуализации). Как видите, я считаю количество подключений к точке зарядки (LPNumber) за раз. Поэтому я наблюдаю несколько дней. Таким образом, с 00:00 до 00:14 (сгруппировано как 00:00 в строке 1) было выполнено в общей сложности 36 подключений за период времени в 31 день.

Моя проблема:

Подсчитываются только запуски соединений (очевидно, я использовал ConnectionStart Time), но я хочу подсчитать активные соединения. Таким образом, если предположить, что из 36 соединений, которые были установлены между 00:00 и 00:14, 10 соединений все еще активны в 00:15, строка 2 должна быть 10 + 25 = 35.

В качестве данных у меня есть время начала и время окончания соединений и, конечно же, LPNumber (идентификационный номер точки зарядки). У меня гораздо больше данных, но я думаю, что эти 3 столбца должны быть единственными важными.

Данные

У вас есть идеи, как это реализовать?


person NeedHelpWithEverything    schedule 27.11.2019    source источник


Ответы (1)


Если у вас есть такие данные (Table):

Start       End
00:00:00    00:14:00
00:10:00    00:20:00
00:20:00    00:30:00
00:22:00    00:40:00
00:31:00    00:50:00
00:00:00    01:00:00

И таблица временных интервалов (Window), подобная этой:

Start
00:00:00
00:15:00

Вы можете добавить вычисляемый столбец в Window, который подсчитывает строки в Table, продолжительность которых перекрывается Start + 14:59 min.

Col =
CALCULATE (
    COUNTROWS ( 'Table' );
    FILTER (
        'Table';
        'Table'[Start]
            < ( Window[Start_Window] + TIME ( 0; 14; 59 ) )
            && 'Table'[End] > Window[Start_Window]
    )
)

Если вам нужно создать таблицу Window, вы можете использовать эту формулу:

Window = GENERATESERIES(TIME(0;0;0);TIME(23;59;00);TIME(0;15;0))
person Karl Anka    schedule 27.11.2019
comment
Большое спасибо. Это именно то, что я искал! Я использую слайсер времени, который ссылается на «Таблицу» [ConnectionStart'], но когда я выбираю только один месяц, значения в вычисляемом столбце по-прежнему включают соединения за все время. Я попытался включить MIN('Table'[ConnectionStart]) и MAX('Table'[ConnectionStart]) в вашу функцию FILTER(), но это не сработало. - person NeedHelpWithEverything; 28.11.2019