MDX для продолжительности и времени суток - PullRequest
0 голосов
/ 29 января 2012

Я создаю хранилище данных для хранения данных сеанса пользователя.Моя текущая звездная схема выглядит следующим образом:

session_fact

  • session_id
  • user_id
  • session_duration
  • date_id (ref date_dimension)
  • time_if_day_id (ref time_of_day_dimension)

date_dimension

  • date_id
  • квартал
  • месяц
  • date_of_month

time_of_day_dimension

  • time_of_day_id
  • hour_of_day
  • minute_of_hour

Факт сеанса свяжет с измерениями даты и времени дня, используя время начала сеанса.

Проблема: я быхотел бы создать запрос MDX, который возвращает «активные» сеансы для каждого часа дня.Например, в течение одного дня у нас могут быть следующие сеансы:

session id |start time |duration
session 1  |10am       |1hr
session 2  |10am       |2hr

Я хотел бы получить данные в этой форме:

time of day |active session count
10am        |2
11am        |1

Есть идеи?Я очень рад реструктурировать схему, следуя совету, я просто не знаю, как мне это сделать.

Спасибо, что прочитали это.

Пат

1 Ответ

0 голосов
/ 01 февраля 2012

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

SELECT
   [Measures].[Active Session Count] ON 0,
   (
      [Date].[Date].[Date].Members *
      [Time].[Hour].[Hour].Members 
   ) ON 1
FROM 
   [Cube]
...