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] ;