现在的位置: 首页 > 综合 > 正文

6.1 定义计算成员

2012年01月26日 ⁄ 综合 ⁄ 共 5778字 ⁄ 字号 评论关闭
定义计算成员:

计算成员是基于多维数据集数据、算术运算符、数字和函数的组合而定义的维度或度量值组成员。例如,可以创建用于计算多维数据集中的两个物理度量值之和的计算成员。计算成员定义将存储在多维数据集中,但它们的值将在查询时计算。

若要创建计算成员,请在多维数据集设计器的“计算”选项卡上使用“新建计算成员”命令。您可以在包括度量值维度在内的任意维度中创建计算成员。还可以将计算成员放在“计算属性”对话框的显示文件夹中。有关详细信息,请参阅

在此主题的任务中,将定义计算度量值,以便让用户查看 Internet 销售、分销商销售和所有销售的毛利润率百分比和销售率。

定义聚合物理度量值的计算


定义聚合物理度量值的计算

  1. 打开 Analysis Services Tutorial 多维数据集的多维数据集设计器,然后单击“计算”选项卡。

    注意“计算表达式”窗格和“脚本组织程序”窗格中的默认 CALCULATE 命令。此命令指定多维数据集中的度量值应该根据其 AggregateFunction 属性所指定的值进行聚合。度量值通常会求和,但也可能计数或按其他某种方式进行聚合。

    下图显示了多维数据集设计器的“计算”选项卡。

  2. “计算”选项卡的工具栏上,单击“新建计算成员”

    新窗体将出现在“计算表达式”窗格中,您可以在其中定义此新计算成员的属性。新成员还会出现在“脚本组织程序”窗格中。

    下图显示了在单击“新建计算成员”时出现在“计算表达式”窗格中的窗体。

  3. “名称”框中,将计算度量值的名称更改为 [Total Sales Amount]

    如果计算成员的名称包含空格,则该计算成员名称必须放在方括号中。

    注意,在“父层次结构”列表中,默认情况下,将在“度量值”维度中创建新的计算成员。通常,度量值维度中的计算成员也称为计算度量值。

  4. “计算”选项卡的“计算工具”窗格中的“元数据”选项卡上,展开“度量值”,再展开“Internet 销售”后,可以查看“Internet 销售”度量值组的元数据。

    可以将元数据元素从“计算工具”窗格拖到“表达式”框中,再添加运算符和其他元素,以便创建多维表达式 (MDX)。或者,可以直接在“表达式”框中键入 MDX 表达式。

如果无法在“计算工具”窗格中查看任何元数据,请在工具栏上单击“重新连接”。如果该操作失败,则可能必须处理多维数据集,或启动 Analysis Services 实例。

 

 

  1. “Internet 销售额”“计算工具”窗格中的“元数据”选项卡拖到“计算表达式”窗格中的“表达式”框中。

  2. “表达式”框中,在“[度量值].[Internet 销售额]”的后面键入加号 (+)。
  3. “计算工具”窗格中的“元数据”选项卡上,展开“分销商销售”,再将“分销商销售额”拖到“计算表达式”窗格中的“表达式”框中加号 (+) 的后面。
  4. “格式字符串”列表中,选择“货币”
  5. “非空行为”列表中,选中“Internet 销售额”“分销商销售额”复选框,再单击“确定”

    “非空行为”列表中指定的度量值将用于解决 MDX 中的 NON EMPTY 查询。在“非空行为”列表中指定一个或多个度量值时,如果所有指定的度量值为空,Analysis Services 将把计算成员作为空对待。如果“非空行为”属性是空白,Analysis Services 必须对计算成员本身进行计算,才能确定成员是否为空。

    下图显示了用您在前面的步骤中所指定的设置来填充的“计算表达式”窗格。

  6. “计算”选项卡的工具栏上,单击“脚本视图”,在“计算表达式”窗格中检查计算脚本。

    注意,新的计算将添加到初始 CALCULATE 表达式中;将以分号分隔每个单独的计算。另外注意,在计算脚本的开始位置将出现注释。在计算组的计算脚本中添加注释是好的做法,这样可以帮助您和其他开发人员理解复杂的计算脚本。

  7. 在计算脚本中 Calculate; 命令之后和新添加的计算脚本之前添加新行,然后在脚本中独立的一行上添加以下文本:

    复制代码
    /* Calculations to aggregate Internet Sales and Reseller Sales measures */

    下图显示在教程的此位置应当出现在“计算表达式”窗格中的计算脚本。

    “计算表达式”窗格中的脚本
  8. “计算”选项卡的工具栏上,单击“窗体视图”,验证在“脚本组织程序”窗格中选中的“[总销售额]”,再单击“新建计算成员”
  9. 将这个新计算成员的名称更改为 [Total Product Cost],然后在“表达式”框中创建以下表达式:

    复制代码
    [Measures].[Internet Sales-Total Product Cost] + [Measures].[Reseller Sales-Total Product Cost]

  10. “格式字符串”列表中,选择“货币”
  11. “非空行为”列表中,选中“Internet 销售-总产品成本”“分销商销售-总产品成本”的复选框,然后单击“确定”

    现在,您已经定义了两个计算成员,它们都显示在“脚本组织程序”窗格中。这些计算成员可以由随后在计算脚本中定义的其他计算来使用。通过在“脚本组织程序”窗格中选择计算成员,可以查看任何计算成员的定义;计算成员的定义将出现在窗体视图内的“计算表达式”窗格中。直到已部署新定义的计算成员后,这些对象才会出现在“计算工具”窗格中。计算不需要处理。

定义毛利润率计算


定义毛利润率计算

  1. 验证已在“脚本组织程序”窗格中选中的[总产品成本],然后在“计算”选项卡的工具栏上单击“新建计算成员”

  2. “名称”框中,将此新计算度量值的名称为 [Internet GPM]

  3. “表达式”框中,创建以下 MDX 表达式:

    复制代码
    ([Measures].[Internet Sales-Sales Amount] -
                    [Measures].[Internet Sales-Total Product Cost]) /
                    [Measures].[Internet Sales-Sales Amount]

  4. “格式字符串”列表中,选择“百分比”

  5. “非空行为”列表中,选中“Internet 销售额”复选框,再单击“确定”

  6. “计算”选项卡的工具栏上,单击“新建计算成员”

  7. “名称”框中,将此新计算度量值的名称更改为 [Reseller GPM]

  8. “表达式”框中,创建以下 MDX 表达式:

    复制代码
    ([Measures].[Reseller Sales-Sales Amount] -
                    [Measures].[Reseller Sales-Total Product Cost]) /
                    [Measures].[Reseller Sales-Sales Amount]

  9. “格式字符串”列表中,选择“百分比”

  10. “非空行为”列表中,选中“分销商销售额”复选框,再单击“确定”

  11. “计算”选项卡的工具栏上,单击“新建计算成员”

  12. “名称”框中,将此计算度量值的名称更改为 [Total GPM]

  13. “表达式”框中,创建以下 MDX 表达式:

    复制代码
    ([Measures].[Total Sales Amount] -
                    [Measures].[Total Product Cost]) /
                    [Measures].[Total Sales Amount]

    注意,此计算成员引用了其他计算成员。由于此计算成员将在它所引用的计算成员之后进行计算,所以这是有效的计算成员。

  14. “格式字符串”列表中,选择“百分比”

  15. “非空行为”列表中,选中“Internet 销售额”“分销商销售额”复选框,再单击“确定”

  16. “计算”选项卡的工具栏上,单击“脚本视图”并检查刚才添加到计算脚本中的三个计算。

  17. 在计算脚本中紧靠 [Internet GPM] 计算的前面添加新行,然后在脚本中独立的一行上添加以下文本:

    复制代码
    /* Calculations to calculate gross profit margin */

    下图显示了有三个新计算的“表达式”窗格。

    “计算表达式”窗格中的新计算

定义总计计算的百分比


定义总计计算的百分比

  1. “计算”选项卡的工具栏上,单击“窗体视图”

  2. “脚本组织程序”窗格中,选择[总 GPM],再单击“计算”选项卡的“新建计算成员”工具栏。

    通过在单击“新建计算成员”之前单击“脚本组织程序”窗格中最后一个计算成员,可以保证新计算成员将输入到脚本的末尾。脚本按它们出现在“脚本组织程序”窗格中的顺序执行。

  3. 将此新计算成员的名称更改为 [Internet Sales Ratio to All Products]

  4. “表达式”框中键入以下表达式:

    复制代码
    Case
                    When IsEmpty( [Measures].[Internet Sales-Sales Amount] )
                    Then 0
                    Else ( [Product].[Product Categories].CurrentMember,
                    [Measures].[Internet Sales-Sales Amount]) /
                    ( [Product].[Product Categories].[(All)].[All],
                    [Measures].[Internet Sales-Sales Amount] )
                    End

    此 MDX 表达式将计算每个产品在总计 Internet 销售额中所占的比例。Case 语句与 IS EMPTY 函数一起确保当产品没有销售额时不会发生被零除错误。

  5. “格式字符串”列表中,选择“百分比”

  6. “非空行为”列表中,选中“Internet 销售额”复选框,再单击“确定”

  7. “计算”选项卡的工具栏上,单击“新建计算成员”

  8. 将此计算成员的名称更改为 [Reseller Sales Ratio to All Products]

  9. “表达式”框中键入以下表达式:

    复制代码
    Case
                    When IsEmpty( [Measures].[Reseller Sales-Sales Amount] )
                    Then 0
                    Else ( [Product].[Product Categories].CurrentMember,
                    [Measures].[Reseller Sales-Sales Amount]) /
                    ( [Product].[Product Categories].[(All)].[All],
                    [Measures].[Reseller Sales-Sales Amount] )
                    End

  10. “格式字符串”列表中,选择“百分比”

  11. “非空行为”列表中,选中“分销商销售额”复选框,再单击“确定”

  12. “计算”选项卡的工具栏上,单击“新建计算成员”

  13. 将此计算成员的名称更改为 [Total Sales Ratio to All Products]

  14. “表达式”框中键入以下表达式:

    复制代码
    Case
                    When IsEmpty( [Measures].[Total Sales Amount] )
                    Then 0
                    Else ( [Product].[Product Categories].CurrentMember,
                    [Measures].[Total Sales Amount]) /
                    ( [Product].[Product Categories].[(All)].[All],
                    [Measures].[Total Sales Amount] )
                    End

  15. “格式字符串”列表中,选择“百分比”

  16. “非空行为”列表中,选中“Internet 销售额”“分销商销售额”复选框,再单击“确定”

  17. “计算”选项卡的工具栏上,单击“脚本视图”,再检查刚才添加到计算脚本中的三个计算。

  18. 在计算脚本中紧靠 [所有产品的 Internet 销售额比率]计算之前添加新行,然后在脚本中独立的行上添加以下文本:

    复制代码
    /* Calculations to calculate percentage of product to total product sales */

    现在已经定义了八个计算成员的总计,打开“窗体”视图时,这些成员显示在“脚本组织程序”窗格中。

浏览新计算成员


浏览新计算成员

  1. 在 Business Intelligence Development Studio 的“生成”菜单上,单击“部署 Analysis Services 教程”

  2. 部署已经成功完成后,切换到“浏览器”选项卡,并单击“重新连接”,然后从“数据”窗格中删除所有层次结构和度量值。

  3. “元数据”窗格中,展开“度量值”以查看度量值维度中的新计算成员。

  4. “总销售额”“Internet 销售额”“分销商销售额”度量值添加到数据区域,然后检查结果。

    注意,“总销售额”度量值是“Internet 销售额”度量值与“分销商销售额”度量值之和。

  5. “产品类别”用户定义层次结构添加到“数据”窗格的筛选区域中,再按“山地自行车”对该数据进行筛选。

    注意,“总销售额”度量值是基于“山地自行车”“Internet 销售额”“分销商销售额”度量值对“山地自行车”类别的产品销售额进行计算而产生的。

  6. “日期.日历时间”用户定义层次结构添加到行区域,然后检查结果。

    注意,每个日历年的“总销售额”度量值是基于“山地自行车”“Internet 销售额”“分销商销售额”度量值对“山地自行车”类别的产品销售额进行计算而产生的。

  7. “总 GPM”Internet GPM“分销商 GPM”度量值添加到数据区域,然后检查结果。

    注意,分销商销售的毛利润率要比 Internet 销售低很多。另外注意,山地车销售的毛利润率正在随时间推移而增长,如下图所示。

  8. “所有产品的总销售额比率”“所有产品的 Internet 销售额比率”“所有产品的分销商销售额比率”度量值添加到数据区域。

    注意,Internet 销售的山地车销售额在所有产品中所占的比率随时间推移而增长,但在分销商那里却在随时间推移而减少。另外注意,通过分销商销售的山地车销售额在所有产品中所占的比率低于通过 Internet 销售完成的该比率。

  9. 将筛选器从“山地自行车”更改为“自行车”,然后检查结果。

    注意,通过分销商销售的所有自行车的毛利润率都是负数,这是因为观光自行车和道路自行车都在亏损销售。

  10. 将筛选器更改为“附件”,然后检查结果。

    注意,附件的销售正在随时间而增长,但这些销售只构成总销售额的一小部分。另外注意,附件销售的毛利润率比自行车还高。

  11. 依次展开 CY 2004H2 CY 2004 以及 Q3 CY 2004

    注意,此多维数据集中 2004 年 7 月之后没有 Internet 销售额,并且 2004 年 6 月之后没有分销商销售额。这些销售值还没有从源系统添加到 Adventure Works DW 数据库。

抱歉!评论已关闭.