次の列のファクトテーブルがあります。
WorkerName
OrderId
NumberOfPackagesPerOrder
このファクトテーブルでは、WorkerName
もOrderId
も一意ではないことに注意してください。複数のユーザーが1つのOrderIdで作業できます。また、NumberOfPackagesPerOrder
はOrderId
にのみ依存します。つまり、すべてのOrderId
について、NumberOfPackagesPerOrder
の数は同じ。
このデータから従業員階層ごとに階層レポートを報告するキューブを作成しようとしています。
ManagerLevel1 [Total orders completed] [Total Packages Shipped]
Managerlevel2
.....
ManagerLevelN
Worker
複数のワーカーが同じ順序で作業する可能性があるため、マネージャーレベル(リーフノード以外)のPackagesPerOrder
を二重にカウントしないようにする必要があります。
これを行う方法?これらをSUM
でNumberOfPackagesPerOrder
した後にのみこれらを合計することにより、どのMDXスクリプトを適切にDISTINCT
OrderId
する必要がありますか?
注1-雇用階層は再帰的に定義されます-レベルは静的ではありません。
注2-リーフ以外のノードにいるマネージャーも、パッケージを出荷する可能性があります。
この問題に対する正しいアプローチは、SSASで多対多の関係を使用することです。
詳細はこちら https://stackoverflow.com/questions/10971593/custom-aggregation-for-non-leaf-level-nodes-to-avoid-double-counting そしてこちら http ://www.sqlbi.com/wp-content/uploads/The_Many-to-Many_Revolution_2.0.pdf 。
その場合、MDXは必要ありません。