我正在访问Excel中OLAP多维数据集中的数据,并尝试使用MDX查询在我的数据透视表中创建一个新的计算量度。
基于容器大小,我需要计算该特定容器大小的容量。
我使用的是CASE语句,但是我的查询忽略了所有WHEN子句,而使用了ELSE子句。
CASE
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '20' THEN ([Measures].[Ocean Container COUNT]*33)
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '20H' THEN ([Measures].[Ocean Container COUNT]*40)
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '40H' THEN ([Measures].[Ocean Container COUNT]*69)
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '40R' THEN ([Measures].[Ocean Container COUNT]*56)
ELSE ([Measures].[Ocean Container COUNT]*56)
END
例如:20Ft容器总计128个,因此容量应为4224(128 * 33);但是我得到7168(128 * 56)。
答案 0 :(得分:0)
您需要进行以下更改。代替
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size] = '20'
您需要写
WHEN [CONTAINER INSTANCE DIMENSION].[Container Size].CurrentMember.MEMBER_CAPTION = '20'.
在查询中,您要基于容器大小的值选择乘数。为了获得当前正在评估的值,我们使用“ Currentmember”。另外,您正在检查CURRENTMEMBER的“ MEMBER_CAPTION”属性。检查值的方式将不起作用。 MDX将评估
[CONTAINER INSTANCE DIMENSION].[Container Size] = '20'
为true,因为您要根据值评估维度属性。因此,您的Else子句给出了结果。
以下是AdventureWorks上的示例。
with member
[Measures].[Internet Sales AmountCase]
as
case
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '38' then [Measures].[Internet Sales Amount]*1
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '40' then [Measures].[Internet Sales Amount]*2
when [Product].[Size].CurrentMember.MEMBER_CAPTION = '46' then [Measures].[Internet Sales Amount]*3
else -99
end
select
{[Measures].[Internet Sales Amount],[Measures].[Internet Sales AmountCase]}
on columns,
([Date].[Month of Year].[Month of Year],[Product].[Size].[38]:[Product].[Size].[70])
on rows
from [Adventure Works]