【问题标题】:MDX Calculated Measure - counts between start and end datesMDX 计算度量 - 开始日期和结束日期之间的计数
【发布时间】:2012-02-22 16:48:59
【问题描述】:

我有一个维度“Company”,它有一个成员“CompanyName”和一个度量值组“CompanyMembership”,它有度量值“StartDate”和“EndDate”。如何计算某日、某月或某年拥有会员资格的公司数量?我还有一个用户层次结构 Date.Calendar(就像 Adventure Works 中的那个)。

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

这是我想要的一些伪代码: sum( if (Measures.StartDate

我想将 StartDate 和 EndDate 保留在同一事实表行中(不分成两行 - 一行使用 StartDate,另一行使用 EndDate)但如果没有其他方法,我愿意更改架构。

这个表达式怎么写?

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    我没有在您当前的架构中执行此操作的方法,但您确实应该考虑将成员资格设置为时间维度。这样就可以回答“这家公司在这个日期是会员吗?”容易得多。

    【讨论】:

    • 您的意思是对范围中的每个日期使用单个日期,而不是这样的范围:如果范围是 1/1/2012 - 12/31/2012,则为 1/ 2012 年 1 月,2012 年 1 月 2 日,...,2012 年 12 月 31 日?如果是这样,那是个好主意,但由于表格的大小和广泛的日期范围,我认为它对我不起作用。
    • 就是这样。不过,您不必制作新的事实表。如果 SSAS 无法根据事实表中的一对日期构建时间维度,那么您可以创建一个视图来进行扩展。建一个立方体已经好几年了,所以我不确定最优雅的方法。
    • 使用视图听起来是个不错的选择。我担心空间使用情况,因为我与具有 100,000,000+ 行和 10+ 年日期范围的表多次具有相同类型的关系(例如,成员也有成员资格)。我希望得到一个 mdx 函数来节省空间,但性能可能会使其无法使用。我将测试视图并回发。谢谢。
    • 使用视图效果很好。如果分区中的空间成为问题,我将尝试其他存储选项。谢谢西蒙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多