根据日期显示度量,组合来自不同日期的两个度量
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]
结果
背景: 我正在为报告准备数据集。 为简化起见,假设它是两个度量,一个类别和一个时间维度。 主要报告参数是今天的日期。 我想查看昨天的第一个度量(值 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]
结果