0

2 つのテーブルがあるとします。属性テーブル:

file | attribute | value
------------------------
A    | xdim      | 5
A    | ydim      | 6
B    | xdim      | 7
B    | ydim      | 3
B    | zdim      | 2
C    | xdim      | 1
C    | ydim      | 7

サイズ表:

file | size
-----------
A    | 17
B    | 23
C    | 34

「ファイル」フィールドを介してこれらのテーブルを関連付けています。attrsTable 内に PowerPivot メジャーが必要です。その計算ではサイズが使用されます。たとえば、A、B、C のそれぞれに対して xdim+ydim/size が必要だとします。計算は次のようになります。

A: (5+6)/17
B: (7+3)/23
C: (1+7)/34

後でスライサーを使用してファイルまたは属性ごとにスライスできるように、メジャーを十分に一般的なものにしたいと考えています。どうすればこれを達成できますか?

私は試した:

dimPerSize := CALCULATE([value]/SUM(sizeTable[size])) # Calculates 0
dimPerSize := CALCULATE([value]/SUM(RELATED(sizeTable[size]))) # Produces an error

私が間違っていることは何か分かりますか?リレーションシップで DAX を使用する方法について、いくつかの基本的な概念が欠けている可能性があります。

4

2 に答える 2

1

こんにちは、レッドストリートです。

あなたのソリューションとJacobによって提案されたソリューションから一歩下がって、すべての計算を集約する別のテーブルを作成すると便利だと思います(特に、ファイル固有の属性を持つテーブルが2つ以上ある場合)。

そこで、一意のファイル名 (のみ) を含むテーブルをもう 1 つ作成したので、関係を次のように視覚化できます。

ここに画像の説明を入力

必要なメジャーを追加する方がはるかに簡単です (計算列は必要ありません)。私は実際に2つのシナリオをテストしました:

1) Attribute ValueFile Sizeの両方の単純な SUM メジャーを作成します。次に、これらの 2 つの対策を分割して、作業を完了します:-)。

2)SUMX関数を使用して、もう少し普遍的なソリューションを実現します。次に、 DimPerSize計算の最終式は次のようになります。

=DIVIDE(
   SUMX(DISTINCT(fileTable[file]),[Sum of AttrValue]), 
   SUMX(DISTINCT(fileTable[file]),[Sum of FileSize]), 
   BLANK()
)

[AttrValue の合計] は次のとおりです。

=SUM(attrsTable[value])

そして FileSize の合計は次のとおりです。

=SUM(sizeTable[size])

どちらの場合もSUMXは指定されたファイル名のすべてのインスタンスを対象としますが、これは完全に正常に機能しました。したがって、ファイルBについてもzdimで計算します(これを除外する必要がある場合は、単純な計算とフィルターの組み合わせを使用します)。ファイルサイズの場合、テーブルにはファイル名ごとに1つのレコードしか含まれていないため、実際には必要ありませんが、SUMXも使用しています。2 つのインスタンスがある場合は、目的の結果に応じて、SUMX または AVERAGEX を使用します。

これは、Excel (2010) のソース ファイルへのリンクです。

お役に立てれば。

于 2014-08-18T17:44:34.313 に答える