Ssas MDX,先求和再求平均值

Ssas MDX,先求和再求平均值,ssas,mdx,Ssas,Mdx,我有一个包含以下数据的事实模型: WorkOrderNumber | WorkOrderLineNumber | Cost 因此,我有一个维度工作顺序: [WorkOrder].[WorkOrderNumber] [WorkOrder].[WorkOrderLineNumber] 以及具有以下度量值的度量值组: [Measures].[Cost] 我正在尝试创建一个计算度量: [Measures].[Average WorkOrder Cost] 必须将每个工单的值相加,然后取每个工单的

我有一个包含以下数据的事实模型:

WorkOrderNumber | WorkOrderLineNumber | Cost
因此,我有一个维度工作顺序:

[WorkOrder].[WorkOrderNumber]
[WorkOrder].[WorkOrderLineNumber]
以及具有以下度量值的度量值组:

[Measures].[Cost]
我正在尝试创建一个计算度量:

[Measures].[Average WorkOrder Cost]
必须将每个工单的值相加,然后取每个工单的所有这些值的平均值来计算

然而,我似乎无法让它工作

CASE WHEN [WorkOrder].[WorkOrder].CurrentMember = [WorkOrder].[WorkOrder].[All] 
THEN 
  /* the work order is not selected -> AVG*/ 
  DIVIDE(SUM(),[Measures].[Cost]), Count()) )) 
ELSE 
  /* the Work Order is selected -> SUM*/ 
  SUM([Measures].[Cost]) 
END

下面是一个使用AdventureWorks多维数据集获取每个销售订单平均值的示例。您可以用[Cost]和[WorkOrderNumber]替换

with member [CalculatedAvg] as 
    AVG([Internet Sales Order Details].[Sales Order Number].[Sales Order Number], [Measures].[Internet Sales Amount])
    , FORMAT_STRING = "$#,##0.00"

select
    { 
        [Measures].[Internet Sales Amount], 
        [Measures].[Internet Order Count], 
        [Measures].[Internet Average Sales Amount],
        [CalculatedAvg] 
    } on 0,
    [Date].[Calendar].[Calendar Year].members on 1
from
    [Direct Sales]
例如

AVG([WorkOrder].[WorkOrderNumber].[WorkOrderNumber], [Measures].[Cost])

我尝试的方法是错误的,但我不知道如何更好地处理它。我目前的情况是:当[WorkOrder].[WorkOrder].CurrentMember=[WorkOrder].[WorkOrder].[All]然后/*未选择工单->平均*/除以(求和(),[Measures].[Cost]),计数())否则/*选择工单->求和*/求和([Measures].[Cost])结束此方法是错误的。我首先查看最终用户是否选择了所有工单。如果是这样的话,我可以简单地总结一下。否则我不知道:(然而,我不能只计算总数,因为最终用户可能已经选择了2个工单。@OverflowStack好的,几个简单的问题。。你为什么要计算平均数?要求不是只计算用户选择的工单的成本吗?其次,
WorkOrderLineNumber
在当前的问题,或者仅仅是关于工单编号的问题?我想得到每个工单的平均成本价格。这意味着将工单行上的成本相加,然后除以工单的数量。工单行编号的重要性…它是最低级别的细节。但可能不需要找到解决方案。它是m请明确,您不能只将工作顺序线的总和相加,然后除以工作顺序线的数量。平均值需要计算得更高一级。在工作顺序级别上。请仔细考虑。我想,将我的除法分母作为所选工作顺序的数量,我也可以得到。也许您应该在您的列表中添加一个计数列事实上,每个记录的值为1。那么您计算的度量值可以是成本之和除以计数之和的比率。您可以像Adventure Works一样,在WorkOrderNumber上添加一个DistinctCount度量值,然后将其用作分母。为什么不使用函数
AVG