我需要知道计算加权平均值的时间维度期间的天数。我在计算的度量中使用以下表达式来获取当前维度成员中的天数:
Count(
Descendants(
[Date].[Calendar].CurrentMember,
[Date].[Calendar].[Date Key]
)
)
这适用于所有向下钻取的情况,但是当我有一个过滤器时它对Grand Total不起作用。我怀疑CurrentMember在这种情况下不起作用。它始终返回我的数据中的总天数。 为了说明,具有上述公式的度量在BIDS中汇总如下
因为我的事实数据始于1984年,时间维度有11100天。如何更改公式以便在聚合中考虑过滤器?用户可以深入到日级别。这是Excel Pivot表:
答案 0 :(得分:0)
如果您需要从[日期]。[日历]。[日期键]级别过滤成员,您可以将后代与实际过滤器相交>
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]
答案 1 :(得分:0)
我认为这是“计算成员多重选择问题”的经典案例。我找到了一个很好的总结here。我有一个适用于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通常会提前计算总数 [日期]。[日历] .CurrentMember在用户深入和过滤操作的上下文之外的Grand Total级别没有意义。通过使用动态集,我强制SSAS动态计算聚合。理论性能受到了影响,但是我的立方体尺寸并没有发现太大的差异。
然后BIDS显示以下总数 - 从上面没有变化:
但Excel具有正确的总计,仅反映过滤日期坐标(在这种情况下,仅2012年第1季度和2013年全年):