use*_*883 5 sql-server ssas sql-server-2008-r2 mdx
我有一个包含以下列的事实表:
WorkerName
OrderId
NumberOfPackagesPerOrder
Run Code Online (Sandbox Code Playgroud)
请注意,在此事实表中既不是WorkerName
也不OrderId
是唯一的。多个用户可以处理单个 OrderId 还要注意,NumberOfPackagesPerOrder
仅取决于OrderId
,即对于每个OrderId
,数量NumberOfPackagesPerOrder
将相同。
我正在尝试构建一个多维数据集,以按员工层次结构报告来自此数据的分层报告:
ManagerLevel1 [Total orders completed] [Total Packages Shipped]
Managerlevel2
.....
ManagerLevelN
Worker
Run Code Online (Sandbox Code Playgroud)
由于多个工作人员可以按相同的顺序工作,因此我需要避免PackagesPerOrder
对经理级别(非叶节点)进行重复计算 。
这该怎么做?我需要什么 MDX 脚本才能正确地SUM
NumberOfPackagesPerOrder
将它们相加,然后将DISTINCT
它们添加到OrderId
?
注 1 - 雇佣层次结构是递归定义的 - 级别不是静态的。
注意 2 - 非叶节点上的管理器也可能会运送包。
解决该问题的正确方法是在 SSAS 中使用多对多关系。
更多详细信息请参见/sf/ask/768011541/和此处http://www.sqlbi.com/wp-内容/上传/The_Many-to-Many_Revolution_2.0.pdf。
那么就不需要MDX了。