Reporting services 根据日期显示度量值,合并来自不同日期的两个度量值

Reporting services 根据日期显示度量值,合并来自不同日期的两个度量值,reporting-services,ssas,mdx,Reporting Services,Ssas,Mdx,背景: 我正在为报告准备数据集。 为了简化,让我们假设它是两个度量,一个类别和一个时间维度。 主报告参数是todays date。 我希望看到昨天的第一个度量值(值000)和第二个度量值 前天起(值001)。因为值001的前几天数据还不可用 假设2020-04-27是今天(从报告工具SSRS传递) 原样 输出: [Value 000] [Value 001] Category 1 2020-04-25 88

背景: 我正在为报告准备数据集。 为了简化,让我们假设它是两个度量,一个类别和一个时间维度。 主报告参数是todays date。 我希望看到昨天的第一个度量值(值000)和第二个度量值 前天起(值001)。因为值001的前几天数据还不可用

假设2020-04-27是今天(从报告工具SSRS传递)

原样 输出:

                        [Value 000]     [Value 001]     
Category 1  2020-04-25      88              16
Category 1  2020-04-26      89              (null)
Category 2  2020-04-25      90              14
Category 2  2020-04-26      92              (null)
                [Value 000]     [Value 001]                 
Category 1          89              16          (Value from day before, for Value 0001) 
Category 2          92              14
我为每个日期尝试了两个MDX查询,并在报告工具中组合了这些集合,但我想知道在一个MDX查询中是否有一种舒适的方法可以做到这一点。 以下是所需的输出

将来 输出:

                        [Value 000]     [Value 001]     
Category 1  2020-04-25      88              16
Category 1  2020-04-26      89              (null)
Category 2  2020-04-25      90              14
Category 2  2020-04-26      92              (null)
                [Value 000]     [Value 001]                 
Category 1          89              16          (Value from day before, for Value 0001) 
Category 2          92              14

输出中不需要显示日期(但可以显示)

您可以使用计算的度量值来解决问题。下面的例子基于adventureworks。我想在2013年1月23日重建您的senario

初始查询用于显示昨天和前一天的值 具有 议员:昨天 作为 总和([Date].[Date].currentmember.lag(1),[Measures].[Internet销售额])

结果

现在,让我们从行中删除日期并将其放在何处

with 
member measures.Yesterday 
as 
sum([Date].[Date].currentmember.lag(1),[Measures].[Internet Sales Amount])

member measures.DayBefore 
as 
sum([Date].[Date].currentmember.lag(2),[Measures].[Internet Sales Amount])
select 
{
[Measures].[Internet Sales Amount],measures.Yesterday ,measures.DayBefore
}
on columns,

{
([Product].[Category].[Category])
}
on rows 
from 
[Adventure Works]
where [Date].[Date].&[20130123]
结果


您可以通过使用计算出的度量值来解决此问题。下面的例子基于adventureworks。我想在2013年1月23日重建您的senario

初始查询用于显示昨天和前一天的值 具有 议员:昨天 作为 总和([Date].[Date].currentmember.lag(1),[Measures].[Internet销售额])

结果

现在,让我们从行中删除日期并将其放在何处

with 
member measures.Yesterday 
as 
sum([Date].[Date].currentmember.lag(1),[Measures].[Internet Sales Amount])

member measures.DayBefore 
as 
sum([Date].[Date].currentmember.lag(2),[Measures].[Internet Sales Amount])
select 
{
[Measures].[Internet Sales Amount],measures.Yesterday ,measures.DayBefore
}
on columns,

{
([Product].[Category].[Category])
}
on rows 
from 
[Adventure Works]
where [Date].[Date].&[20130123]
结果


谢谢,你帮了我很多忙。我采用了同样的逻辑。对于给定的查询,它看起来是这样的:
,成员为[Measures].DayBefore作为SUM([DIM Date].[Date].CURRENTMEMBER.LAG(1),[Measures].[Value 001])--daybeforday在列上选择{[Measures].[Value 000],[Measures].DayBefore},在[biu Base]中的行上选择{[DIM Category].[Category].[2]}[DIM Date].[Y-M-D ISO].[Date].[2020-04-27]--昨天
谢谢你帮了我很多忙。我应用了相同的逻辑。对于给定的查询,它看起来是这样的:
带有成员[Measures].DayBefore作为和([DIM Date].[Date].CURRENTMEMBER.LAG(1),[Measures].[Value 001])--DayBefore选择{[Measures].[Value 000],[Measures].DayBefore}在列上,{[DIM Category].[Category].[1],[DIM Category].[Category].[2]}在[BIU Base]的行上,其中[DIM Date].[Y-M-D ISO].[Date].[2020-04-27]--昨天