有没有办法指定或强制计算成员的数据类型?

时间:2015-02-18 16:11:13

标签: ssas mdx olap adomd.net mdxclient

我的多维数据集中的每个度量的数据类型都指定为Currency。 我也有计算成员,其中一些有iif(isempty([Measures].[Measure1]) or [Measures].[Measure1] = 0, null, 100 * [Measures].[Measure2] / [Measures].[Measure1])逻辑。

我使用MdxClient访问此多维数据集(内部使用AdomdCommand.ExecuteXmlReader),并注意到此计算成员中的某些成员返回xsd:double而不是xsd:decimal 。所以我假设它们的计算结果为Double而不是Currency。查询结果映射到客户端的强类型数据集,因此返回的类型对我很重要。

我可以强迫' ssas通过用xsd:decimalVBA!CDec包装每个被调用的成员来返回CDec,但这会严重降低性能。

是否有更智能的方法来设置或强制计算成员为Currency?或至少按xsd:decimal

返回AdomdCommand.ExecuteXmlReader

2 个答案:

答案 0 :(得分:0)

我认为无法设置计算出的度量的数据类型。数据类型将根据计算中使用的度量以及您正在执行的计算类型进行分配。

答案 1 :(得分:0)

以这种方式获得计算成员的代码:

MEMBER [Measures].[CurrencyMeasure] 
AS
iif(isempty([Measures].[Measure1]) or 
[Measures].[Measure1] = 0, null, 
100 * [Measures].[Measure2] / [Measures].[Measure1]), FORMAT_STRING="Currency"