-1

我的事实表包含稀疏数据并有 3 列:(用户、电影、规范化分数)。例子:

  ('u1','m3',0.3)
  ('u1','m4',0.1)
  ('u1','m7',0.6)
  ('u2', 'm1', 0.33)
  ('u2','m3',0.33)
  ('u2', 'm7', 0.33)
  ('u3', 'm2', 0.6)
  ('u3','m6',0.4)
  ...

如您所见,每个用户的 sum(normalized_score)=1。

我有两个维度:
- User_info (user, Cat_Level1, Cat_Level2)
-Movie_info (movie, Genre_Level1, Genre_Level2)

我想要按平均得分排名靠前的电影,其中平均值的计算考虑了所选维度中的所有相关用户。

例如,在最低级别,average('m3')上面将是(0.3+0.3)/3. 请注意,分母是3,而不是 2。

基本上,我们选择的任何维度,都有相应的用户数,这成为分母。

想不通怎么弄。请帮忙!

4

1 回答 1

-1

通过在此处的 MSDN 论坛上提问找到了答案。

这是 MDX 的棘手点之一。您确实希望分母是使用除当前所选电影之外的所有内容的当前上下文的用户数。您的 [Measures].[Number of Users] 指标是不同的用户数吗?我将假设如此,以使讨论更清晰。如果电影层次结构的当前上下文是 m3,您将得到分母值为 2,如您在初始帖子中所述。要获得所需的三值,您需要覆盖当前电影层次结构上下文,以便平均分数的定义为 [Measures].[Normalized_Score] / ( [Movie].[Movie].[All] , [措施].[用户数量])。更改 [Movie].[Movie].[All]的定义适合你的立方体,你应该得到正确的分母值

.

于 2012-12-04T03:23:00.383 回答