创建一个计算过的成员。
Syntax
CREATE [ SESSION ] [HIDDEN] [ CALCULATED ] MEMBER CURRENTCUBE | Cube_Name.Member_Name
AS MDX_Expression
[,Property_Name = Property_Value, ...n]
......[,SCOPE_ISOLATION = CUBE]
Arguments
Cube_Name
一个有效的字符串表达式,提供将创建成员的立方体名称。
Member_Name
一个有效的字符串表达式,提供成员名。 指定一个完全限定的名称,以便在除度量维度外的维度内创建成员。 如果您未提供完全合格的成员名称,该成员将在衡量维度中创建。
MDX_Expression
一个有效的多维表达式(MDX)表达式。
Property_Name
一个有效字符串,提供计算出的成员属性名称。
Property_Value
一个定义计算成员属性值的有效标量表达式。
Remarks
CREATE MEMBER 语句定义了整个会话中可用的计算成员,因此可以在会话中的多个查询中使用。 更多信息请参见创建 Session-Scoped 计算成员(MDX)。
你也可以定义一个计算成员,供单查询使用。 要定义一个计算成员且限制为单一查询,可以在SELECT语句中使用WITH子句。 更多信息请参见创建 Query-Scoped 计算成员(MDX)。
Property_Name 可以指标准或可选的计算成员属性。 标准成员属性将在本主题后面列出。 用CREATE MEMBER创建但没有 SESSION 值的计算成员具有会话范围。 此外,计算成员定义内的字符串用双引号分隔。 这与 OLE DB 定义的方法不同,后者规定字符串应用单引号分隔。
指定当前连接的立方体以外的其他立方体会出错。 因此,你应该用 CURRENTCUBE 代替立方体名称来表示当前立方体。
有关 OLE DB 定义的成员属性的更多信息,请参见 OLE DB 文档。
Scope
计算出的成员可能出现在下表列出的范围内之一。
查询范围
计算成员的可见性和寿命仅限于查询。 计算成员在单个查询中定义。 查询范围覆盖会话范围。 更多信息请参见创建 Query-Scoped 计算成员(MDX)。
会话范围
计算成员的可见性和寿命仅限于其创建的会话。 (如果对计算成员发出DROP MEMBER声明,生命周期将短于会话时长。)CREATE MEMBER 语句创建一个带有会话范围的计算成员。
范围隔离
当一个Cube多维表达式(MDX)脚本包含计算成员时,默认情况下,计算成员会在任何会话范围计算和查询定义计算之前被解析。
这种行为允许通用客户端应用程序处理包含复杂计算的立方体,而无需考虑计算的具体实现。 然而,在某些情况下,你可能希望在立方体中的某些计算之前执行会话或查询范围的计算成员,而汇 总 函数和 VisualTotals 函数都不适用。 为此,可以使用SCOPE_ISOLATION计算性质。
Example
以下脚本是一个情景示例,其中SCOPE_ISOLATION计算属性是产生正确结果的必要条件。
Cube的MDX脚本:
CREATE MEMBER CURRENTCUBE.Measures.ProfitRatio AS 'Measures.[Store Sales]/Measures.[Store Cost]', SOLVE_ORDER = 10
MDX查询:
WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio
前一查询的期望结果是美国无华盛顿州销售额与无华盛顿州美国商店成本的比率。 之前的查询未返回期望结果;它返回的是美国减去西澳比值的比值,但这是一个无意义的结果。 为了达到预期结果,你可以使用SCOPE_ISOLATION计算性质。
使用 SCOPE_ISOLATION 计算属性的 MDX 查询:
WITH MEMBER [Customer].[Customers].[USA]. USAWithoutWA AS
[Customer].[Customers].[Country].&[USA] - [Customer].[Customers].[State Province.&[WA], SOLVE_ORDER=5
,SCOPE_ISOLATION=CUBE
SELECT {USAWithoutWA} ON 0 FROM SALES
WHERE ProfitRatio
标准性质
每个计算出的成员都有一组默认属性。 当客户端应用程序连接到Analysis Services时,默认属性要么被支持,要么可由管理员选择支持。
根据立方体定义,可能会有额外的成员属性。 以下属性代表与立方体维度相关的信息。
| 属性标识符 | Meaning |
|---|---|
| SOLVE_ORDER | 当一个计算成员引用另一个计算成员时(即计算成员相交时),计算出的成员解的顺序。 |
| FORMAT_STRING | 客户端应用程序在显示单元格值时可以使用的 Office 格式字符串。 |
| 可见 | 一个表示计算成员是否在模式行集中可见的值。 可见的计算成员可以通过 AddCalculatedMembers 函数添加到集合中。 非零值表示计算出的构件是可见的。 该属性的默认值为 可见。 不可见的计算成员(此值设为零)通常作为更复杂计算成员中的中间步骤。 这些计算出的成员也可以用其他类型的成员来称呼,比如度量。 |
| NON_EMPTY_BEHAVIOR | 用于确定计算成员在解析空单元格时行为的度量或集合。 ** 警告 ** 该属性已被弃用。 避免设置。 详情请参见 SQL Server 2014 中已弃用的分析服务功能。 |
| 说明 | 客户端应用程序用来表示成员的字符串。 |
| DISPLAY_FOLDER | 一个字符串,用于标识客户端应用程序用来显示成员的显示文件夹路径。 文件夹级分隔符由客户端应用程序定义。 对于Analysis Services提供的工具和客户端,反斜杠(\)是级别分隔符。 要为定义成员提供多个显示文件夹,使用分号(;)分隔这些文件夹。 |
| ASSOCIATED_MEASURE_GROUP | 该成员所关联的测度群名称。 |