从MDX中的订单行获取订单成本
问题描述:
在我的立方体中,我有一个事实订单行,其变量为订单成本。这个变量当然是每个订单唯一的,并且在订单的每个订单行中具有相同的值。从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。之后,你的初始解决方案工作。谢谢您的帮助!
答
以下是否有效?我摆脱了不必要的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]
答
请尝试以下:
MIN(
[Order Line Details].[Order Number].[All].Children
,[Measures].[Order Line Order Cost]
)
不,它仍将所有订单行上的[订单行订单成本]相加。 – Raymond 2015-03-31 14:07:25
什么是您使用的整个MDX查询? – SouravA 2015-03-31 14:15:07
'WITH MEMBER [Measures]。[Order Cost] AS SUM(DISTINCT([Order Line Details]。[Order Number] .Children),[Measures]。[Order Line Order Cost]) SELECT \t NON EMPTY { ([Reseller]。[Reseller]。[Reseller] .ALLMEMBERS)} ON ROWS \t FROM [BI Cube]' – Raymond 2015-03-31 14:48:20