1

私は次のようなキューブを持っています:

DimEntity
EntityID
EntityName
EntityLongName

FactReturns
TotalReturn

私がやりたいのは、エンティティのすべての組み合わせ間のTotalReturnsを合計することです。したがって、出力は次のようになります。

             NameA        NameB
LongNameA    sum(A, 1)    sum(A, 2)
LongNameB    sum(B, 1)    sum(B, 2)

(sum(A、1)= sum(A、A)、EntityName"A"とEntityID"1"は同じエンティティを参照しているため)

私が今持っているのはこれです:

WITH MEMBER [Measures].[SumReturns] AS
    SUM([Dim Entity].[EntityID], [Measures].[TotalReturn])
SELECT 
    [Dim Entity].[EntityName].Children ON COLUMNS,
    [Dim Entity].[EntityLongName].Children ON ROWS  
FROM
    [Returns]
WHERE
    [Measures].[SumReturns]

しかし、これは私にこのようなテーブルを与えるだけです:

             NameA            NameB
LongNameA    A.TotalReturn    null
LongNameB    null             B.TotalReturn
etc...

私はMDXを学んでいて、これがどのように機能するかを理解するのに本当に苦労しています。

4

1 に答える 1

3

誤解を招く恐れがありますが、MDXの概念を少し混ぜています。MDXのドキュメントを読むのに少し時間がかかることをお勧めします。ここでMDXの簡単な紹介がありますが、このページを読むのも興味深いです。次のページをお見逃しなく-高度。

  • タプルが存在しないため、構造上nullです。

ディメンションと階層には重要な違いがあります。ディメンションは、ファクトの空間(別名キューブファクト)の座標を表します。このスペース(別名キューブ)からいくつかの値を取得するには、サブスペース(別名セル)を定義する必要があります。階層は、ディメンションの座標(エンティティ)をグループ化する「別の」方法です。同じディメンションの異なる階層の2つのエンティティを定義する場合、この2つのエンティティ間で交差を実行します。この交差点は空にすることができます。これはあなたの場合です。

例を見てみましょう:

  • EntityNameは、[Dim Entity]の座標です。この例は、エンティティを座標として持つフラットディメンションです。
  • このディメンションのエンティティを異なる方法でグループ化するとします。「a」を含むエンティティと含まないエンティティです。この新しい階層には、[a]と[aなし]の2つのメンバーまたはエンティティがあります。

タプル([DimEntity]。[Flat]。[Entity1]、[DimEntity]。[ContainsA]。[witha])に質問すると、このタプルは存在しないため、常にnullになります。この組み合わせのキューブで調整します。なんで ?[エンティティ1]に「a」が含まれていません。

何を計算しているのかわかりませんが、計算したメンバーをひねる必要があります。santiiiのコメントの後、新しい次元が必要です。

 WITH MEMBER [Measures].[SumReturns] AS
   -- we're reseting here COLUMNS information, sum is not needed
  ([Dim Entity].[EntityName].defaultmember,[Measures].[TotalReturn])
  +
  -- we're reseting here ROWS
  ([Dim Entity 2].defaultmember,[Measures].[TotalReturn])
 SELECT 
  [Dim Entity].[EntityName].Children ON COLUMNS,
  [Dim Entity 2].[EntityName].Children ON ROWS  
 FROM [Returns]
于 2011-07-28T07:20:48.037 に答える