В моей системной базе данных есть таблица заявок, в которой есть столбец EventDate, столбец значения события (ON и OFF) и 4 столбца, которые будут показателями (суммой) в моей таблице фактов. Эти заявки будут использованы для создания таблицы фактов, которая будет использоваться в 2 отчетах в разных контекстах.
Первый отчет будет общим контекстом. Сумма мер за период даты. (От DeginDate до EndDate).
Второй отчет аналогичен, также будет иметь BeginDate to EndDate, но будет мерами в контексте подпериода. Эти подпериоды ограничиваются возникновением последовательных событий (ВКЛ / ВЫКЛ). Период билетов с ВКЛ, следующий период ВЫКЛ, следующий период ВКЛ ...
Итак, что я делаю в таблице фактов: я создаю еще один столбец дат в моем факте таблица, связанная с подпериодом, который будет датой первого события подпериода (если мой билет включен, первая дата первого билета будет включена, если мой билет выключен, будет датой первого тикета OFF).
- Запросы в кубе в первом контексте будут использовать только «eventDate» в фильтре WHERE.
- Запросы в кубе во втором контексте также будут использовать 'eventDate' в фильтре WHERE, но будут группироваться по 'beginSubPeriod' ON ROWS.
Моя таблица фактов:
Event eventDate beginSubPeriod measure1 measure2 measure3 measure4
ON 10:00 10:00 5 13 14 17
ON 10:32 10:00 7 11 8 95
ON 10:47 10:00 3 18 44 32
ON 10:52 10:00 4 25 31 27
OFF 10:57 10:57 2 11 25 87
OFF 11:21 10:57 1 13 21 63
OFF 11:28 10:57 1 19 28 69
ON 11:45 11:45 4 12 45 32
ON 11:59 11:45 9 14 62 44
Мне не очень нравится мой подход, потому что я потерял больше времени в своем ETL, поместив столбец 'beginSubPeriod' во все мои строки.
Я не знаю, было ли хорошее решение. Этот подход вы бы использовали на самом деле к запросам таблиц / кубов? Или другой?
С наилучшими пожеланиями, Луис