2012-02-22 172 views
2

我有一个维度为“Company”的成员为“CompanyName”,度量组为“CompanyMembership”,其度量为“StartDate”和“EndDate”。我如何计算一个日期或月份或年份的会员数量?我也有一个用户层次结构Date.Calendar(就像Adventure Works中的一样)。MDX计算量度 - 开始日期和结束日期之间的计数

如果当前会员的日期代表一个月,会员价值将是该月的第一天,我只关心会员资格是否涵盖当天。如果一年的会员价值将成为一年中的第一天,我只关心该会员资格是否涵盖当天。

这里是我想什么一些伪代码: SUM(IF(Measures.StartDate < = Date.Calendar.Value < = Measures.EndDate),那么1否则为0)

我想保持起始日期和EndDate放在同一个事实表行中(没有分成两行 - 一个是StartDate,另一个是EndDate),但是如果没有其他方法,它会愿意更改模式。

我该怎么写这个表达式?

回答

0

我没有在您的当前模式中执行此操作的方法,但您应该真的考虑将Membership设置为时间维度。那会回答“这个公司是这个日子的成员吗?”更容易。

+0

您的意思是在范围内为每个日期使用单个日期,而不是像这样的范围:如果范围是2012年1月1日 - 2012年12月31日,那么2012年1月1日的行,1/2/2012,...,12/31/2012?如果是这样,这是一个好主意,但由于表格的大小和广泛的日期范围,我认为它不适合我。 – 2012-02-22 18:23:09

+0

这就是主意。不过,你不应该创造一个新的事实表。如果SSAS无法根据事实表中的一对日期构建时间维度,则可以创建一个视图来进行扩展。我建立一个立方体已经有几年了,所以我不确定最优雅的方法。 – Simon 2012-02-22 18:41:31

+0

使用视图听起来像是一个不错的选择。我担心空间的使用,因为我拥有多次具有相同类型的关系的表格有100,000,000多行,日期范围为10年以上(例如,成员也有会员资格)。我希望得到一个mdx函数来节省空间,但是然后性能可能会使它无法使用。我将测试视图并回传。谢谢。 – 2012-02-22 18:54:32

相关问题