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_monthtime_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 持续时间和一天中的时间的主要内容,如果未能解决你的问题,请参考以下文章