假设我有一个简单的表格,其中包含以下销售数据:
你能帮我为计算成员编写MDX查询,以获得与上一年同期相比的当期销售比率吗?
例如,如果将月份或季度选为维度之一。
答案 0 :(得分:0)
假设您拥有[年],[月]和[日]等级的[时间]维度。
如果
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
[Measures].[Sales] on 1
FROM
[Cube]
返回2015年所有月份的销售额。我们可以添加一个计算度量来获得比率:
WITH
MEMBER [Sales Ratio] AS DivN(
[Sales],
( ParallelPeriod( [Time].[Year], 1, [Time].current ), [Sales] )
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
{[Sales],[Sales Ratio]} on 1
FROM
[Cube]
DivN是特定于icCube的,允许将“空白”划分为“空白”。安全
ParallelPeriod是标准的MDX函数,它返回上一年的月份。你也可以使用Lag( - 12),即旅行'向后退了12次。
current (aka Currentmember)也是标准MDX,允许检索层次结构/维度的当前值。
在icCube中,我添加function以导航到上一年,以便您可以重复使用它(并根据需要修复一个)。喜欢:
WITH
FUNCTION timePrevYear(t_) AS ParallelPeriod( [Time].[Year], 1, t_ )
MEMBER [Sales Ratio] AS DivN(
[Sales],
( timePrevYear( [Time].current ), [Sales] )
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
{[Sales],[Sales Ratio]} on 1
FROM
[Cube]
它会有点太多但最终你可以在MDX Utility或Stats维度中添加这种计算,所以你甚至可以让最终用户在下拉列表中选择这个报告工具。有关here的更多信息。
答案 1 :(得分:0)
在我为客户创建的模型中,我有时采用另一条路线,正如ic3所建议的那样:
特别是在这些基础上会有很多额外的计算(例如年初至今,从最初开始到今天,到目前为止等)。
这是: 再次加载相同的事实数据,但将“加载日期”设置为“日期” - 1年(例如mySQL:DATE_ADD(,INTERVAL -1 YEAR)。
优点: