SQL BI关系数据报表

发表于:2008-05-07来源:作者:点击数: 标签:sqlSQLSql关系数据
在几乎任何情况下,报表都是以某种数据源为基
在几乎任何情况下,报表都是以某种数据源为基础。所以,在设计报表时的第一件事就是创建一个连接,定义必要的查询来获取报表数据。本章将讨论报表设计必需的第一 步——如何使用数据。尽管设计数据源和查询时一般很简单直接,但仍有大量选项需要考虑。虽然SQL Server报表服务是和SQL Server数据库产品一起提供的,但是它同样可以将其他数据库产品作为数据源。本章讨论了如下主题:

● 创建独立和共享的数据源。

● 设计查询和数据集。

● 在数据库中使用参数来筛选数据。

● 在报表服务器上使用参数来筛选数据。

● 使用分析服务和MDX查询生成器。

● 从其他数据源获取数据。

  每个报表至少有一个数据源(也有极少数用于特殊目的的报表不使用任何数据)。最简单的报表有一个单一数据集提供的数据源。数据源定义了一个文本字符串的连接,把它存储在报表定义文件中或者一个分离的、几个报表共享的数据源文件中。这个连接信息可以包括安全认证。数据集定义了一个查询表达式或者一个用于查询数据库中对象的引用。数据集也包括在报表定义中。下图5-1描述了数据如何流向报表。数据源提供了连接到数据库的能力,数据集包括了一个为报表产生数据的查询表达式。

  更多复杂的报表需要多个数据集来为报表中的不同数据范围或者数据项提供数据或为参数值选择列表赋值。数据集可以基于同一数据源的查询表达式,如图5-2所示。


  多个数据集可以从多个数据源获得数据。这个模型可以使报表能够从本地数据库获得参数值而从中央数据存储中获得报表数据。在某些情况下,数据区域、子报表和不同的报表项可以通过相关数据集的多个数据源来获得数据,如图5-3所示。

  正如所看到的,几乎可以用任何方式组合数据源和数据集。数据源实际上可以是任何数据库产品或者任何通过标准连接库或者驱动查询的数据源。报表服务使用. NET数据提供程序来利用数据,它包括了对SQL Server、Oracle以及所有OLE DB提供程序的支持。这些几乎包括了所有支持ODBC访问或者ISAM驱动的数据库产品。报表服务中的数据集通常是只读的,所以不需要指定光标类型或者锁定选项。
5.1 关系数据报表

  在前一章中,我们简单查看了怎样使用查询生成器。现在可以进一步看看如何创建查询和怎样为报表提供数据。在这里,理解报表的基本构建块是重要的。讨论将从这些基础开始。读者将会遇到几个短的练习,从中体会它是如何工作的。这里假设读者已经使用过了Visual Studio 2005,并且已经用报表向导创建过报表。

  如果读者和我一样是一个.NET的程序员,可能见过“数据集”这个词,并想,“我知道数据集是什么,而且我一直在通过.NET数据访问程序代码来使用它,所以我在报表服务的数据访问上已经领先了一步。”如果读者不是一个.NET程序开发人员,比那些需要重新学习一遍这个词的程序员也领先了一步。附带说一下,如果不是.NET应用程序开发人员,读者根本不需要考虑这个问题。

  为什么术语“数据集”会代表两种完全不同的事物?我们很久以前已经用完了英语中的所有新词。每个人都知道根据环境判断,我们需要再利用。所以这就是我们所做的——回收词汇和短语。这个词就是一个经典的例子。在报表服务中,已经有了报表定义中查询的概念,就是为报表输出提供数据值;我们在Microsoft的好朋友决定称之为“数据集”。如果读者在.NET Framework中通过编程方式访问过数据库,应该知道数据集是一个存放缓冲数据的对象,它在内存中是一个XML定义的结构体。虽然这里提到的两个“数据集”都是用来处理数据、查询、结果集以及绑定报表中显示的数据,但它们是两个完全不同的概念。现在,因为我们已经明确了这些概念,看看这句话:如果要在程序代码中定义一个数据源扩展,可以使用ADO.NET数据集来作为生成报表的一个数据集。

原文转自:http://www.ltesting.net