MDX 持续时间和一天中的时间

Posted

技术标签:

【中文标题】MDX 持续时间和一天中的时间【英文标题】:MDX for duration and time of day 【发布时间】: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

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

感谢您阅读本文。

拍拍

【问题讨论】:

【参考方案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 查询“可能”解决我们的问题吗?

以上是关于MDX 持续时间和一天中的时间的主要内容,如果未能解决你的问题,请参考以下文章

如何使数字显示为 hh:mm(持续时间,而不是一天中的时间)

Javascript中的日期差异(忽略一天中的时间)

使用 pandas 的滚动窗口计算一天中每个时间的平均值

如何使用 Swift 获取一天中的时间?

按一天中的时间分组数据

在 pandas 中以更快的方式分组一天中的时间