从MDX中的订单行获取订单成本

时间:2015-03-25 11:10:24

标签: ssas mdx

在我的多维数据集中,我有一个事实订单行,其变量订单成本。此变量当然对于每个订单是唯一的,并且在订单的每个订单行中具有相同的值。

现在我想创建一个计算字段,该字段汇总订单成本,但每次订单只需获取此值一次。

所以,使用计算成员这个

+-------------------+--------------+------------+            
| Order Line Number | Order Number | Order Line |
|                   |              | Order Cost |
+-------------------+--------------+------------+
|                10 |            1 | $0.20      |
|                11 |            1 | $0.20      |
|                20 |            2 | $0.25      |
+-------------------+--------------+------------+

必须成为这个

+--------------+------------+
| Order Number | Order Cost |
+--------------+------------+
|            1 | $0.20      |
|            2 | $0.25      |
+--------------+------------+

我目前拥有的MDX表达式(见下文),对订单行进行求和,使订单号1的订单成本 $ 0.40。

SUM( 
    DISTINCT( 
        CROSSJOIN(
            [Order Line Details].[Order Number].[All].Children, [Measures].[Order Line Order Cost]
        )
    )
)

我需要更改什么才能获得所需的行为?

如果对此问题有任何疑问,请与我们联系。

解决方案

好的,我发现了问题。我将聚合行为从[Measures]。[Order Line Order Cost]更改为min。之后,您的初始解决方案有效。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

以下是否有效?我已经删除了不必要的crossjoin,并将distinct函数放在[Order Line Details].[Order Number].Children上,并使用SUM函数将Order Line Order Cost与订单号相加

SUM(
    DISTINCT([Order Line Details].[Order Number].Children)
    , [Measures].[Order Line Order Cost]
   )

修改 请尝试以下代码:

WITH
SET DistinctOrderNumbers AS
DISTINCT(EXISTING [Order Line Details].[Order Number].Children)

MEMBER [Measures].[Order Cost] AS 
SUM(DistinctOrderNumbers, [Measures].[Order Line Order Cost]) 

SELECT NON EMPTY { [Measures].[Order Cost] } ON COLUMNS, 
NON EMPTY { ([Reseller].[Reseller].[Reseller].ALLMEMBERS ) } ON ROWS 
FROM [BI Cube] 

EDIT2(平均不计)

WITH
SET DistinctOrderNumbers AS
DISTINCT(EXISTING [Order Line Details].[Order Number].Children)

MEMBER [Measures].[Order Cost] AS 
AVG(DistinctOrderNumbers, [Measures].[Order Line Order Cost]) 

SELECT NON EMPTY { [Measures].[Order Cost] } ON COLUMNS, 
NON EMPTY { ([Reseller].[Reseller].[Reseller].ALLMEMBERS ) } ON ROWS 
FROM [BI Cube]

答案 1 :(得分:0)

请尝试以下方法:

MIN( 
    [Order Line Details].[Order Number].[All].Children
   ,[Measures].[Order Line Order Cost]
    )