Ssas 计算时间维度节点中的天数-总计

Ssas 计算时间维度节点中的天数-总计,ssas,aggregate,mdx,cube,Ssas,Aggregate,Mdx,Cube,我需要知道计算加权平均数的时间维度期间的天数。我在计算度量中使用以下表达式来获取当前维度成员中的天数: Count( Descendants( [Date].[Calendar].CurrentMember, [Date].[Calendar].[Date Key] ) ) 这适用于所有向下钻取的情况,但当我有一个过滤器时,它不适用于总计。我怀疑CurrentMember在这种情况下不起作用。它总是返回我的数据中的总天数。 为了说明这一点,

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

Count(
    Descendants(
        [Date].[Calendar].CurrentMember,
        [Date].[Calendar].[Date Key]
    )   
)
这适用于所有向下钻取的情况,但当我有一个过滤器时,它不适用于总计。我怀疑CurrentMember在这种情况下不起作用。它总是返回我的数据中的总天数。 为了说明这一点,采用上述公式的度量值在标书中汇总如下

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


如果需要从[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]

我认为,这是“有计算成员的多选问题”的典型案例。我发现了一个很好的总结。我有一个在Excel中工作的解决方案。它不会计算投标中的正确总数,但在这种情况下这不是问题

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

我的解释是,SSAS通常提前计算总量 [Date].[Calendar].CurrentMember在用户的向下搜索和筛选操作上下文之外的总计级别上没有意义。通过使用动态集,我强制SSAS动态计算聚合。虽然在理论上性能受到了冲击,但就我的立方体大小而言,我并没有注意到有多大的差异

然后,投标显示以下总数-与上面的数字相比没有变化:

但Excel的正确总数仅反映过滤后的日期坐标(在本例中,仅为2012年第一季度和2013年全年):


谢谢。有没有一种方法可以通过向下钻取动态地执行此操作?我只是碰巧在示例中显示了date维度(year)的顶层,但是聚合需要针对所有坐标和过滤器工作。
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] ;