CREATE MEMBER CURRENTCUBE.[Measures].[AccountClassKeyMultipiler] AS
(
CASE
WHEN [DimAccount].[AccountClass].[Account Class Key].currentmember.Properties ("Member_Value",TYPED) = "1" THEN 1
WHEN [DimAccount].[AccountClass].[Account Class Key].currentmember.Properties ("Member_Value",TYPED) = "2" THEN -1
else 0
END);
CREATE MEMBER CURRENTCUBE.[Measures].[AvgBalMult] AS
[Measures].[Avg Bal] * [Measures].[AccountClassKeyMultipiler]
编辑
在这里,我试图解决一个类似的案例
select
{[Measures].[Internet Sales Amount]
}
on columns,
(
[Product].[Category].[Category],
[Date].[Month of Year].[Month of Year]
)
on rows
from
[Adventure Works]
where [Date].[Calendar Year].&[2013]
接下来,我们将上述查询转换为基于月份的每个产品的平均销售额
with member
[Measures].[Internet Sales AmountAvg]
as
Avg(EXISTING([Date].[Month of Year].[Month of Year]) ,[Measures].[Internet Sales Amount])
select
{
[Measures].[Internet Sales Amount]
,
[Measures].[Internet Sales AmountAvg]
}
on columns,
(
[Product].[Category].[Category]
)
on rows
from
[Adventure Works]
where [Date].[Calendar Year].&[2013]
现在我们添加一个基于大小写的乘数
with
member [Measures].[Internet Sales AmountAvg]
as
Avg(EXISTING([Date].[Month of Year].[Month of Year]) ,[Measures].[Internet Sales Amount])
member [Measures].[Multipiler]
as
CASE
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Accessory' THEN 1
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Mountain' THEN 2
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Road' THEN 3
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Touring' THEN 4
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Components' THEN 5
else 0
END
member [Measures].[Internet Sales AmountAvg2]
as
[Measures].[Internet Sales AmountAvg]*[Measures].[Multipiler]
select
{
[Measures].[Internet Sales Amount]
,
[Measures].[Internet Sales AmountAvg]
,
[Measures].[Multipiler]
,
[Measures].[Internet Sales AmountAvg2]
}
on columns,
(
[Product].[Category].[Category],[Product].[Product Line].[Product Line]
)
on rows
from
[Adventure Works]
where [Date].[Calendar Year].&[2013]
with
member [Measures].[Internet Sales AmountAvg]
as
Avg(EXISTING([Date].[Month of Year].[Month of Year]) ,[Measures].[Internet Sales Amount])
member [Measures].[Multipiler]
as
CASE
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Accessory' THEN 1
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Mountain' THEN 2
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Road' THEN 3
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Touring' THEN 4
WHEN [Product].[Product Line].currentmember.Properties ("Member_Value",TYPED) = 'Components' THEN 5
else 0
END
member [Measures].[Internet Sales AmountAvg2]
as
[Measures].[Internet Sales AmountAvg]*[Measures].[Multipiler]
select
{
[Measures].[Internet Sales Amount]
,
[Measures].[Internet Sales AmountAvg]
,
[Measures].[Multipiler]
,
[Measures].[Internet Sales AmountAvg2]
}
on columns,
(
[Product].[Category].[Category]
)
on rows
from
[Adventure Works]
where [Date].[Calendar Year].&[2013]
底线是,在这种情况下,如果度量值的行为依赖于维度属性值,则需要在轴之一中具有该维度属性。如果不存在,则使用默认值。如果在逻辑中未处理默认值,则会导致错误的结果