我在MDX问题上工作了几天,我没有看到任何问题......
以下是上下文:
我有一张事实表:
+----------+--------+-------------+------------+------------------+
| Line num | Amount | Line Type | Date | DateConfirmation |
+----------+--------+-------------+------------+------------------+
| 1 | 100 | Reservation | 01/01/2016 | 12/01/2016 |
| 2 | 50 | Reservation | 01/01/2016 | Empty |
| 3 | 80 | Reservation | 20/12/2015 | 01/01/2016 |
| 4 | 30 | DirectSales | 01/01/2016 | 01/01/2016 |
+----------+--------+-------------+------------+------------------+
所以在SSAS中我设计了一个带
的立方体金额衡量
日期维度
日期确认维度
然后2个日期维度是角色扮演维度
我需要的是,在按日期分析时,将所有预订加上在当前会员的同一天确认的预订结合起来。
所以我写了这个MDX:
CREATE MEMBER CURRENTCUBE.[Sales].[Type].[All].[Confirmed Reservations]
AS NULL ,
VISIBLE = 1;
Scope ( [Sales].[Type].[All].[Confirmed Reservations] );
Scope( MeasureGroupMeasures("Sales") , [Date].[Hierarchy].Members , [Date].[Date].Members
, [Date Confirmation].[Hierarchy].[All] , [Date Confirmation].[Date].[All] );
This = ([Sales].[Type].&[Reservation], StrToMember("[Date Confirmation].[Hierarchy]." + Right(MemberToStr([Date].[Hierarchy].CurrentMember), Len(MemberToStr([Date].[Hierarchy].CurrentMember)) - Len("[Date].[Hierarchy].") ) ), [Date].[Hierarchy].[All] );
End Scope;
End Scope;
预期结果,如果我分析销售& 2016年1月1日日期维度的预订是
+------------------------+-----------+
| Reservation | 150 (1+2) |
| DirectSales | 30 (4) |
| Confirmed Reservations | 80 (3) |
+------------------------+-----------+
如果我在Excel中只选择一个日期,这将完美地运行。但是当选择多个日期时,它会产生非常糟糕的结果。
您的所有建议对我都非常有帮助! 非常感谢:)
答案 0 :(得分:0)
我没有尝试在MDX中解决这个问题,而是建议采用更简单的方法。如果您在DSV中的当前事实表查询是:
Select LineNum, Amount, LineType, Date, DateConfirmation
From YourFact
我会将其更改为:
Select LineNum, Amount, LineType, Date, DateConfirmation
From YourFact
UNION ALL
Select LineNum, Amount, 'Confirmed Reservations' as LineType, DateConfirmation as Date, DateConfirmation
From YourFact
WHERE DateConfirmation is not null
那么你不应该需要任何MDX。