CREATE SUBCUBE 语句 (MDX)

将所指定多维数据集或子多维数据集的多维数据集空间重定义给一个指定的子多维数据集。此语句更改了用于后续操作的表观多维数据集空间。

语法

CREATE SUBCUBE Cube_Name AS Select_Statement
                                                  | NON VISUAL ( Select_Statement )

参数

  • Cube_Name
    为受限的多维数据集或透视提供名称的有效字符串表达式,该名称将作为子多维数据集的名称。

  • Select_Statement
    不包含 WITH、NON EMPTY 或 HAVING 子句并且不要求维度或者单元属性的有效多维表达式 (MDX) SELECT 表达式。

    有关对 Select 语句和 NON VISUAL 子句的详细语法说明,请参阅 SELECT 语句 (MDX)

注释

如果将默认成员排除在子多维数据集的定义之外,坐标将会相应更改。对于可以聚合的属性,默认成员会被移到 [All] 成员中。对于不可聚合的属性,默认成员会被移到该子多维数据集中存在的某一成员中。下表包含子多维数据集和默认成员组合的示例。

原始默认成员

可以聚合

子多维数据集

修改后的默认成员

Time.Year.All

{Time.Year.2003}

没有变化

Time.Year.[1997]

{Time.Year.2003}

Time.Year.All

Time.Year.[1997]

{Time.Year.2003}

Time.Year.[2003]

Time.Year.[1997]

{Time.Year.2003, Time.Year.2004}

Time.Year.All

Time.Year.[1997]

{Time.Year.2003, Time.Year.2004}

Time.Year.[2003] 或

Time.Year.[2004]

子多维数据集中始终存在 [All] 成员。

删除子多维数据集时,也会删除在该子多维数据集的上下文中创建的会话对象。

有关子多维数据集的详细信息,请参阅在 MDX 中生成子多维数据集 (MDX)

示例

下例创建了一个子多维数据集,将表观多维数据集空间限制为与加拿大关联的成员。然后,它使用 MEMBERS 函数返回“地域”用户定义层次结构的“国家(地区)”级别的所有成员 - 将仅返回国家为加拿大的成员。

CREATE SUBCUBE [Adventure Works] AS
   SELECT [Geography].[Country].&[Canada] ON 0
   FROM [Adventure Works]

SELECT [Geography].[Country].[Country].MEMBERS ON 0
   FROM [Adventure Works]

下例创建了一个子多维数据集,将表观多维数据集空间限制为 Products.Category 中的 {Accessories, Clothing} 成员和 Resellers.[Business Type] 中的 {[Value Added Reseller] , [Warehouse]} 成员。

CREATE SUBCUBE [Adventure Works] AS

Select {[Category].Accessories, [Category].Clothing} on 0,

{[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 1

from [Adventure Works]

利用下面的 MDX 查询 Products.Category 和 Resellers.[Business Type] 中所有成员的子多维数据集:

select [Category].members on 0,

[Business Type].members on 1

from [Adventure Works]

where [Measures].[Reseller Sales Amount]

生成下列结果:

 

所有产品

附件

服装

所有分销商

$2,031,079.39

$506,172.45

$1,524,906.93

增值分销商

$767,388.52

$175,002.81

$592,385.71

仓库

$1,263,690.86

$331,169.64

$932,521.23

使用 NON VISUAL 子句删除并重新创建子多维数据集将会创建一个子多维数据集,用于保留 Products.Category 和 Resellers.[Business Type] 中所有成员的实际总数,不论他们在子多维数据集中是否可见。

CREATE SUBCUBE [Adventure Works] AS

NON VISUAL (Select {[Category].Accessories, [Category].Clothing} on 0,

{[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 1

from [Adventure Works])

从上面发出同一 MDX 查询。

select [Category].members on 0,

[Business Type].members on 1

from [Adventure Works]

where [Measures].[Reseller Sales Amount]

生成以下不同的结果:

 

所有产品

附件

服装

所有分销商

$80,450,596.98

$571,297.93

$1,777,840.84

增值分销商

$34,967,517.33

$175,002.81

$592,385.71

仓库

$38,726,913.48

$331,169.64

$932,521.23

[All Products] 和 [All Resellers] 分别为列和行,包含所有成员(而不仅是可见成员)的总数。