2016-04-22 58 views
0

仓库结构:如何在MDX查询中将MEDIAN函数用于其他层次结构?

FactSales:...,DateKey,RefernceId,SalesAmount两个,.....

  • DateKey - 日期维键, ReferenceId - 售标识, SalesAmount - 每次销售的销售金额(不是一天)。

    例如在两天里共有6个销售。所以在仓库中,事实表将是6行。

DateKey ReferenceID SalesAmount两个

2015-04-09 - 001 - 9

2015-04-09 - 002 - 10

2015-04-09 - 003 - 11

2015-04-10 - 004 - 12

2015- 04-10 - 005 - 13

2015年4月10日 - 006 - 14

DimDate: DateKey, 年, 季度, 月, 日期, ......

我有SSAS多维立方体,我想查询图表的数据。图表X轴将为Date,Y轴将为SalesAmount。

好吧,我必须显示2天的中位数。如果我们在几天内造粒,这不是问题:

MEMBER [Measures].[2d median] AS 
(
MEDIAN(
[Date].[Date].CurrentMember.Lag(2) : 
[Date].[Date].CurrentMember.Lag(1), 
[Measures].[SalesAmount]) 
) 

在这种情况下,MDX取两个合计值并计算meadian。 但是如何通过RefenceId(每次销售)来粒化数据?

在这种情况下,MDX必须取每个销售值(2015-04-09 - 2015-04-10将为6个值)。

我不知道如何将Date维连接到ReferenceId维。 我应该使用其他属性创建新的层次结构吗?

像这样:ReferenceId - > Date - > Month - > Quarter - > Year。

+0

您是否有参考ID的维度?另外,为了确认我的理解,您需要为每个ReferenceID独立地查找两天的中位数? – BICube

+0

是的,我有ReferenceID维度。而且,是的,我需要为每个参考ID找到两天的中位数。 – Oblomingo

回答

0

你可以将日期交叉连接到每个ReferenceID吗?

MEMBER [Measures].[2d median] AS 
(
MEDIAN(
    [ReferenceID].currentmember * 
    {[Date].[Date].CurrentMember.Lag(2) : [Date].[Date].CurrentMember.Lag(1)} 
,[Measures].[SalesAmount]) 
) 
+0

@Oblomingo做了我的小脚本来帮助你回答你的问题,还是应该删除我的帖子? – whytheq