Как узнать общее количество активных событий в любую дату на основе сохраненных дат начала и окончания? в Табло

В имеющемся у меня наборе данных хранятся события с их ID, start date и end date. Образец таких данных можно взять как

Event Id    Start Date  End Date
1   01-01-2020  05-01-2020
2   02-01-2020  07-01-2020
3   05-01-2020  08-01-2020
4   07-01-2020  10-01-2020

Я хочу, чтобы на любую дату (начиная с первой даты начала и заканчивая последней датой окончания), сколько там было живых событий. Событие считается живым как в start, так и в end даты. Пример вывода может быть таким.

Date    number of live events
1 January 2020  1
2 January 2020  2
3 January 2020  2
4 January 2020  2
5 January 2020  3
6 January 2020  2
7 January 2020  3
8 January 2020  2
9 January 2020  1
10 January 2020 1
11 January 2020 0

Как мне сделать это в таблице?


person AnilGoyal    schedule 12.11.2020    source источник
comment
Любое лучшее решение для этого приветствуется! :)   -  person AnilGoyal    schedule 12.11.2020


Ответы (1)


Эту проблему можно решить в виде таблицы, действуя следующим образом.

Шаг 1. Выберите столбцы start date и end date и разверните их. (Примечание: лучше изменить имена столбцов перед их поворотом на "Начало" и "Конец". Это даст вам значения Start и End в одном столбце и даты в другом. Назовите эти два столбца соответственно type и Dates соответственно. )

Шаг 2 Добавьте одно вычисляемое поле, скажем dummy, со следующими вычислениями:

IIF([type]='Start', 1,-1)

Шаг 3 Начните строить представление, Dates до строк (точная дата, незаметно), щелкните его правой кнопкой мыши и установите флажок «Показать отсутствующие значения». Добавить сумму (фиктивную) к тексту. Добавьте в него running total расчет таблицы. Вы получите такие результаты.

Dates   
01-01-2020  1
02-01-2020  2
03-01-2020  2
04-01-2020  2
05-01-2020  2
06-01-2020  2
07-01-2020  2
08-01-2020  1
09-01-2020  1
10-01-2020  0

Шаг 4. Если вы внимательно присмотритесь, события, закрывающиеся в определенные даты, не учитываются в представлении. Итак, добавьте еще одно вычисляемое поле Date2 со следующим расчетом

IIF([type]='End', DATEADD('day', 1, [Dates]), [Dates])

Шаг 5 Действуйте точно так же, как на шаге 3, за исключением того, что используйте поле Date2 вместо Dates. Результат будет таким, каким желаете.

Day of dates2   Running Sum of dummy
1 January 2020  1
2 January 2020  2
3 January 2020  2
4 January 2020  2
5 January 2020  3
6 January 2020  2
7 January 2020  3
8 January 2020  2
9 January 2020  1
10 January 2020 1
11 January 2020 0

снимок экрана

введите описание изображения здесь

person AnilGoyal    schedule 12.11.2020