首页 > 解决方案 > 在 MDX 中使用过滤器运行总计?

问题描述

我想从我在 Power BI 的筛选器中选择的日期开始运行总计,因为我尝试过的所有函数 MDX 都是从第一个值开始运行总计。

就像在我分享的图像中一样,我希望 SUM 列的总和从我在过滤器中选择的日期开始。

Power BI 中的我的仪表板已连接到 OLAP Cube SSAS(数据源)。

谢谢 !

在此处输入图像描述

标签: powerbissasmdxmeasurecumulative-sum

解决方案


这样做的原因是,在您的运行总计中,您在没有上下文的情况下对值求和。

看一下例子

with 
member 
[Measures].[Internet Sales AmountRunningtotal]
as 
case when [Measures].[Internet Sales Amount] = null then null 
else 
sum( {[Date].[Calendar Year].firstchild:[Date].[Calendar Year].currentmember},[Measures].[Internet Sales Amount])
end

select {[Measures].[Internet Sales Amount],
[Measures].[Internet Sales AmountRunningtotal]
} on columns,

non empty
([Date].[Calendar Year].[Calendar Year])
on 
rows 
from 
[Adventure Works]

结果 在此处输入图像描述

现在让我们做一些改变

with 
member 
[Measures].[Internet Sales AmountRunningtotal]
as 
case when [Measures].[Internet Sales Amount] = null then null 
else 
sum(existing {[Date].[Calendar Year].firstchild:[Date].[Calendar Year].currentmember},[Measures].[Internet Sales Amount])  
end 

select {[Measures].[Internet Sales Amount],
[Measures].[Internet Sales AmountRunningtotal]
} on columns,

non empty
([Date].[Calendar Year].[Calendar Year])
on 
rows 
from 
(select[Date].[Calendar Year].&[2012]:[Date].[Calendar Year].&[2013] on 0 from [Adventure Works] )

结果

在此处输入图像描述

请注意,在第二个结果中,2012 年之前的年份的值不包括在内。这一切都是因为使用“现有”关键字确保表达式在上下文中进行评估。


推荐阅读