-1

私のファクト テーブルにはスパース データが含まれており、3 つの列 (user、movie、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 です。

私は 2 つの次元を持っています:
- User_info (user, Cat_Level1, Cat_Level2)
-Movie_info (movie, Genre_Level1, Genre_Level2)

平均スコアで上位の映画が必要です。平均の計算では、選択したディメンションから関連するすべてのユーザーが考慮されます。

たとえば、最下位レベルでは、average('m3')上記は になります(0.3+0.3)/3。分母は2 ではなく3であることに注意してください。

基本的に、選択したディメンションには対応するユーザー数があり、それが分母になります。

方法がわかりません。助けてください!

4

1 に答える 1

-1

答えは、ここの MSDN フォーラムで質問することで見つかりました。

これは MDX のトリッキーなポイントの 1 つです。分母を、現在選択されている映画以外のすべての現在のコンテキストを使用しているユーザーの数にする必要があります。[Measures].[Number of Users] メトリクスはユーザーの DistinctCount ですか? 議論をより明確にするために、そのように仮定します。映画階層の現在のコンテキストが m3 の場合、最初の投稿で述べたように、分母の値は 2 になります。希望する 3 の値を取得するには、平均スコアの定義が [Measures].[Normalized_Score] / ( [Movie].[Movie].[All]になるように、現在のムービー階層コンテキストを上書きする必要があります。 、[メジャー].[ユーザー数] )。[Movie].[Movie].[All]の定義を変更 キューブに適切であり、正しい分母値を取得する必要があります

.

于 2012-12-04T03:23:00.383 に答える