如何理解组(报表设计器和SSRS)

在报表生成器中,组是从报表数据集中通过名称标识的数据集合,并绑定到一个数据区域。 基本上,一个组可组织一个报表数据集视图。 数据区域中的所有组都指定相同报表数据集的不同视图。

若要帮助直观显示组的内容,请参阅下图,其中显示了预览版中的 Tablix 数据区域。 在此图中,行组按产品类型对数据集进行分类,列组按地理区域和年份对数据集进行分类。

Tablix 数据区域

以下几节帮助描述组的各个方面。

注释

可以在报表生成器和 SQL Server Data Tools 中的报表设计器中创建和修改报表定义(.rdl)。 每个创作环境提供了创建、打开和保存报表和相关项的不同方法。 有关详细信息,请参阅 microsoft.com Web 上的 报表设计器和报表生成器(SSRS)中设计报表

什么是组?

一个组具有指定的名称和一个组表达式集。 该组表达式集可以是单个数据集字段引用,也可以是多个表达式的组合。 在运行时,如果组包含多个表达式,这些表达式会被组合并应用于组内的数据。 例如,有一个组使用日期字段来组织数据区域中的数据。 在运行时,数据按日期进行组织,然后显示每个日期的其他数据集值总数。

何时创建组?

大多数情况下,报表生成器和报表设计器会在您设计数据区域时自动为您创建组。 对于表、矩阵或列表,在“分组”窗格中删除字段时,将创建组。 对于图表,当您在图表放置区上放置字段时,将创建组。 对于仪表,必须使用仪表属性对话框。 对于表、矩阵或列表,还可以手动创建组。 有关详细信息,请参阅在数据区域中添加或删除组(报表生成器和 SSRS)。 有关如何在创建报表时添加组的示例,请参阅教程:创建基本表报表(报表生成器)创建基本表报表(SSRS 教程)。

如何修改组?

在创建组之后,可以设置特定于数据区域的属性(例如筛选器和排序表达式、分页符和组变量),以存储特定于作用域的数据。 有关详细信息,请参阅对数据进行筛选、分组和排序(报表生成器和 SSRS)

若要修改现有组,请打开相应的组属性对话框。 可以更改组的名称。 此外,还可以根据单个字段或多个字段指定组表达式,也可以指定在运行时指定值的报表参数。 还可以使组基于一个表达式集,例如一个用于指定人口统计学数据的年龄范围的表达式集。 有关详细信息,请参阅组表达式示例(报表生成器和 SSRS)。

注释

如果更改组的名称,则必须手动更新引用该组的以前名称的任何组表达式。

群组是如何组织的?

了解组组织可以通过指定相同的组表达式来帮助设计显示相同数据的不同视图的数据区域。

对于每个数据区域,组都在内部组织为一个或多个层次结构的成员。 组层次结构包含嵌套的且可以有相邻组的父/子组。

如果将父/子组视为树结构,则每个组层次结构都是树结构的林。 Tablix 数据区域包括行组层次结构和列组层次结构。 与行组成员关联的数据水平跨越页面展开,与列组成员关联的数据在页面上垂直向下展开。 “分组”窗格显示设计图面上当前所选 Tablix 数据区域的行组和列组成员。 有关详细信息,请参阅“分组”窗格(报表生成器)

图表数据区域包括类别组层次结构和序列组层次结构。 类别组成员显示在分类轴上,序列组成员显示在系列轴上。

虽然仪表数据区域通常不需要分组,但组合确实允许你指定如何对仪表上的数据进行聚合分组。

每个数据区域提供哪些类型的组?

网格展开型数据区域支持的用户群体与通过视觉显示摘要数据的区域不同。 因此,Tablix 数据区域以及基于 Tablix 数据区域的表、列表和矩阵支持不同于图表或仪表的组。 以下各节讨论每种类型的数据区域中分组的类型和用途。

注释

尽管组在不同数据区域中有不同的名称,但如何创建和使用组的原则是相同的。 为数据区域创建组时,指定从链接到数据区域的数据集中组织详细信息数据的方法。 每个数据区域都支持一个用于显示分组数据的组结构。

Tablix 数据区域中的组:明细、行组和列组

如本主题前面所示,Tablix 数据区域使你可以按行或列将数据组织成组。 但是,行组和列组不是 Tablix 数据区域中唯一可用的组。 此数据区域可以具有以下类型的组:

  • 详细信息组 “详细信息”组由报表生成器或报表设计器应用数据集和数据区域筛选器后报表数据集中的所有数据组成。 因此,“详细信息”组是唯一没有组表达式的组。

    基本上,详细信息组指定在查询设计器中运行数据集查询时会看到的数据。 例如,有一个从销售订单表中检索所有列的查询。 因此,此详细信息组中的数据包括表中所有列的每一行的所有值。 详细信息组中的数据还包括您创建的任何计算数据集字段的值。

    注释

    详细信息组中的数据还可以包括服务器聚合,这些聚合是在数据源上计算并在查询中检索的聚合。 默认情况下,除非你的报表包括使用聚合函数的表达式,否则报表生成器和报表设计器会将服务器聚合视为详细信息数据。 有关详细信息,请参阅 聚合

    默认情况下,向报表添加表或列表时,报表生成器和报表设计器会自动为你创建详细信息组,并添加一行以显示详细信息数据。 默认情况下,在此行中向单元格添加数据集字段时,会看到字段的简单表达式,例如 [Sales]。 查看数据区域时,详细信息行对结果集中的每个值重复一次。

  • 行组和列组 可以按行或列将数据组织成组。 行组在页上垂直展开。 列组在页上水平展开。 组可以嵌套,例如,首先按 [年份] 分组,然后按 [季度],再按 [月份]。 组也可以是相邻的,例如在 [Territory] 上分组,并在 [ProductCategory] 上独立分组。

    为数据区域创建组时,报表生成器和报表设计器会向该数据区域自动添加行或列,并使用这些行或列显示组数据。

  • 递归层次结构组 递归层次结构组从包含多个级别的单个报表数据集组织数据。 示例,递归层次结构组可以显示组织层次,例如员工向另一员工报告的关系。 Reporting Services 提供的组属性和内置函数使你能够为这种报表数据创建组。 有关详细信息,请参阅创建递归层次结构组(报表生成器和 SSRS)

下面的列表总结了对每个数据区域使用组的方式:

  • 表格 定义嵌套行组、相邻行组和递归的层级结构行组(例如组织结构图)。 默认情况下,表包括详细信息组。 可通过将数据集字段拖到所选表的“分组”窗格添加组。

  • 矩阵 定义嵌套行组和列组,以及相邻的行组和列组。 通过将数据集字段拖动到所选矩阵的“分组”窗格来添加组。

  • 列表 默认情况下,支持详细信息组。 典型的用途是支持一级分组。 通过将数据集字段拖动到所选列表的“分组”窗格来添加组。

添加组之后,数据区域的行和列控点将更改,以反映组成员身份。 删除组时,可以选择仅删除组定义,也可以选择删除组及其所有关联的行和列。 有关详细信息,请参阅 Tablix 数据区域单元、行和列(报表生成器和 SSRS)

若要限制要在详细信息数据或组数据的计算中显示或使用的数据,请为组设置筛选器。 有关详细信息,请参阅添加数据集筛选器、数据区域筛选器和组筛选器(报表生成器和 SSRS)

默认情况下,在创建组时,组的排序表达式与组表达式相同。 若要更改排序顺序,请更改排序表达式。 有关详细信息,请参阅对数据进行筛选、分组和排序(报表生成器和 SSRS)

了解 Tablix 单元格的组成员关系

Tablix 数据区域的行或列中的单元可以属于多个行组和列组。 在使用聚合函数(例如 =Sum(Fields!FieldName.Value)的单元的文本框中定义表达式时,单元的默认组作用域是其所属的最内部的子组。 如果某个单元同时属于行组和列组,则作用域是两个最内部的组。 还可以编写表达式,用于相对于另一个数据集计算以某组为作用域的聚合小计。 例如,可以相对于列组或相对于数据区域的所有数据(例如 =Sum(Fields!FieldName.Value)/Sum(Fields!FieldName.Value,"ColumnGroup"))计算组的百分比。 有关详细信息,请参阅 Tablix 数据区域(报表生成器和 SSRS) 以及 总计、聚合和内置集合(报表生成器和 SSRS)的表达式范围

另请参阅

在数据区域中添加或删除组(报表生成器和 SSRS)
向组或 Tablix 数据区域添加总计(报表生成器和 SSRS)
对数据区域中的数据排序(报表生成器和 SSRS)
深化操作(报表生成器和 SSRS)
列表(报表生成器和 SSRS)