【问题标题】:MDX for duration and time of dayMDX 持续时间和一天中的时间
【发布时间】:2012-01-29 11:48:18
【问题描述】:

我正在创建一个数据仓库来存储用户会话数据。我当前的星型架构如下所示:

session_fact

  • session_id
  • user_id
  • session_duration
  • date_id(参考 date_dimension)
  • time_if_day_id(参考 time_of_day_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

有什么想法吗?我很高兴按照建议重构架构,我只是不知道该怎么做。

感谢您阅读本文。

拍拍

【问题讨论】:

    标签: mdx data-warehouse


    【解决方案1】:

    如果您有必要的硬件资源(磁盘空间),则可以通过创建定期快照事实表轻松解决该问题。谷物将是每小时一次,因此您将记录该小时处于活动状态的每个会话。这将极大地简化查询以按小时提取活动会话...

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

    【讨论】:

    • 感谢 iPolvo。这是我们迄今为止提出的解决方案,但我们每年要处理 5 亿条记录,平均会话持续时间为 4 小时。并且磁盘空间目前是有限的——我们只是 dw 的新手,ew 必须在我们完全投入之前证明这一点。我们考虑过某种汇总过程,它只为我们提供过去一个月的小时粒度。您认为复杂的 MDX 查询“可能”解决我们的问题吗?
    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多