我的事实表包含稀疏数据并且有3列:(用户,电影, normalized_score )。例如:
('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。
基本上,我们选择的任何维度,相应的#of用户,都会成为分母。
无法弄清楚如何。请帮忙!
答案 0 :(得分:-1)
通过在MSDN论坛here上提问来找到答案。
这是MDX的棘手问题之一。你真的想要 分母是使用当前上下文的用户数 除了当前选定的电影以外的一切是你的 [Measures]。[用户数]指标是DistinctCount的用户?我 这样做是为了让讨论更加清晰。如果是当前的 电影层次结构的上下文是m3,你会得到一个分母 您在初始帖子中说明的值为2。获得价值 你想要的三个,你需要覆盖当前的电影 层次结构上下文,以便您的平均分数的定义 是[测量]。[Normalized_Score] /( [电影]。[电影]。[全部] , [措施]。[用户数])。改变了的定义 [电影]。[电影]。[全部] 适合您的多维数据集,您应该这样做 得到正确的分母值