【问题标题】:List Dimension Members if selected date falls between Start Date and End Date in fact records SSAS MDX如果所选日期介于实际记录 SSAS MDX 的开始日期和结束日期之间,则列出维度成员
【发布时间】:2014-07-16 17:58:21
【问题描述】:

我有一个包含发票行项目的事实表,由于这些行项目是订阅,因此涉及开始日期和结束日期

LineItem Customer       Product         OrderDate       StartDate       EndDate
1        Customer A     Product A       1/1/2013        1/1/2013        3/1/2013
2        Customer A     Product B       1/1/2013        1/1/2013        4/1/2013
3        Customer B     Product A       1/1/2013        2/1/2013        6/1/2013

客户需要 Excel(数据透视表)中选定日期的活跃客户的列表。他们想要选择一个日期,如果该日期介于任何发票行项目记录的开始日期和结束日期之间,则应显示客户。例如:

如果选择了“2013 年 1 月 5 日”,则客户列表应返回 (LineItem: 1, 2): 客户A

如果选择“2/10/2013”​​,则客户列表应返回 (LineItem: 1,2,3): 客户 A 客户 B

如果选择了“2013 年 5 月 15 日”,则客户列表应返回 (LineItem: 3): 客户 B

接下来,客户也想按产品过滤,所以:

如果选择了“2013 年 3 月 20 日”并选择了产品 A,则客户列表应返回 (LineItem: 3): 客户 B

在 SQL 中这很容易:

Select Distinct Customer from Fact where @SelectedDate between StartDate and EndDate

我不确定如何在 SSAS 中解决这个问题,以及如何处理“选定日期”中的问题,这应该是另一个维度吗?如果是这样,它与事实表有何关系?

或者这可以通过其他方式在 Excel/PowerPivot 端完成吗?

此外,我最初的方法是创建一组命名客户 - 但我不确定如何根据日期范围等创建它。

任何帮助将不胜感激! 谢谢

【问题讨论】:

  • 开始和结束日期总是一个月的第一天吗?
  • 不,它们最多可以相隔 485 天。
  • 我的问题更针对出现在 StartDate 和 EndDate 中的不同日期的数量。是否只有一个月的第一天?在这种情况下,对于三年的数据,我们将只有 36 个不同的条目。但是,如果每一天都能出现,我们已经有超过 1000 个不同日期的三年数据。
  • 每天都会出现。我知道如果我们只有一月初会容易得多。 如果开始和结束日期是月份而不是日期,您打算如何处理这种情况?我在想我们可以创建一个库存类型的无事实事实表,其中包含每个月订阅等的记录。
  • 这也是我的想法。

标签: sql ssas mdx powerpivot


【解决方案1】:

如果你会写MDX,那么你可以这样做@ 和 @SelectedDate 是一个匹配日期键格式的字符串:

SELECT {}
       ON COLUMNS,
       [Customer].[Customer Name].Members
       ON ROWS
  FROM [Cube]
 WHERE (null : StrToMember('[Start Date].[Date].[' + @SelectedDate + ']'))
       *
       (StrToMember('[End Date].[Date].[' + @SelectedDate + ']'): null)

WHERE 子句是两组的叉积:一组开始日期包含从出现在维度中的第一个日期到选定日期的所有日期,一组结束日期包含从选定日期到选定日期的所有结束日期立方体中的最后一个。

但是,我认为用户不可能让 Excel 以某种方式运行这种类型的语句,除非通过 VBA 或 Excel 插件解决方案。我认为这应该是可能的,但没有这方面的经验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多