web-dev-qa-db-ja.com

二重カウントを回避するための非リーフレベルノードのカスタム集計

次の列のファクトテーブルがあります。

WorkerName 
OrderId
NumberOfPackagesPerOrder

このファクトテーブルでは、WorkerNameOrderIdも一意ではないことに注意してください。複数のユーザーが1つのOrderIdで作業できます。また、NumberOfPackagesPerOrderOrderIdにのみ依存します。つまり、すべてのOrderIdについて、NumberOfPackagesPerOrderの数は同じ。

このデータから従業員階層ごとに階層レポートを報告するキューブを作成しようとしています。

ManagerLevel1           [Total orders completed] [Total Packages Shipped]
    Managerlevel2
        .....
        ManagerLevelN
                  Worker

複数のワーカーが同じ順序で作業する可能性があるため、マネージャーレベル(リーフノード以外)のPackagesPerOrderを二重にカウントしないようにする必要があります。

これを行う方法?これらをSUMNumberOfPackagesPerOrderした後にのみこれらを合計することにより、どのMDXスクリプトを適切にDISTINCTOrderIdする必要がありますか?

注1-雇用階層は再帰的に定義されます-レベルは静的ではありません。
注2-リーフ以外のノードにいるマネージャーも、パッケージを出荷する可能性があります。

5
user1234883

この問題に対する正しいアプローチは、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は必要ありません。

0
user1234883