使用标量表达式

在多维表达式(MDX)中,标量表达式是MDX语法中的一个元素,在评估上下文中返回一个单一值。

标量表达式包括MDX中的字符串、数字和日期表达式。

标量表达式通常用于计算成员定义,因为计算出的成员必须返回标量值。 以下查询展示了在度量维度上使用不同类型标量表达式的计算成员示例:

WITH  
MEMBER MEASURES.NumericValue AS 10  
MEMBER MEASURES.NumericExpression AS 10 + 10  
MEMBER MEASURES.NumericExpressionBasedOnMeasure AS [Measures].[Internet Sales Amount] + 10  
MEMBER MEASURES.StringValue AS "10"  
MEMBER MEASURES.ConcatenatedString AS "10" + "10"  
MEMBER MEASURES.StringFunction AS MEASURES.CURRENTMEMBER.NAME  
MEMBER MEASURES.TodaysDate AS NOW()  
SELECT  
{MEASURES.NumericValue,MEASURES.NumericExpression,MEASURES.NumericExpressionBasedOnMeasure,  
MEASURES.StringValue, MEASURES.ConcatenatedString, MEASURES.StringFunction, MEASURES.TodaysDate}  
ON COLUMNS  
FROM [Adventure Works]  

测量(无论是否计算)唯一能返回的数据类型是 OLE 变体类型。 因此,有时你需要向特定类型投射一个测度值,才能获得你期望的行为。 以下查询展示了一个示例:

WITH  
//Two calculated measures that return strings  
MEMBER MEASURES.NumericString1 AS "10"  
MEMBER MEASURES.NumericString2 AS "10"  
//In this case, the + operator acts to concatenate the strings  
MEMBER MEASURES.Concatenation AS MEASURES.NumericString1 + MEASURES.NumericString2  
//Casting one value to an integer with the CINT function causes the second measure  
//to be treated as an integer too, so that the + operator now acts to add the values  
MEMBER MEASURES.Addition AS CINT(MEASURES.NumericString1) + MEASURES.NumericString2  
SELECT  
{MEASURES.NumericString1,MEASURES.NumericString2,MEASURES.Concatenation,MEASURES.Addition }  
ON COLUMNS  
FROM [Adventure Works]