在MDX中使用过滤器运行总计?

时间:2019-06-20 08:23:04

标签: powerbi ssas mdx measure running-total

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

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

我在Power BI中的Dashbord已连接到OLAP Cube SSAS(数据源)。

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

之所以这样,是因为在您的总计中,您是在没有上下文的情况下求和。

看看示例

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]

结果 enter image description here

现在让我们进行一些更改

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

结果

enter image description here

请注意,第二个结果中未包含2012年之前的年份值。这一切都是由于使用“ existing”关键字来确保在上下文中对表达式进行求值。