Share via


Minidemo 2: Report Builder

En esta segunda minidemo nos centraremos en la funcionalidad de Reporting Services 2005 de capacitar al usuario final con la posibilidad de construirse sus propios informes. Para ello, este usuario utilizará la herramienta que conocemos con el nombre de Report Builder que a su vez se alimentará de un “modelo de datos” previamente definido por un desarrollador.

El informe objetivo será el mismo que en la minidemo 1, es decir la tabla que podemos encontrar al final del informe de ejemplo Employee Sales Summary de Adventure Works.

Definición del “modelo de datos”

Crearemos un nuevo proyecto en BI Development Studio del tipo “Report Model Project” con el nombre “My Report Models” (Este proyecto nos puede servir de base para múltiples modelos de datos)

Los modelos de datos se estructuran en 3 tipos de objetos:

1. Data Sources: Definen el origen de los datos.
2. Data Source Views: Del conjunto de tablas y vistas disponibles en el origen de datos, un data source view acota con que tablas y vistas vamos a trabajar. Una vez seleccionadas las tablas y/o vistas podremos alterar su estructura en el data source view sin alterar el origen de datos.
3. Report Models: Definen el modelo de datos que el usuario utilizará para crear su informe. Los report models se basan en “data source views” y al igual que estos también pueden alterar la estructura de las tablas/vistas sin afectar ni al origen de datos ni al data source view.

Data Source

- El primer paso será crear un “Data Source”. Para ello haremos clic con el botón derecho sobre la carpeta “Data Sources” del panel “Solution Explorer” y seguiremos el wizard para crear una conexión a la base de datos AdventureWorks de nuestro servidor SQL Server 2005.

Data Source View

- Para crear un “Data Source View” haremos clic derecho sobre la carpeta “Data Source Views” del panel “Solution Explorer”.
    o Utilizaremos el “Data Source” creado anteriormente como origen de datos.
    o Seleccionaremos las siguientes tablas para incluir dentro del “Data Source View”:
        · Sales.SalesPerson
        · Sales.SalesOrderHeader
        · Sales.SalesOrderDetail
        · Production.ProductSubcategory
        · Production.ProductCategory
        · Production.Product
        · Person.Contact
        · HumanResources.Employee

- Llamaremos a la vista de datos “Product Sales by Employee and Product Category”

Una vez creado el Data Source View lo abriremos para crear una relación inexistente en el origen de datos para las tablas escogidas.

- Doble clic en el Data Source View “Product Sales by Employee and Product Category”
- De la tabla “SalesOrderDetail” seleccionamos el campo “ProductID”
- Arrastramos el campo hasta el campo “ProductID” de la tabla “Product”
- Para asegurarnos que la relación se ha creado correctamente haremos doble clic sobre la nueva relación creada y chequearemos que la relación haya sido creada correctamente.

Nota: En este punto es bueno demostrar las diferentes capacidades de personalización que podemos hacer en un Data Source View como eliminar columnas o tablas, cambiar su nombre, crear o eliminar relaciones, añadir tablas desde cualquier origen de datos definido en el proyecto directamente o mediante una consulta, etc.
 
Report Model

En este paso crearemos el modelo de datos utilizable por el usuario final para construirse sus propios informes.

- El primer paso será crear el “report model”. Para ello haremos clic derecho sobre la carpeta “Report Models” del panel “Solution Explorer” y seleccionaremos la opción “Add New Report Model”
- Seleccionaremos el “Data Source View” anteriormente creado como base para la construcción del nuevo report model.
- En la pantalla “Select report model generation rules” dejaremos todas las opciones por defecto y nos aseguraremos que el selector “Select model language” está configurado a “English (United States)”
- En la pantalla “Collect Model Statistics” dejaremos la opción por defecto “Update model statistics before generating”
- En la siguiente pantalla podemos cambiar el nombre del modelo a “Employee Sales Summary” y hacemos clic en el botón Run

Una vez creado el modelo ya podríamos publicarlo y dejar que los usuarios lo utilizaran, pero en lugar de eso lo editaremos para ver cuales son algunas de las posibilidades que nos ofrece Reporting Services.

Organización de entidades en carpetas

Los modelos de datos están formados por entidades que contienen atributos y relacionadas entre si mediante roles. Las entidades las podemos organizar con carpetas para ayudar al usuario final a identificar mejor las entidades. En este ejemplo crearemos 3 carpetas: Sales, Product y Employee

La manera de crear una carpeta es la siguiente:

- Clic con el botón derecho sobre “Model” en el panel “Report model” (normalmente el panel de la izquierda)
- Seleccionamos New  Folder
- Movemos las entidades a la nueva carpeta creada y renombramos la carpeta.
- La estructura ha crear es la siguiente:
    o Product
        · Product
        · Product Category
        · Product Subcategory
    o Sales
        · Sales Order Header
        · Sales Order Detail
        · Sales Person
    o Employee
        · Employee
        · Contact

En este punto demostraremos otras funcionalidades como pueden ser ocultación/eliminación de atributos/roles, creación de carpetas dentro de entidades, creación de nuevos atributos mediante composición de otros atributos (por ejemplo con la concatenación de dos atributos), cambio de nombre, etc…

Una práctica muy utilizada para la ocultación masiva de atributos es la de crear una carpeta dentro de una entidad, mover todos aquellos atributos y roles que queramos ocultar y finalmente configurar el atributo “Hide” de la carpeta a “true”.

Una vez finalizada la edición del modelo de datos ya estamos preparados para hacer un deploy y demostrar la funcionalidad de la herramienta cliente, el Report Builder.
 
Report Builder

Report Builder es una herramienta cliente creada utilizando la tecnología “ClickOnce” que nos permite almacenar una aplicación en un servidor web IIS. Mediante un link el usuario final podrá acceder a la aplicación, que se instalará en su máquina cliente automáticamente. Cada vez que el usuario inicie una nueva sesión con la aplicación, esta chequeará que no haya una nueva versión disponible en el servidor.

Para acceder al Report Builder no tenemos más que hacer clic en la opción de menú “Report Builder” que se muestra en la interfaz web “Report Manager” o acceder a la URL https://<servername>/ReportServer/ReportBuilder/ReportBuilder.application

- Seleccionamos “Employee Sales Sumary”
- Seleccionamos el atributo “Sales Order Number” de la entidad “Sales Order Header” en la carpeta “Sales”. Arrastramos el atributo al área principal de diseño
- El siguiente atributo a añadir será “Name” de la entidad “Product Category” (accesible navegando a través de “Sales Order Details” -> “Product” -> “Product Subcategory” -> “Product Category”)
- El último atributo a añadir será “Total Line Total” en la entidad raíz “Sales Order Detail”

Si intentamos ejecutar el informe, Reporting Services nos informará que es necesario un filtro para ello.

Definición de un filtro

Definiremos los mismos filtros que teníamos en la Minidemo 1, es decir, Año y mes de pedido y empleado.

- Clic en el botón “Filter” del menú superior
- De la entidad “Sales Order” expandimos el atributo “Order Date”
- Arrastramos al área de la derecha los campos “Order Year” y “Order Month”
- Añadiremos el campo “Last Name” de la entidad “Contact” que encontraremos navegando por las entidades “Sales Order Detail” -> “Sales Order” -> “Sales Person” -> “Sales Person” -> “Contact”
- Cada una de las propiedades la configuraremos para que el usuario final sea quien informe de su valor. Botón derecho en el nombre de cada filtro y seleccionamos la opción “Prompt”.

Aplicaremos el formato “Currency” a la columna “Sales” seleccionando las tres casillas y accediendo a la opción “Format” mediante el botón derecho. En la nueva pantalla seleccionaremos el formato correspondiente a moneda.

Ahora ya estamos listos para ejecutar el informe y comprobar su funcionamiento. Los valores a utilizar para los parámetros son:
- Order Year = 2003
- Order Month = 12
- Last Name = Campbell