在我的多维数据集中,我有一个事实订单行,其变量订单成本。此变量当然对于每个订单是唯一的,并且在订单的每个订单行中具有相同的值。
现在我想创建一个计算字段,该字段汇总订单成本,但每次订单只需获取此值一次。
所以,使用计算成员这个
+-------------------+--------------+------------+
| 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。之后,您的初始解决方案有效。谢谢你的帮助!
答案 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]
)