在MSSQL Server 2008 BDS多维数据集中计算的度量

时间:2012-05-25 16:50:57

标签: sql-server-2008 mdx data-warehouse olap cube

我想定义3个计算成员。我有一个基于2个表,TrackInfo和Chart Positions的立方体。图表位置表由36周的列组成,其中包含给定周内前100名列表中给定的跟踪位置(如果该歌曲未在列表中列出,则为0):

[Entry ID] FOREIGN KEY,
[1st Week] FLOAT,
[2nd Week] FLOAT,

依此类推,直到第36周。

我想计算以下措施:

1)歌曲进入前10名的周数

2)歌曲进入前20名的周数

3)“人气计”,将通过以下公式完成:

1 /((所有非零位置的平均值)*(37 - (列表中列出的周数)))

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

如果没有立方体定义来编写一些MDX但是1)我会以一个类似的问题为例 - 年度数[东京]已进入前三名的销售城市:

 select
  [Measures].[Sales] on 0,

  Filter( 

    Generate( [Time].[Year].[Year].members as s1, 
             TopCount( s1.currentMember * [Customers].[City].members, 3, [Measures].[Sales] ) 
    ) as s2,

    IIF( s2.current(1) IS [Customers].[Geography].[City].[Tokyo] , true, false )

  )

  on 1 

  from [Sales]

这适用于icCube中提供的演示多维数据集;应与AS相同,因为这是非常标准的MDX。我想你会得到Generate函数的想法。然后,您可以创建一个计算的度量,它将Count()过滤后的集合而不是将此集合放在轴上(用于演示目的)。