1

我需要知道计算加权平均值的时间维度期间的天数。我在计算度量中使用以下表达式来获取当前维度成员中的天数:

Count(
    Descendants(
        [Date].[Calendar].CurrentMember,
        [Date].[Calendar].[Date Key]
    )   
)

这适用于所有向下钻取情况,但当我有过滤器时,它不适用于总计。我怀疑 CurrentMember 在这种情况下不起作用。它总是返回我数据中的总天数。为了说明,使用上述公式的度量在 BIDS 中汇总如下

在 BIDS 中浏览多维数据集

因为我的事实数据始于 1984 年,时间维度有 11100 天。如何更改公式以便在聚合中考虑过滤器?用户可以深入到日级别。这是 Excel 数据透视表:

在 Excel 中浏览多维数据集

4

2 回答 2

0

如果您需要从 [Date].[Calendar].[Date Key] 级别过滤成员,您可以将后代结果与实际过滤器相交>

WITH 
  MEMBER [Measures].[a] AS 
    Count
    (
      Intersect
      (
        Descendants
        (
          [Date].[Calendar].CurrentMember
         ,[Date].[Calendar].[Date]
        )
       ,Filter
        (
          [Date].[Calendar].[Date].MEMBERS
         ,
          ([Measures].[Sales Amount],[Date].[Calendar].CurrentMember) > 10000
        )
      )
    ) 
SELECT 
  {[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS
 ,{[Measures].[a]} ON COLUMNS
FROM [Adventure Works]
于 2013-07-24T08:01:22.293 回答
0

我相信这是“计算成员的多选问题”的经典案例。我在这里找到了一个很好的总结。我有一个适用于 Excel 的解决方案。它不会在 BIDS 中计算正确的总数,但在这种情况下这不是问题。

我使用以下动态集(这是多维数据集编辑器中计算选项卡上的脚本视图):

CALCULATE;     

CREATE MEMBER CURRENTCUBE.[Measures].[Days In Period Count]
AS Count(Existing [Filtered Date]), VISIBLE = 1  ; 

CREATE DYNAMIC SET CURRENTCUBE.[Filtered Date]
AS [Date].[Calendar].[Date Key] ; 

我的解释是 SSAS 通常会提前计算聚合,并且 [Date].[Calendar].CurrentMember 在用户向下钻取和过滤操作的上下文之外的总计级别上没有意义。通过使用动态集,我强制 SSAS 动态计算聚合。理论上的性能会受到影响,但是对于我的立方体大小,我并没有注意到太大的差异。

然后 BIDS 显示以下总数 - 与上面相比没有变化:

在 BIDS 中浏览

但 Excel 具有仅反映过滤日期坐标的正确总计(在这种情况下,仅 2012 年第一季度和 2013 年全年):

在此处输入图像描述

于 2013-07-24T14:39:48.247 回答