トラック/ドライバー/日で輸送される重量のファクトテーブルがあります。
そして、トラックあたりの最大重量の寸法。
重量の%を輸送したいので、
create MEMBER CURRENTCUBE.[Measures].[% WT]
AS [Measures].[Weight]/[Dim Truck].[Max_weight].currentmember.properties("key"),
FORMAT_STRING = "Percent";
これは、1つのトラックに特定の日とドライバーのリーフが1つしかない個々の列でのみ機能します。
トラックがsum(weight)/ sum(max_weight)の代わりに1日に2回トリップする場合、またはsum(weight)/(n * max_weight)を希望する場合は、sum(weight)/ max_weightが機能しません。
まったく同じことが、どの集約レベルでも発生します。たとえば、月、年、または合計。または単にトラックレベルで。
私たちはあらゆる種類の公式とスコープを使って遊んでいますが、成功していません。
集計が期待どおりに機能するように定義する方法はありますか?
主な問題は、measure
をディメンションに格納していることです。それが属するメジャー、つまりファクトテーブルにメジャーを保存しない限り、複数選択や集計で問題が発生し続けます。
ETLを変更して、ファクトテーブルのmax_weight
をコピーするか、DMVで名前付きクエリを使用して、ファクトテーブルをディメンションテーブルに結合し、実際のメジャーを作成できます。
状況に応じて、新しいメジャーグループを追加することもできます。
おそらく一部のMDX COUNT関数でうまくいきますが、実際のファクトテーブルは多少複雑で、他の関連情報の中でこの特定の行を識別する定数値1が既にあるため、式を次のように変更しました。
create MEMBER CURRENTCUBE.[Measures].[% WT]
AS [Measures].[Weight]/[Dim Truck].[Max_weight].currentmember.properties("key")/[Measures].[N_Deliveries],
FORMAT_STRING = "Percent";
N_Deliveriesは常に1(または他の関連情報を持つ他の行の場合は0)です。
これは機能します... Excelはいくつかの合計を計算する方法を知りませんが、それでも生き残ることができます:)