根据日期显示度量,组合来自不同日期的两个度量

Display Measure depending on Date, combine two measure from different dates

背景: 我正在为报告准备数据集。 为简化起见,假设它是两个度量,一个类别和一个时间维度。 主要报告参数是今天的日期。 我想查看昨天的第一个度量(值 000)和第二个度量 从前天开始(值 001)。因为值 001 的前几天数据尚不可用。

假设今天是 2020-04-27(从报表工具 SSRS 传递过来)。

原样

SELECT {[Measures].[Value 000], [Measures].[Value 001]} ON COLUMNS
    , ( {[DIM Category].[Category].&[1], [DIM Category].[Category].&[2]}, 
    [DIM Date].[Y-M-D ISO].[Date].[2020-04-27].LAG(2): [DIM Date].[Y-M-D ISO].[Date].[2020-04-27].LAG(1)
    )
 ON ROWS
FROM [My_Cube]

输出:

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

我为每个日期尝试了两个 MDX 查询,并在报告工具中合并了集合,但我想知道是否有一种舒适的方法可以在一个 MDX 查询中执行此操作。 以下是所需的输出。

未来

输出:

                [Value 000]     [Value 001]                 
Category 1          89              16          (Value from day before, for Value 0001) 
Category 2          92              14

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

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

初始查询显示昨天和前一天的值 和 会员 measures.Yesterday 作为 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],[Date].[Date].&[20130120]:[Date].[Date].&[20130123])
}
on rows 
from 
[Adventure Works]
where [Date].[Date].&[20130123]

结果

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

的位置
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]

结果