了解报表数据集

数据集指定要从数据连接使用的数据。数据集基于已作为嵌入数据源或对报表服务器上共享数据源的引用保存在报表中的数据连接。数据集包括指定一组字段的查询。在您将这些字段拖到设计图面上时,将创建在报表运行时对实际数据进行计算的表达式。

有两种类型的数据集:

  • 共享数据集:在报表服务器上定义共享数据集。您可以浏览到服务器以便创建共享数据集,或选择一个预定义数据集以便添加到您的报表。有关详细信息,请参阅管理共享数据集

  • 嵌入数据集。只能在嵌入了嵌入数据集的报表中定义和使用嵌入数据集。

数据集还包含参数、筛选器和指定字符区分的数据选项(包括区分大小写、假名类型、宽度、重音以及排序规则信息)。

组件是您可以在报表中包括的可重复使用的报表项。如果一个组件具有相关数据集,则这些数据集将嵌入在该组件中。在您向报表中添加组件时,还将添加它们所依赖的所有数据集。在将这些数据集添加到报表中后,它们与您从报表服务器中添加或手动创建的数据集没有差异。有关详细信息,请参阅在报表设计器中发布报表部件

了解报表数据集数据

报表数据集可以由以下类型的数据组成:

  • 来自关系数据库的结果集,它可以是运行数据库命令、存储过程或用户定义函数的结果。如果通过单个查询检索到多个结果集,则仅处理第一个结果集,并忽略所有其他结果集。例如,在基于文本的查询设计器中运行以下查询时,只有 Production.Product 的结果集出现在结果窗格中:

    SELECT ProductID FROM Production.Product;
    GO
    SELECT ContactID FROM Person.Person;
    
  • 来自多维数据源的平展行集,此类数据源使用 XML for Analysis (XMLA) 协议。某些数据访问接口提供来自数据源的其他单元和维度属性,在结果集中看不到这些属性,但它们会出现在报表中。

  • 来自 XML 数据源的平展结果集,此类数据源包括 XML 元素、它们的属性以及它们的子元素。

  • 来自任何注册和配置的 .NET Framework 数据访问接口的结果集。

  • 来自为特定数据源设计的报表模型的数据,这样的报表模型具有预定义实体、实体关系和字段。有关详细信息,请参阅将报表模型用作数据源

当在运行时处理报表时,查询返回的实际结果集可能有零行或更多行。在查询中定义的列也有可能已从数据源中丢失。来自数据源的 Null 值映射到 .NET Framework 值 System.DBNull.Value。

设置数据属性

定义报表数据集时,可以在查询中设置数据属性,也可以接受由数据访问接口设置的默认值。可以通过使用以下策略之一来更改数据类型:

  • 重写数据集查询,以将某字段明确转换为其他数据类型。

  • 编辑数据集中的字段,并提供自定义格式。

  • 基于数据库字段创建新的自定义字段,并提供自定义格式。

对于支持国际数据的数据源,可能需要调整那些影响排序顺序、国际字符属性以及是否将大写和小写字符视为等效字符的数据集属性。这些属性包括大小写、假名类型、宽度、重音和排序规则。有关详细信息,请参阅数据库和数据库引擎应用程序的国际化注意事项使用排序规则。有关如何设置这些属性的详细信息,请参阅“数据集属性”对话框 ->“选项”

将共享数据集添加到报表时,不能更改定义为该共享数据集定义的一部分的查询或筛选器。您可以添加其他筛选器,或覆盖该报表中的实例的数据集选项。有关详细信息,请参阅 msdn.microsoft.com 上 Report Builder 3.0 文档中的嵌入数据集和共享数据集 (Report Builder 3.0)

了解数据集字段集合中的数据类型

在数据源中,数据以该数据源所支持的数据类型存储。例如,SQL Server 数据库中的数据必须是受支持的 SQL Server 数据类型之一,例如 nvarchar 或 datetime。从数据源检索数据时,数据通过与数据源类型相关联的数据处理扩展插件或数据访问接口进行传递。数据可能从数据源所使用的数据类型转换为数据处理扩展插件所支持的数据类型,具体取决于数据处理扩展插件。Reporting Services 使用随 Business Intelligence Development Studio 安装的公共语言运行时 (CLR) 所支持的数据类型。数据访问接口将结果集中的每一列从本机数据类型映射到 .NET Framework 公共语言运行时 (CLR) 数据类型。

在每个阶段,数据分别由不同的数据类型表示,如以下列表所描述:

  • 数据源:所连接的数据源类型版本支持的数据类型。

    例如,SQL Server 数据源的典型数据类型包括 int、datetime 和 varchar。由 SQL Server 2008 引入的数据类型增加了对 date、time、datetimetz 和 datetime2 的支持。有关详细信息,请参阅数据类型 (Transact-SQL)

  • 数据访问接口或数据处理扩展插件:连接到数据源时选择的数据访问接口或数据处理扩展插件版本所支持的数据类型。基于 .NET Framework 的数据访问接口使用 CLR 支持的数据类型。有关 .NET Framework 数据访问接口数据类型的详细信息,请参阅 MSDN 上的 Data Type Mappings (ADO.NET)(数据类型映射 (ADO.NET))和 Working with Base Types(使用基类型)。

    例如,.NET Framework 支持的典型数据类型包括 Int32 和 String。DateTime 结构支持日历日期和时间。.NET Framework 2.0 Service Pack 1 引入了对 DateTimeOffset 结构的支持,用于表示带时区偏移量的日期。

    备注

    报表服务器使用在报表服务器上安装和配置的数据访问接口。处于预览模式的报表创作客户端使用客户端计算机上安装并配置的数据处理扩展插件。您必须在报表客户端环境和报表服务器环境中测试报表。

  • 报表处理器   数据类型基于在安装 Reporting Services 时所安装的 CLR 版本。

    例如,下表显示了报表处理器用于 SQL Server 2008 中引入的新日期和时间类型的数据类型:

    SQL 数据类型

    CLR 数据类型

    说明

    Date

    DateTime

    仅日期

    Time

    TimeSpan

    仅时间

    DateTimeTZ

    DateTimeOffset

    带有时区偏移量的日期和时间

    DateTime2

    DateTime

    带有毫秒的小数部分的日期和时间

有关 SQL Server 数据库类型的详细信息,请参阅数据类型(数据库引擎)日期和时间数据类型及函数 (Transact-SQL)

有关在表达式中包括对数据集字段的引用的详细信息,请参阅在表达式中使用数据类型 (Reporting Services)

使用多个数据集

报表通常有多个数据集。下表介绍如何在报表中使用数据集:

  • 使用单独的数据区域显示每个数据集中的数据。有关详细信息,请参阅使用数据区域

  • 可以将多个数据区域链接到一个数据集,并为相同数据提供多个视图。有关详细信息,请参阅将多个数据区域链接到同一数据集

  • 可以使用数据集提供报表参数的可用值或默认值的下拉列表。有关详细信息,请参阅向报表中添加参数

  • 通过对钻取报表或子报表使用参数,可以链接多个数据集中的相关数据。例如,销售报表可以显示所有商店的摘要数据,而钻取链接可以指定商店标识符作为具有以下数据集查询的报表的参数:检索指定商店各销售量的数据集查询。有关详细信息,请参阅添加钻取报表添加子报表

  • 不能在单个数据区域中显示来自多个数据集的详细信息数据。但是,可以在一个数据区域中显示多个数据集的聚合或内置函数值。有关详细信息,请参阅在表达式中使用内置报表函数和聚合函数 (Reporting Services)。如果需要将来自多个数据集的详细信息数据组合到一个数据区域中,则必须重写查询,以作为单个数据集检索数据。

为数据集导入现有查询

创建数据集时,可以创建新的查询,也可以从文件或从另一个报表导入现有查询。仅支持 .sql 和 .rdl 文件类型。多维表达式 (MDX) 查询或数据挖掘预测 (DMX) 查询只能由 Reporting Services 查询设计器生成,因为结果集必须作为平展行集进行检索。

从另一个报表导入查询时,可以从此报表内数据集的列表中选择要导入哪个查询。

在运行时未检索到任何数据行的情况下显示消息

在报表处理期间,当运行对数据集的查询时,结果集可能不包含任何行。在呈现的报表中,链接到空数据集的数据区域将显示为空数据区域。可以指定要在呈现的报表中代替空数据区域的显示文本。还可以为子报表指定消息,以便如果在运行时对所有数据集的查询没有产生任何数据,则显示该消息。有关详细信息,请参阅如何为数据区域设置“无数据”消息

检测丢失的字段

处理报表时,数据集的结果集可能会由于数据源中不再存在指定的所有列而不包含这些列的值。可以使用字段属性 IsMissing 检测在运行时是否返回了某个字段的值。有关详细信息,请参阅在表达式中使用数据集字段集合引用 (Reporting Services)

显示隐藏的数据集

为某些多维数据源创建参数化查询时,Reporting Services 将自动创建数据集,以为参数提供有效值。默认情况下,这些数据集不显示在“报表数据”窗格中。有关详细信息,请参阅如何显示隐藏的数据集

请参阅

参考

datetimeoffset (Transact-SQL)

DATEPART (Transact-SQL)

EXECUTE (Transact-SQL)

概念

创建报表数据集

Reporting Services 支持的数据源

数据处理扩展插件和 .NET Framework 数据访问接口

连接数据源 (Reporting Services)

管理报表数据源