Академический Документы
Профессиональный Документы
Культура Документы
ShareVideos
Este libro se dirige a aquellas personas que quieran aprender cómo poner en marcha
técnicas de informática decisional o de BI (Business Intelligence) con la ayuda de las
herramientas de la suite de Microsoft SQL Server 2008 R2: base de datos SQL relacional,
ETL Integration Services, servidor OLAP Analysis Services (fuera del data-mining) e
informes basados en Reporting Services.
Requisitos previos
Los requisitos previos para abordar este libro incluyen un sólido conocimiento de la base de
datos relacional SQL Server y su administración.
Para aplicar todo lo que se expone en este libro y ponerlo en práctica, deberá instalar SQL
Server 2008 R2 (véase http://technet.microsoft.com/es-es/evalcenter/ee315247.aspx), con
todos sus componentes y los ejemplos colectivos que acompañan esta edición (véase el
capítulo Business Intelligence de Microsoft, sección Primeros pasos con SQL Server - El
ejemplo Adventure Works).
Cada bloque de la suite SQL Server podría fácilmente ser objeto de un libro entero a parte,
aunque sería un compendio de artículos y manuales disponibles en Internet. Esta obra trata
de hacer una síntesis pragmática de lo que un profesional del desarrollo debe conocer para
lanzarse en un proyecto de BI con Microsoft, proporcionando no obstante las referencias de
aquellas páginas web que permitan profundizar ciertos aspectos.
La primera parte del libro presenta el BI, sus objetivos, los conceptos principales y las
soluciones aportadas por el fabricante de software Microsoft. En la segunda parte se detalla
la implementación y los fundamentos de cada uno de los bloques de la suite SQL Server
2008 R2. Por último, la tercera parte vuelve sobre cada bloque para explicar las
funcionalidades avanzadas y abordar las problemáticas de la explotación en el entorno de
producción. El libro finaliza con un capítulo sobre la gran novedad en SQL Server 2008
R2: power pivot y el BI en autoservicio.
ShareVideos
Al finalizar esta obra usted será capaz de implementar y desplegar una solución de BI a
partir de los cuatro productos de SQL Server, definir su arquitectura y desarrollar un primer
proyecto robusto para desplegarlo en producción en un entorno empresarial.
Notación
A lo largo de la obra se adopta la siguiente notación para designar los bloques de la suite
SQL Server:
Literalmente se puede decir que los sistemas OLTP y los SGBDR han invadido la empresa
moderna, que ya no puede funcionar sin un ERP (Enterprise Resource Planning o sistema
de Planificación de Recursos Empresariales), sin un CRM (Customer Relationship
Management o Gestor de la Relación con los Clientes), sin gestión de stocks, contabilidad,
cajas electrónicas... Todas estas aplicaciones contienen bases de datos transaccionales:
ShareVideos
millones de registros, miles de transacciones, en miles de tablas a veces relacionadas las
unas con las otras mediante un esquema complejo, normalizado, que responde
perfectamente a la necesidad de gestión de la actividad, pero que es opaco para los gestores
de la empresa.
¿Es a partir de esta mina de información como tratamos de aumentar nuestro conocimiento
sobre el funcionamiento de la empresa? ¿Sobre las acciones que son más rentables? ¿Sobre
los productos en crecimiento? ¿Sobre los gustos de nuestros clientes? ¿Sobre los niveles de
producción? ¿Sobre los niveles de stock? La clave es aumentar el conocimiento para
mejorar los procesos de toma de decisiones: decidir mejor y más rápido.
En estas condiciones, responder a las preguntas que se plantean los directivos de la empresa
puede ser un verdadero rompecabezas.
El tercer principio es el de conservar los datos producidos por las transacciones en una base
de datos aislada de los sistemas de producción: el almacén o depósito de datos. Permite
conservar un histórico mayor y fusionar en una misma entidad datos de sistemas diferentes.
ShareVideos
Constituye un bloque esencial para realizar todos los análisis deseados sin impactar ni verse
incomodado por las miles de transacciones que actúan sobre el núcleo de los sistemas de
gestión de la empresa. Por último, es la fuente única de información para los distintos
decisores en la empresa. Esto permite poner a todo el mundo de acuerdo sobre las cifras y
evitar que se lance un análisis cada vez que haya alguien a quien concierna el resultado.
Business Intelligence
Si bien la realidad es más compleja, en general la informática decisional se constituye en
dos partes:
Para construir una solución de BI no existe un método único y cada solución tiene sus
propias características. De este modo, según el caso la frontera entre el Back-End y el
Front-End puede variar.
No todos los Back-End descansan sobre un DW. Existen varios tipos de DW.
ShareVideos
A menudo los Front-End tienen portales Web a modo de punto de entrada, pero también
pueden tomar la forma de clientes pesados. Los informes pueden ser simples tablas o
gráficos pero también verdaderas aplicaciones que permitan al usuario simular previsiones
de venta, estudiar sus datos navegando dinámicamente sobre los distintos niveles de los ejes
de negocio o incluso cuadros de mando en tiempo real. Cada ves más los indicadores o los
mini informes proporcionados por las aplicaciones de BI se integran con las aplicaciones
transaccionales: sitios web comerciales, ERP, sistemas de gestión de stocks. Las
herramientas de ayuda a la decisión se distribuyen hacia todos los actores en la empresa,
hacia todos los operacionales.
La informática decisional tiene como objetivo poner aquella información de negocio oculta
en los sistemas operacionales al alcance de los decisores, siendo ellos mismos usuarios
operacionales. Cada empresa posee su propia experiencia de negocio, su propia
infraestructura operacional, su propia organización y sus propios objetivos. No existe una
receta milagrosa. El sistema decisional debe por ello adaptarse a las necesidades de los
usuarios.
Si los clientes de esta herramienta realizan muchas consultas a la base de datos, se verá que
a menudo muchos de ellos piden la misma información en el momento, justo antes de una
reunión por ejemplo. En este caso publicar esta información en la intranet, o dejarla en su
bandeja de correo, permite disminuir el número de solicitudes.
Cuando las extracciones se hacen muy grandes o provocan una disminución en la actividad,
una simple réplica síncrona o asíncrona de la base de datos operacional puede servir de
fuente de datos para los análisis, suprimiendo esta sobrecarga. Y ciertas soluciones
prefieren replicar el esquema de datos OLTP en un esquema dedicado al reporting que se
mantiene actualizado automáticamente.
Si esta réplica no es óptima porque varias bases de datos puedan verse involucradas, es
posible plantear la puesta en marcha de un ODS (Operational Data Store). El ODS es una
base de datos donde se replican varias bases de datos operacionales. La réplica aporta un
valor añadido: permite identificar los enlaces entre las distintas fuentes, suprimir datos
ShareVideos
incoherentes... Resulta útil para el reporting operacional y sirve de fuente de datos para los
sistemas decisionales.
En el seno del ODS los datos son volátiles: tienen la misma profundidad de histórico que en
los sistemas réplica. Si este histórico no fuera suficiente a ojos de los decisores es posible
iniciar un proyecto de DW operacional. El almacén de datos operacional es muy similar al
del ODS, pero la profundidad del histórico es mucho mayor.
El DW operacional aisla a los sistemas origen del tratamiento analítico de los datos, aunque
del hecho de que su estructura sea próxima a la de los sistemas OLTP se deriva que no
exista un nivel mayor de complejidad en las respuestas que es capaz de dar.
Una capa de aplicativo, a menudo llamada universo, puede ser suficiente para enmascarar
esta complejidad a través de objetos de negocio familiares a los usuarios finales.
Pero para ciertos usuarios finales los volúmenes de datos a tratar son tales que una única
capa lógica de negocio no es suficiente. Por ello, es posible crear un DM (Data Mart), un
cubo o bien ambos.
Un cubo es algo muy próximo a un DM, pero contiene además datos que han sido
agregados previamente sobre los distintos niveles según los ejes de análisis. Estos
agregados, calculados previamente, permiten reducir considerablemente el tiempo de
respuesta en las peticiones de los usuarios. Existen varios tipos de agregado, siendo la suma
el más corriente de ellos. Todo dato que pueda sumarse sobre no importa qué eje de análisis
supondrá una gran ventaja por parte del cubo, pues donde antes se tenían millones de líneas
ahora se tiene un valor agregado.
Por último, a la unión de varios cubos se la conoce a veces con el nombre de hipercubo.
Para llevar a buen término un proyecto de DM, de DW o de cubo es preciso pensar desde
su comienzo en cómo se va a distribuir la información analítica a los usuarios finales. La
interacción entre el Back-End y el Front-End es a menudo más importante de lo que se
había previsto. Es necesario definir distintas categorías de usuarios, definir sus perfiles, sus
necesidades y la herramienta que van a utilizar. Hay quienes querrán profundizar en la base
de datos decisional para descubrir modelos estadísticos (data mining), otros pedirán ver un
ShareVideos
gráfico en su smartphone, por no hablar de aquellos usuarios que querrán trabajar con las
cifras en su hoja de cálculo favorita... El sistema se apoyará en aplicaciones de Business
Intelligence (BI application) usadas para distribuir la información almacenada en el
sistema.
Las aplicaciones de BI son soluciones del mercado o bien desarrollos a medida. Pueden
tomar la forma de un portal web, de un cliente pesado, de un componente reutilizable en el
sistema de información de la empresa...
La informática decisional es por tanto muy variada y no resulta posible tratar aquí todos sus
aspectos. Nosotros vamos a desarrollar los puntos claves en este capítulo, de modo que el
lector pueda comprender bien los capítulos siguientes.
Data Mart
Por ejemplo, la expresión de las ventas a mayoristas en Europa por día durante los tres
últimos años es un DM. Interesará todavía más a los usuarios si contiene información sobre
los productos vendidos, las promociones relacionadas, las regiones de los clientes... Otro
ejemplo de DM es la cantidad de SMS escritos en el último mes hora a hora.
Como el DM se crea para que pueda leerse desde herramientas especializadas de decisión,
los datos y su estructura están adaptados de alguna manera a esta lectura. Mientras que los
creadores del sistema OLTP normalizan las tablas, los del sistema decisional efectúan la
operación inversa: la desnormalización.
El DM puede consolidar varias fuentes de datos OLTP. Para ello, los datos preferiblemente
se limpian y toman un nuevo enfoque.
Data Warehouse
ShareVideos
El DW operacional está normalizado lógicamente igual que las aplicaciones origen y
conserva un histórico de datos. Contiene información preciosa como fuente de construcción
de los DM.
El DW de aplicación tiene una única fuente de datos, por ejemplo un ERP. De forma más
genérica, numerosos DW poseen un perímetro funcional limitado a una aplicación, a una
actividad, a una entidad jurídica...
Peces y Ballenas
En el origen de esta confusión en los vocablos aparecen dos grandes maestros del BI con
teorías opuestas.
Para Bill Inmon, el DW consolida los datos detallados de toda la empresa. Los DM se
construyen a continuación según la demanda de los usuarios de negocio a partir de esta
fuente de datos única.
Para Ralph Kimball, el DW es el conjunto de DM; cada nuevo Data Mart llega para
enriquecer el DW.
Ambas escuelas jamás han encontrado un punto de encuentro sobre de la noción de DM.
Mientras que Kimball afirma que « the Data Warehouse is nothing more than the union of
all the Data Marts » (el DW no es sino la unión de todos los DM), Inmon le responde: «
You can catch all the minnows in the ocean and stack them together and they still do not
make a whale » (Se puede pescar todos los peces del océano y juntarlos, que jamás
formarán una ballena)...
ShareVideos
Por suerte, la suite de herramientas de SQL Server 2008 R2 se adaptan a ambas visiones.
Modelización OLAP
Existe no obstante consenso en torno al DM. El DM se construye desnormalizando los
datos OLTP para obtener una estructura legible próxima al negocio. Centrémonos en los
principios de la modelización OLAP.
El corazón del sistema es la tabla de hechos. Los hechos son las operaciones que se va a
analizar, que han sido registradas por las transacciones de los sistemas OLTP y que son
numerables, cuantificables numéricamente, o ambas. Cada registro de la tabla de hechos
representa un hecho.
La finalidad del DM consiste en permitir el análisis de los hechos a través de los ejes de
análisis, llamados dimensiones. En el esquema en estrella cada dimensión se reduce a una
tabla y cada registro de la tabla de hechos está ligada a cada dimensión.
Tomemos el ejemplo de los pedidos de un comercio. Por cada línea que representa un
pedido presente en el sistema OLTP es posible definir el cliente que ha hecho el pedido, la
fecha del pedido, el producto y el fabricante del producto. Y por cada línea se conocen la
cantidad y el importe. La tabla de hechos contiene seis datos: el cliente, la fecha, el
producto, el fabricante, la cantidad y el importe. La dimensión cliente contiene información
acerca del cliente útil para el análisis. Ocurre del mismo modo para las otras tres
dimensiones.
ShareVideos
operacional, la actualización del esquema en estrella debe efectuarse para todos los
productos de la subcategoría A.
La cantidad y el importe son las medidas de los hechos. Cada línea de un pedido representa
un hecho; también es posible contar las líneas de un pedido: el número de líneas de un
pedido es también una medida.
2. Dimensiones
Las dimensiones son el fundamento del sistema decisional. Es preciso prestar la máxima
atención en el momento de su concepción.
a. Atributos
Por último, será preciso distinguir de entre los atributos de la dimensión aquellos que
servirán para el análisis, como la ciudad o el código postal, de aquellos que son únicamente
información, como por ejemplo la dirección.
b. Claves
Toda dimensión tiene como mínimo una clave común con el sistema OLTP. La clave
funcional u operacional se usa para actualizar la dimensión e identifica de forma única cada
línea de dimensión en la fuente y en la dimensión.
Lo normal es que alguna clave primaria propia del entorno decisional se sustituya por la
clave funcional. Esta clave a menudo se genera mediante una secuencia en el motor de base
de datos: no tiene por tanto ningún sentido funcional. Se la suele designar por el término
clave técnica, clave de sustitución o surrogate key y permanece oculta a los usuarios del
DM.
ShareVideos
Estas claves son números enteros de pequeño tamaño. Las uniones entre las tablas
de hechos y las dimensiones se encuentran así considerablemente optimizadas.
Dado que una dimensión posee un atributo evolutivo, esta clave permite seguir su
evolución. Por ejemplo, en la dimensión de cliente, un cliente puede cambiar de
residencia. Sus primeros pedidos deben estar ligados a su ciudad anterior mientras
que los nuevos pedidos estarán ligados a la nueva localidad. El cliente debe por
tanto dividirse en dos clientes, cada uno con su clave propia, por fuerza diferente de
la clave funcional: la clave de sustitución.
La clave de sustitución es independiente de la fuente de información y por tanto no
varía si cambia la fuente. Dado que puede haber varias fuentes para la misma
dimensión, estas fuentes de información pueden contener claves comunes para
registros diferentes.
ShareVideos
o Si las frecuencia de modificación es baja: se habla de dimensiones de
variación lenta (Slow Changing Dimension), y la solución consiste en crear
para cada ocurrencia un registro nuevo en la dimensión que va a memorizar
esta modificación. Los nuevos hechos se asociarán al nuevo registro. Se dice
entonces que es un atributo de tipo 2.
o Si la frecuencia de modificación es alta: conviene crear una o varias
dimensiones nuevas con los atributos implicados y modelizar el enlace
directamente en la tabla de hechos.
Borrar el valor antiguo del atributo para conservar únicamente el último valor, o el
valor corriente. Los hechos se contabilizarán en el último valor tomado por el
atributo. Poco importa entonces la frecuencia de las modificaciones: hablamos de
atributos de tipo 1.
Este cliente ha realizado varios pedidos que han sido registrados en la tabla de Pedidos:
ShareVideos
Para gestionar los atributos de tipo 2 es preciso incluir una o varias columnas dedicadas en la tabla
de dimensión. En el ejemplo, las columnas "Válido desde" y "Válido hasta" determinan el intervalo
de tiempo en que es válido cada registro. Es fácil encontrar el registro concreto buscando por
clave funcional según el intervalo de tiempo que comprenda la fecha concreta.
El esquema en estrella permite leer los hechos según los ejes de análisis con el objetivo de
obtener agregados a nivel de ciertos atributos, principalmente aquellos que constituyan
jerarquías. Un agregado es un valor que se obtiene mediante la combinación de varios
valores según un operador matemático. En el caso de una tabla de hechos atómicos que
contenga miles de filas calcular una medida agregada, por ejemplo el volumen de negocio
generado en el primer trimestre de 2011 por los clientes de la región sur de España, puede
tomar cierto tiempo, incluso si este tipo de esquema está optimizado para la lectura, pues el
tiempo necesario para este mismo cálculo en el sistema OLTP será mucho mayor.
Para calcular el volumen de negocio, basta con recorrer las decenas de miles de líneas de
hechos que correspondan a los días de los tres primeros meses de 2011 para todos los
clientes que hayan notificado una dirección de facturación en la región sur de España, y
hacer la suma de los importes...
Si el sistema hubiera precalculado este volumen de negocio por ciudad, el mismo cálculo
podría realizarse mucho más rápido.
El cubo tiene un rendimiento particularmente bueno en ciertos casos. Para empezar, debe
usarse bajo el principio de que se desea extraer y leer los resultados agregados y no los
hechos detallados atómicamente, como por ejemplo las líneas de facturación. De este modo
la aportación del cubo depende de la naturaleza de las medidas de negocio que se quiera
analizar. Por cada medida es preciso definir un operador agregado en términos de negocio:
por ejemplo, para el volumen de negocio el valor agregado se obtiene realizando la suma,
para la fecha de venta el valor agregado puede ser el valor mínimo, para el cálculo de una
tasa no conviene aplicar ninguna agregación y para un nivel de stock se puede aplicar la
suma pero sólo en la dimensión temporal definida por el calendario. No tendría sentido
ShareVideos
sumar los niveles de stock de marzo y abril. El uso del cubo se recomienda especialmente
para medidas del tipo suma o recuento (número de registros) sobre el conjunto de ejes de
análisis.
Un cubo puede perfectamente tener más de 3 dimensiones, por ello suele usarse a menudo
el término base de datos multidimensional.
Metodología de concepción
Existen muchas obras que tratan sobre las distintas formas de llevar a cabo proyectos
decisionales. Tanto si su visión de partida es más próxima a la de Inmon como si lo es a la
de Kimball, los principios que se exponen a continuación pueden resultarle de utilidad.
Esta puesta en marcha tiene varias ventajas: permite dividir el proyecto en lotes de menor
tamaño, satisfacer desde el principio a una parte de los usuarios finales, y planificar un
crecimiento progresivo del sistema decisional.
Cada iteración comienza por la modelización del DM. Esta operación puede llevarse a cabo
siguiendo las etapas descritas a continuación.
Por ejemplo, el DM sobre los pedidos de los clientes contendrá las filas con los
pedidos.
ShareVideos
Definir las dimensiones:
Es preciso definir los ejes de análisis útiles para los decisores. Para cada dimensión
se listarán los atributos y las jerarquías. Conviene distinguir los atributos utilizados
para el análisis de la información, tales como la dirección postal.
Cada registro por pedido de cliente tiene una cantidad y un importe. La información
almacenada hasta el momento no permite calcular un importe medio por pedido. Es
preciso añadir una medida número distinto de pedido. Para ello, es preciso incluir
una columna que identifique al pedido en la tabla de hechos.
¿Con qué frescura esperan los datos los usuarios finales? ¿Se trata de tiempo real,
de datos del día anterior? ¿Cuáles son las posibilidades para alimentar el esquema
en estrella a partir de las fuentes de información? ¿Es posible realizar una
alimentación diferencial?
Oferta general
Microsoft propone una oferta de soluciones de Business Intelligence rica y que se adapta a
numerosos escenarios, sea cual sea el tamaño del proyecto o la arquitectura escogida. La
oferta se divide principalmente en dos ramas complementarias: una constituida por SQL
Server y otra por Office.
ShareVideos
datos operacionales hasta su distribución en forma de información decisional a los usuarios
finales.
Con la versión 2008 R2 de SQL Server y la versión 2010 de SharePoint, Microsoft aporta
además una revolución en su oferta: PowerPivot o el BI en autoservicio gestionado
(Managed Self Service Business Intelligence). Con esta tecnología, todos los usuarios
pueden manipular desde su puesto de trabajo volúmenes de datos impresionantes para
construir ellos mismos su cubo, sin pasar por un equipo dedicado y, por ello, sin tener que
esperar, usando únicamente los recursos locales. Si se despliega el conjunto de la
arquitectura PowerPivot será posible publicar este cubo en línea y compartir, junto a los
administradores, su gestión: reparto, actualización...
1. Posicionamiento
a. BI para todos
b. Oferta evolutiva
Por ejemplo, existe el servidor de bases de datos relacionales en versión portátil pero
también en una versión que permite dar servicio a cientos de usuarios para consultar
centenares de terabytes. De la misma forma, el motor OLAP que se usa para leer un fichero
ShareVideos
cubo local en el portátil de un comercial que no está conectado a la red, también puede dar
soporte a un cubo de enormes dimensiones que permita consultar miles de líneas de hechos.
c. Oferta extensible
Es posible crear componentes para leer nuestras propias bases de datos. Es posible crear un
Add-In en Excel para explotar nuestro cubo. Este Add-In puede generar un archivo de tipo
RDL, que describa un nuevo informe, y desplegarlo en el servidor de informes. Es posible
crear en SharePoint nuestras propias aplicaciones, por ejemplo para la introducción manual
de objetivos de venta, que se integrarán en el cubo. Resulta complicado enumerar todas las
posibilidades...
No obstante esta apertura tiene un coste, de modo que ciertas funcionalidades que formaban
parte de la oferta original ahora es preciso desarrollarlas.
2. Modelo unificado
a. Todas las fuentes de datos de la empresa
SSAS, el motor OLAP de Microsoft, puede implementarse por encima de todas las fuentes
de datos de la empresa ya sean operacionales o desnormalizadas. Es capaz de leer bases de
datos SQL Server, Oracle, DB2, SAP y Teradata. Ofrece a los usuarios finales un punto de
acceso a los datos decisionales de la empresa único y optimizado sin tener que recurrir a un
almacén de datos relacionales universal.
b. Un portal único
El uso de SharePoint como portal de acceso permite a la empresa proveer un único frontal
web ya sea para la parte decisional o para otras actividades.
Este portal SharePoint puede dar acceso a los informes, cuadros de mando, carpetas de
Excel en línea con carpetas de PowerPivot...
ShareVideos
MSSQL: el servidor de bases de datos relacionales SQL Server. Concebido en su
origen para aplicaciones transaccionales, el motor relacional se ha optimizado para
gestionar eficazmente esquemas en estrella.
Estos cuatro componentes están construidos sobre cuatro potentes motores de datos cada uno de
ellos optimizado para realizar una función concreta, y que poseen arquitecturas, características y
rendimientos muy diferentes. Conocer en detalle uno de los cuatro componentes ya es raro, con lo
que conocer los cuatro...
SQL Server 2008 R2 incluye un producto nuevo llamado MDS (Master Data Services)
dedicado a la gestión de datos maestros (MDM, Master Data Management), y que jugará su
papel en grandes sistemas decisionales de grandes sociedades. Los datos maestros son las
referencias de la empresa, los clientes, los productos... que constituyen igualmente las
dimensiones del sistema decisional. Del mismo modo que la multiplicidad de fuentes de
información para una misma referencia es una problemática en el sistema de BI, lo es para
el conjunto de la empresa: ¿qué hacemos cuando tenemos dos direcciones postales para el
mismo cliente? ¿Cómo detectar la presencia de errores en las referencias? MDM da
respuesta a toda esta problemática estratégica y permite al sistema decisional aprovechar
dimensiones ya preparadas. Aunque pertenece a SQL Server 2008 R2, no vamos a tratar
esta aplicación en el libro.
El fabricante de software Microsoft clasifica MDM como parte del BI. En efecto, su puesta en
marcha es una decisión inteligente, optimiza el negocio y es un buen paso previo para alimentar la
base de datos del DW. No obstante tiene un fuerte vínculo con la parte operacional y su
implantación puede considerarse sin necesidad de un sistema de BI.
ShareVideos
1. SQL Server
El uso de una base de datos relacional es prácticamente obligatorio para construir una
solución de BI. Raras son las arquitecturas que no utilizan al menos una. De forma general
el motor relacional se utiliza para almacenar los esquema en estrella. Habida cuenta de que
la profundidad del histórico es más importante que en los sistemas operacionales, la tabla
de hechos puede contener volúmenes de datos importantes.
SQL Server se presenta en varias ediciones que permiten alcanzar un Data Warehouse de
varios petabytes con la edición Parallel Data Warehouse.
2. Analysis Services
Toda solución de Business Intelligence necesita una capa de negocio por encima de los
esquema relacionales en estrella. Esta capa puede limitarse al reporting, pero a menudo los
usuarios tienen la necesidad de ejecutar consultas ad hoc o de centralizar fórmulas de
cálculo comunes. El perímetro de los datos puede variar de un usuario a otro, por ejemplo
los usuarios españoles no verían más que los datos españoles y los totales del conjunto del
país. Por último, los usuarios exigen un funcionamiento óptimo. Todos estos requisitos
justifican la elección de Analysis Services como componente de la arquitectura decisional.
SSAS aporta a su vez un lenguaje de consultas, MDX, que facilita la extracción y los cálculos sobre
los datos.
Además de la parte OLAP, SSAS está dotado de funcionalidades avanzadas de data mining.
El data mining puede verse como aquellas búsquedas o correlaciones entre datos que
puedan ser útiles a la empresa.
a. OLAP
El servidor OLAP de SSAS es una pieza fundamental del sistema decisional. Asume las
siguientes funciones:
ShareVideos
Centraliza una inteligencia de negocio a través de las dimensiones, pero también de
las fórmulas de cálculo y de los indicadores clave de desempeño (KPI).
Una base de datos OLAP puede estar formada, al igual que una base de datos SQL Server,
por varios Data Mart. Las dimensiones están ligadas a los DM con varios tipos de relación
y ofrecen gran flexibilidad en la modelización de la base de datos multidimensional.
El criterio determinante para escoger SSAS debe ser la necesidad de datos agregados. Es cuando
los usuarios finales interrogan datos agregados en un 90% de los casos cuando el motor SSAS
resulta interesante. Si los usuarios no piden más que datos atómicos, SSAS no igualará jamás el
rendimiento de SQL Server. Los datos agregados se escriben en el disco dentro de las particiones
SSAS. Aun así ciertos valores agregados se calculan dinámicamente durante la ejecución de la
consulta si el modelo de datos no está lo suficientemente desnormalizado. En este caso, el motor
seguramente tenga que ir a buscar los datos atómicos.
De este modo los volúmenes de datos procesados serán menores y el modelo trabajará más
cercano al tiempo real. El sistema de particionamiento permite seleccionar una partición en
tiempo real y las demás de forma normal.
SQL Server 2008 R2 incluye una nueva tecnología, StreamInsight, que le permite acercarse
todavía más al tiempo real. Esta tecnología está dedicada al análisis en tiempo real del flujo
de datos incluso antes de que se procese en el resto del sistema de información.
StreamInsight está adaptado, por ejemplo, al análisis de los clics en línea de los grandes
sitios web comerciales, a los mercados financieros o incluso al tratamiento de los datos
captados por los sensores en las grandes cadenas industriales de montaje. StreamInsight no
se aborda en este libro.
c. Data Mining
El data mining está pensado para usos estadísticos. Su presencia tiene un motivo concreto
en una solución de Business Intelligence pues toma en cuenta datos de toda la empresa,
ShareVideos
preparados previamente, y proporciona como salida información útil para mejorar los
procesos de negocio de la empresa.
El motor de data mining SSAS usa algoritmos específicos para identificar grupos
homogéneos entre los datos de la empresa (segmentación automática) o predecir resultados
(análisis predictivo).
El análisis predictivo se usa para predecir algún dato que falta. Por ejemplo, ¿cuáles son los
potenciales clientes que comprarán un producto? ¿Cuántos productos venderemos en el
próximo mes?
Una ventaja del motor de data mining de SSAS consiste en utilizar la potencia del motor
OLAP para leer los datos.
Microsoft proporciona accesorios y Add-In de Excel y Visio para facilitar el uso del data mining
(véase http://www.sqlserverdatamining.com).
d. PowerPivot
La gran novedad de SQL Server 2008 R2 consiste en la capacidad añadida del motor OLAP
SSAS de gestionar el OLAP en memoria (In Memory OLAP). Esta tecnología presenta un
rendimiento asombroso en comparación con el MOLAP (Multidimensionnal OLAP),
aunque no permite trabajar sobre volúmenes de datos tan grandes.
Esta novedad se integra con la tecnología SSAS, bajo el nombre VertiPaq, y su uso se
asocia al de PowerPivot. El predecesor de PowerPivot es la tabla de referencias cruzadas en
Excel (PivotTable). Como su nombre indica, el PowerPivot es una potente tabla de
referencias cruzadas con mejores funcionalidades y que puede manipular volúmenes de
datos mucho mayores teniendo, según la cantidad de memoria disponible en el puesto de
trabajo, hasta un centenar de millones de líneas de hechos.
Igual que la tabla de referencias cruzadas, PowerPivot tiene un uso sencillo y pueden
crearlo los usuarios avanzados de Excel 2010, y no tiene por qué ser creado por un
desarrollador. El objetivo que persigue el fabricante de software es, por un lado, responder
a la oferta de la competencia, pero también proponer a los usuarios la posibilidad de crear
ShareVideos
sus propias aplicaciones de Business Intelligence, de proporcionar un BI en autoservicio,
sin tener que pasar por costosos procesos de desarrollo.
Por ello, Microsoft le propone al usuario que cree y publique sus propias hojas de cálculo
PowerPivot en una granja de servidores (Microsoft SharePoint Server, Excel Services y
SSAS) que mantendrá actualizados sus datos y compartirá la carpeta. Sin tener que crear
una arquitectura así, esta carpeta PowerPivot puede distribuirse en la empresa como una
simple carpeta compartida.
Si bien aparece etiquetado como SQL Server, el Add-In PowerPivot para Microsoft Excel
2010 puede usarse sin SQL Server. La información, demostración y descargas están
disponibles en su sitio web dedicado (véase http://www.powerpivot.com/).
Si bien el uso básico de este Add-In de Excel es gratuito (únicamente el precio de Excel), el paso a
la solución de un servidor de empresa debe basarse en una edición Enterprise.
3. Reporting Services
La plataforma de BI tiene como finalidad distribuir información concreta entre los usuarios
adecuados. Reporting Services permite diseñar informes y ponerlos a disposición de los
usuarios en un servidor de informes. Éste gestiona la caché para limitar las lecturas en las
bases de datos origen y se suscribe para recibir los informes regularmente.
La gran mayoría de usuarios de la plataforma de BI deben acceder a los datos a través de los
informes predefinidos y disponibles en el portal SSRS o SharePoint. Únicamente una minoría
puede realizar análisis ad hoc en Excel, por ejemplo.
La herramienta de creación de informes SQL Server Report Builder 3.0 permite a los
usuarios, fuera del equipo de desarrollo, acceder al diseño de informes. También permite
por otro lado trabajar en modo desconectado del servidor de informes y ejecutar un informe
sin conexión al servidor. A su vez, permite publicar en el servidor de informes un informe
creado en local.
Si bien se proporciona directamente a los usuarios finales, la creación de los informes con Report
Builder 3.0 es una actividad de desarrollo puro.
El servidor de informes es distribuido y cuenta con un portal web de gestión que permite su
uso como tal en la empresa. Del mismo modo puede integrarse con tecnologías SharePoint
gracias al Add-In Reporting Services for SharePoint Technologies, bien sea Microsoft
SharePoint Foundation o Microsoft SharePoint Server.
ShareVideos
La última edición de SSRS comprende el acceso a numerosos tipos de fuentes de datos,
incluidos los nuevos PowerPivot, y numerosos componentes de elaboración de informes
como tablas en columnas, tablas matriciales, gráficos, indicadores o incluso mapas.
Si bien podemos considerar que SSRS ejecuta un Reporting estático, también incluye varias
funcionalidades que crean una experiencia dinámica tales como los parámetros, la
posibilidad de enmascarar o de incluir zonas, o de crear acciones que abran otro informe.
4. Integration Services
El ETL de la solución SQL Server es más que un simple ETL. Puede usarse en otros
escenarios tales como tareas de administración del motor SQL. No obstante su motor está
optimizado para la manipulación de datos con el objetivo de cargar el DW.
Un flujo ETL se construye en un archivo llamado paquete, que contiene un flujo de control
de las diferentes operaciones. Entre las operaciones disponibles, SSIS propone un tipo
particular: el flujo de datos, que constituye el núcleo de la rutina ETL. Cada flujo de datos
relaciona las fuentes con los destinos realizando una transformación de datos entre ambos.
También existen otras operaciones secundarias tales como el envío de datos mediante
correo electrónico, o por FTP.
SSIS es una herramienta muy potente, pero debemos señalar la carencia de estructuras y la
ausencia de una plataforma para hacer seguimiento de los despliegues en producción. Será
preciso adquirir o desarrollar herramientas que normalmente vienen incluidas en las ofertas de
otros competidores.
SQL Server existe en distintas ediciones comerciales con precios diferentes y que
responden a necesidades concretas.
Standard: edición básica que contiene los cuatro servidores que son útiles para el BI.
Su cometido son las aplicaciones OLTP de tamaño medio, una solución OLAP
básica y el reporting.
Enterprise: esta solución contiene todas las funcionalidades para el BI, gestión de
alta disponibilidad y la posibilidad de evolucionar hasta un DW. Comprende la
tecnología StreamInsight, el MDS (Master Data Services) y el componente
PowerPivot para SharePoint.
ShareVideos
Existen dos ediciones premium:
Para llevar a cabo proyectos decisionales se recomienda el uso de las versiones 64 bits.
http://www.microsoft.com/sqlserver/2008/en/us/R2-editions.aspx
http://download.microsoft.com/download/7/B/6/7B65BDD8-9D5E-42A5-A8AA-
AD61FD8265E2/SQLServer2008R2EditionsDatasheet.pdf
b. Licenciamiento
ShareVideos
(CAL) por cada puesto cliente que accede al servidor sobre el que se ejecuta SQL
Server.
Servidor más licencia CAL por usuario: el cliente adquiere una licencia de servidor
por cada sistema operativo sobre el que se ejecuta una instancia de alguno de los
servidores SQL Server y adquiere además una licencia de acceso de cliente (CAL)
por cada usuario que accede al servidor sobre el que se ejecuta SQL Server.
http://www.microsoft.com/sqlserver/2008/en/us/licensing.aspx
http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx
Consulte con su comercial de Microsoft para conocer más sobre los costes y los modos de
licenciamiento para su proyecto.
La idea de que en la caja se incluyen todas las licencias es una idea destinada al olvido:
Muchas de las funcionalidades de la versión Enterprise pueden reemplazarse con una edición
Standard más un pequeño desarrollo que proporcione un resultado equivalente aun con
rendimiento menor. El criterio para tomar esta decisión no será la funcionalidad sino la volumetría
y el rendimiento equivalente en el entorno de desarrollo con esta volumetría. Considere que más
allá de los 100 millones de registros es preciso utilizar una versión Enterprise.
ShareVideos
c. Configuración del sistema
No existe una arquitectura única para crear una solución de BI. Es preciso, desde el
comienzo del proyecto, hacerse la pregunta sobre esta necesidad, las posibles arquitecturas
y sus costes de adquisición, explotación y mantenimiento. Aunque sobre el papel pueda ser
tentador poner en producción una arquitectura total, un Data Warehouse alimentado por
SSIS con una capa SSAS, el reporting y un portal SharePoint con gestión de PowerPivot,
hay que tener en mente que todos estos son elementos comerciales, que se trata de
diferentes tecnologías que requieren competencias muy distintas, que siempre se tiene la
problemática de la explotación y que un DW vive con la empresa y la necesidad de nuevos
desarrollos será recurrente.
¿Cuáles serán los volúmenes de datos de las tablas de hechos de los Data Marts (en
millones de líneas)? ¿Con qué profundidad de histórico? ¿Cuál será la granularidad
de los hechos?
¿Qué formas deben tomar las aplicaciones de BI? ¿Querremos reporting estático, o
tablas dinámicas? ¿Páginas Web? ¿Documentos Word? ¿Distribuidos por correo
electrónico?
¿Existen jerarquías naturales en las bases de datos? ¿Tiene sentido agregar los datos
sobre otros ejes distintos al eje temporal?
¿Qué tipos de informes y de análisis se pondrán en producción? ¿Con qué
frecuencia?
¿Con qué intervalo de tiempo se quiere actualizar las fuentes de información
operacionales y la distribución de la información decisional? ¿Tenemos como
objetivo el tiempo real? ¿Sobre qué subconjunto de los datos?
¿Cuántos usuarios van a existir? ¿Es posible distinguir los siguientes perfiles:
consumidores de informes, usuarios del análisis dinámico, creadores de informes o
de análisis dinámicos? ¿Incluso nombrarlos?
Recuerde a los usuarios, desde la fase de diseño, que el sistema de BI no tiene la vocación de
realizar un reporting operacional. Si esta fuera la necesidad, el sistema de BI puede tenerlo en
cuenta pero con un coste suplementario.
ShareVideos
¿Podemos considerar la actualización de las bases de datos para producir informes y
análisis en una franja horaria diferente (por la noche por ejemplo) de la que acceden
los usuarios?
¿A qué recursos van a acceder los usuarios? ¿Qué tipo de seguridad se quiere
implementar? ¿Vamos a usar el identificador de usuario en Windows, u otros...?
Del mismo modo existen otras cuestiones y problemáticas que tendrán su importancia en la
elección de su arquitectura. No obstante, una de las ventajas de la oferta de Microsoft es
precisamente su modularidad, tan amplia que resulta imposible presentar aquí el conjunto
de todas las combinaciones posibles.
Microsoft propone una guía para ayudarle a escoger la edición y la arquitectura que mejor
se adapte a su problemática: Infrastructure Planning and Design:
http://www.microsoft.com/downloads/details.aspx?FamilyId=ad3921fb-8224-4681-9064-
075fdf042b0c& displaylang=en, escoja SQL Server.zip.
Office
La suite Office cuenta con dos tecnologías que juegan un papel directo en las soluciones
decisionales de Microsoft: Excel y SharePoint.
1. Excel
Excel es mucho más que una simple hoja de cálculo. Se ha convertido en la herramienta
multipropósito del puesto de escritorio: permite realizar cálculos, tratar y consolidar datos,
realizar el control de gestión, crear cuadros de mando... Muchas de estas actividades que
han encontrado su lugar natural dentro de Excel se aplican de forma lógica en el sistema
decisional. Aun así Excel es la herramienta ideal para el puesto de trabajo en lo que
respecta al consumo de datos decisionales: su interfaz es conocida, posee una gran potencia
de cálculo y de formateo de datos orientada al Business Intelligence. Por último, es capaz
de conectarse a orígenes de datos relacionales o decisionales.
Una fuente de datos a partir de una consulta o de una vista sobre el DW es suficiente para
crear una tabla, una tabla de referencias cruzadas, o una gráfica de referencias cruzadas.
Una fuente de datos a partir de una base de datos Analysis Services puede alimentar una
tabla de referencias cruzadas, una gráfica de referencias cruzadas o una fórmula de cubo.
ShareVideos
Las fórmulas permiten ejecutar una expresión MDX sobre el cubo y recuperar su resultado en la
celda. Son muy prácticas para realizar cuadros de mando estadísticos. La mejor forma de descubrir
esta funcionalidad nacida con Excel 2007 consiste en crear una tabla dinámica a partir de una base
de datos SSAS y seleccionar la opción en Opciones - Herramientas - Herramientas OLAP - Convertir
en fórmulas teniendo seleccionada la tabla.
Una vez creados estos elementos, es fácil asignarles forma gráfica: indicadores y barras de
Excel; y también crear un cuadro de mando o un informe.
La mayoría de las opciones de formato de Excel son compatibles con la actualización de los
orígenes de datos, lo que significa que una actualización de la tabla a partir de su origen de datos
provoca una actualización en la forma gráfica creada.
Microsoft SQL Server Data Mining Add-Ins for Microsoft Office: permite utilizar
funciones de data mining desde Excel, y documentar los modelos en Visio
(http://www.microsoft.com/downloads/details.aspx?FamilyId=7c76e8df-8674-
4c3b-a99b-55b17f3c4c51),
PowerPivot (http://www.powerpivot.com/): con SQL Server 2008 R2, Microsoft
pone a disposición de los usuarios de Excel un Add-In PowerPivot que transforma
Excel en toda una herramienta de BI en autoservicio, autónoma, con rendimientos
sorprendentes y una interfaz gráfica enriquecida... En este libro dedicaremos un
capítulo a esta tecnología (véase el capítulo PowerPivot).
2. SharePoint
SharePoint es una solución de portal Web colaborativo. En él encuentran su lugar los datos
producidos por el sistema de Business Intelligence.
ShareVideos
PowerPivot for SharePoint
a. SharePoint Foundation
Foundation se distribuye con la licencia Windows Server. Su coste está por tanto comprendido en
el de Windows Server.
Este Add-In permite hacer accesibles desde el portal SharePoint todos los informes
desplegados sobre el servidor de informes y, de este modo, reemplazar cualquier sitio Web
de gestión de informes.
Este Add-In funciona tanto con SharePoint Foundation como con SharePoint Server.
d. Excel Services
Excel Services es un servicio que permite publicar en línea las hojas de cálculo Excel para
acceder a ellas dinámicamente en modo Web, desde un cliente ligero, como se haría desde
una hoja Excel.
ShareVideos
La conexión a las fuentes de datos definidas en la hoja de cálculo Excel se conservan y se
refrescan en la versión publicada en Excel Services. Así, un usuario de Excel puede
construir un cuadro de mando BI sobre Excel y compartirlo gracias a Excel Services.
Permite crear cuadros de mando ricos y contextualizados que agregan la información del
cubo. El contenido del cuadro de mando proporciona una vista sobre el rendimiento de la
empresa según los distintos niveles de la organización. Se presenta como la solución más
eficaz para la creación de cuadros de mando dinámicos en el portal SharePoint. La idea
consiste en proporcionar a los decisores un verdadero cockpit para controlar su actividad.
Los indicadores y contadores mejoran la navegación OLAP: es intuitivo acceder al detalle
de la información.
Esta funcionalidad se incluye con la edición Enterprise. Utiliza únicamente orígenes de datos de
Analysis Services.
Como hemos mencionando anteriormente, un usuario de Excel puede crear una pequeña
solución de BI en Excel, usando únicamente los recursos de su puesto local, gracias a la
tecnología OLAP en memoria. La hoja de cálculo Excel se convierte en una pequeña base
de datos Analysis Services que se comporta como un cubo local pero que tiene un buen
rendimiento y está acoplado a una interfaz gráfica en Excel que constituye toda una
aplicación de BI.
La hoja de cálculo puede distribuirse entre los usuarios como un simple archivo, aunque
también puede publicarse en PowerPivot para SharePoint. El servidor SharePoint se
encarga de la gestión completa de la aplicación de BI, crea una base de datos en su servidor
SSAS, realiza su actualización, provee estadísticas de uso... Todo ello sin tener que pasar
por el servicio informático. Ciertos usuarios verán aquí un medio para proponer nuevas
funcionalidades al equipo informático a partir de maquetas y pequeños desarrollos. Otros
verán en PowerPivot para SharePoint una solución de BI OLAP sobre un DW, que podría
reemplazar la solución SSAS elaborada por el servicio decisional.
ShareVideos
Esta es una funcionalidad accesible únicamente en la edición Enterprise. Se basa en el servidor de
Analysis Services para tratar la información.
Durante la instalación de SQL Server se crea una instancia para cada servidor seleccionado
(MSSQL, SSRS, SSAS, SSIS). Si lanzamos la instalación por segunda vez, SQL Server le autoriza a
crear otras instancias de servidores, con la excepción de SSIS que es mono-instancia. Las instancias
son prácticas para disponer de varios entornos (desarrollo y pruebas) sobre el mismo servidor
físico o para hacer convivir dos versiones distintas del mismo servidor.
1. BIDS
La posibilidad de agrupar proyectos dentro de una solución única no tiene por sí misma un interés
evidente. Usted podrá trabajar sin problema con soluciones monoproyecto.
ShareVideos
probada que integra el conjunto de funcionalidades de este tipo de productos: depuración,
coloreado sintáctico... Por último, permite llevar a cabo desarrollos colaborativos gracias a
un gestor de código fuente integrado en la interfaz del programa.
Para abrir BIDS, basta con ir al menú: Inicio - Microsoft SQL Server 2008 R2 - SQL
Server Business Intelligence Development Studio.
Puede crear un proyecto nuevo con la opción del menú Archivo - Nuevo - Proyecto... o
abrir uno ya existente con la opción Archivo - Abrir - Proyecto/Solución.
Es posible modificar la ruta por defecto donde el programa crea los proyectos y las soluciones.
Para ello, escoja en el menú Herramientas - Opciones, y a continuación en la ventana Opciones
escoja Proyectos y soluciones.
ShareVideos
Tenga en cuenta que instalando únicamente SQL Server y las herramientas de cliente BIDS no se
proporciona ningún modelo de proyecto de creación de una base de datos SQL Server. El modelo
puede instalarse a parte.
BIDS es una herramienta rica en funcionalidades y cada tipo de proyecto en BIDS cuenta
con las suyas propias, que se abordan en este libro en los capítulos correspondientes. No
obstante es importante conocer las funcionalidades estándar, aun sabiendo que estarán
accesibles u ocultas según la configuración contextual de nuestro Visual Studio.
Uno de los botones permite Mostrar todos los archivos. En efecto, existen ciertos archivos que
están ligados a la solución pero que normalmente no son editables por el usuario y por defecto
están ocultos.
En BIDS existen dos formas de acceder a las propiedades de los objetos. En ocasiones
BIDS pone a nuestra disposición algún editor especial. En cualquier caso, existe una
Ventana Propiedades. Permite acceder a todas las propiedades contextualmente.
Usted elige, según las opciones, mostrar las propiedades por orden alfabético o agrupadas por
categoría. Ciertos objetos poseen tantas propiedades que puede llegar a ser difícil encontrarlas.
ShareVideos
En BIDS, no hay mucho código que generar. La mayor parte de la actividad de desarrollo
es gráfica o consiste en asignar propiedades. El Cuadro de herramientas agrupa los
elementos básicos de desarrollo gráfico que deslizaremos al área de diseño.
Depuración
2. SSMS
Cada instancia se identifica por el nombre del servidor y el nombre de la instancia según la
sintaxis: SERVIDOR\INSTANCIA, por ejemplo SRVBI05\SSASRECETAS. La instancia por defecto,
MSSQLSERVER, no precisa un nombre y basta el nombre del servidor para identificarla.
Este entorno resulta familiar a los DBA. Para abrir SSMS, basta con hacer clic en la ruta
del menú Inicio: Inicio - Microsoft SQL Server 2008 R2 - SQL Server Management Studio.
SSMS permite, como BIDS, trabajar en modo solución/proyecto para crear una base de datos SQL.
Permite realizar cualquier tipo de operación sobre las instancias, desde la ejecución de una
consulta a la realización de una copia de seguridad de una base de datos, pasando por la
gestión de las particiones o la generación de scripts DDL (Data Definition Language).
Existen tres paneles que son especialmente útiles:
ShareVideos
El Explorador de objetos es el núcleo de SSMS, se usa para recorrer los distintos servidores
y lanzar operaciones.
Lo constituye una vista de tipo TreeView que muestra los servidores conectados. El
TreeView puede desplegarse hasta encontrar el objeto concreto sobre el que deseamos
actuar. A continuación basta con hacer clic derecho en el objeto para acceder a todas las
operaciones contextuales de administración.
Este panel muestra los elementos que son hijos del objeto seleccionado en el explorador de
objetos. Resulta de particular interés para la hacer una selección múltiple de elementos y
operaciones agrupadas. En efecto, suprimir una decena de tablas una a una puede resultar
tedioso.
Utilice este panel para registrar una única vez toda la información de conexión a sus
instancias de servidores.
Microsoft distribuye un ejemplo que podemos descargar para ilustrar las funcionalidades de
SQL Server 2008 R2. Se trata de un sistema de BI de una sociedad imaginaria llamada
Adventure Works Cycle: una empresa multinacional especializada en la construcción y
distribución de bicicletas.
El hecho de que este ejemplo sea común a todos los usuarios de SQL Server del mundo
permite ampliar su información gracias a foros de Internet. De este modo, los usuarios
pueden reproducir un comportamiento concreto sobre el ejemplo Adventure Works antes de
lanzar una pregunta en un foro.
El conjunto de bases de datos Adventure Works para SQL Server 2008 R2 está disponible
para su descarga en la siguiente dirección: http://msftdbprodsamples.codeplex.com/
ShareVideos
Para instalar las bases de datos Adventure Works sin problema, lo más sencillo es hacer una
instalación completa de SQL Server. En efecto, tenemos que instalar y lanzar FULL TEXT SEARCH, y
FILESTREAM debe estar activo.
El programa de instalación de las bases de datos Adventure Works no despliega las bases de datos
SSAS. Esta tarea debe realizarla el usuario siguiendo las instrucciones descritas en la página More
Information (o
http://msftdbprodsamples.codeplex.com/wikipage?title=Installing%20Analysis%20Services%20Da
tabase) o las instrucciones aquí descritas.
Para desplegar la base de datos OLAP 2008 R2 adaptada a la edición Standard de SQL
Server:
ShareVideos
Para desplegar la base de datos OLAP 2008 R2 adaptada a la edición Enterprise de SQL
Server:
Es interesante desplegar ambas versiones para conocer bien las diferencias funcionales entre las
dos ediciones.
El conjunto de ejemplos de desarrollo en torno a las bases de datos Adventure Works está
disponible en la ruta: http://sqlserversamples.codeplex.com/releases/view/45923
Los ejemplos contienen a su vez tutoriales. No dude en visitar las páginas del sitio Web de
codeplex y las carpetas Program Files\Microsoft SQL Server\100\Samples y Program
Files\Microsoft SQL Server\100\Tools\Samples en su servidor.
Características del DM
El DM se construye en el motor relacional SQL Server. Es una estructura OLAP adaptada a
la realización de consultas y, en particular, al reporting decisional. Si bien el motor
relacional se diseñó originalmente para aplicaciones OLTP, las versiones 2008 y 2008 R2
están optimizadas para OLAP.
Para crear un DM hay que olvidar prácticamente todos los principios de modelización
OLTP. Un DM contiene pocas tablas. Las tablas de hechos son muy voluminosas y están
ShareVideos
fuertemente indexadas. Las dimensiones se asocian al DM bajo el supuesto del esquema en
estrella o en copo de nieve.
Existen muchos DM que usan una dimensión Calendario, Divisa, Producto... En el caso de que una
dimensión se repita en varios DM, tiene sentido construir una dimensión compartida, y aportará
varios beneficios al proyecto. Kimball llama a estas dimensiones comunes "dimensiones
conformadas".
El DM es una base de datos orientada al negocio por lo que se aconseja usar nombres
descriptivos y evitar en todo momento abreviaturas de 8 caracteres heredades de los
sistemas de origen. Además, en las aplicaciones de BI vamos a reutilizar estos nombres a
menudo, por lo que será muy importante definirlos correctamente desde un principio.
Evidentemente, es inevitable tener abreviaturas como "IVA", pero una etiqueta
PuntoDeVenta es preferible a PDV. Comience por definir por escrito las convenciones de
esta nomenclatura.
Dimensiones
Las dimensiones son los elementos fundamentales del sistema decisional, con razón de más
si están conformadas y compartidas por varios DM. Hay que prestar atención a la creación
de las dimensiones.
1. Uso
ShareVideos
redundancias: para modificar un valor es preciso actualizar cantidad de líneas. Vamos a
escoger entre una dimensión con esquema en estrella, es decir una única tabla redundante, y
una dimensión con esquema en copo de nieve, es decir varias tablas en un modelo semi-
normalizado, tomando como criterio la frecuencia de actualización, es decir el tipo de
actualización y el volumen de datos que se actualizan en la dimensión cada vez.
El esquema en copo de nieve se adopta generalmente cuando un eje de análisis está compartido
entre varias dimensiones, como por ejemplo un eje geográfico que sea común a los clientes y a los
puntos de venta.
El uso que se vaya a hacer de los DM tiene un fuerte impacto en esta parte del trabajo.
Debería por tanto determinarse lo antes posible. ¿Vamos a leer los DM únicamente a través
de cubos SSAS? ¿Qué herramienta va a ser la encargada de lanzar las consultas sobre el
DM? ¿Y cómo tendremos que adaptar el modelo físico en función de la herramienta?
El sistema OLTP gestiona la jerarquía de salarios de la sociedad mediante una relación de la tabla
de empleados con ella misma: el empleado A es responsable de B. Nosotros podemos reproducir
esta unión reflexiva en el DM, y SSAS gestiona este caso de forma nativa. No obstante el motor
SSAS no construye un agregado sobre tal jerarquía, sino que los agregados se calculan en el
momento de realizar la consulta... Sería preferible desnormalizar esta jerarquía para aprovechar al
máximo la potencia de SSAS.
Dado que el DM se lee a través de las consultas de los usuarios, conviene añadir índices
sobre los principales atributos de las dimensiones. Por el contrario, esto no será necesario si
construimos un cubo sobre el DM.
2. Columnas
ShareVideos
SMALLINT: de -32.768 a 32.767, codificado en dos bytes.
Las claves funcionales son las claves que identifican de forma única un registro de
la dimensión en un sistema origen. Puede haber varias y pueden ser compuestas. El
tipo de las columnas debe ser homogéneo con el sistema de origen.
Esta clave debería tener un índice secundario, con una restricción en el caso de una
dimensión sin atributo de tipo 2.
Además, la clave funcional a menudo tiene sentido para los usuarios de negocio y
sirve como atributo de la dimensión.
Atributos de la dimensión:
Cada atributo identificado tiene un campo que lo identifica como eje de análisis o de
información.
Traducciones:
En efecto, dos campos: Fecha de inicio y Fecha de fin, son suficientes para
encontrar el miembro correcto en la dimensión.
ShareVideos
Se puede añadir un tercer campo Estado para identificar rápidamente el registro en
curso, el decir aquél cuya Fecha de fin tenga valor NULL. Este campo podría servir
como eje de análisis para los usuarios finales que deseen filtrar según los registros
en curso.
3. Índices
Cada dimensión tiene una clave primaria que contiene la clave de sustitución y un índice
secundario para la clave funcional.
Si esta dimensión de tipo 2 contiene suficientes registros, hay una optimización posible que
consiste en configurar los campos Fecha de fin y Estado como columnas del índice.
Puede crear otros índices para los atributos que vayan a ser usados en el análisis. Comience
configurando una columna por índice, a menos que sea muy evidente que las consultas de
los usuarios van a verse optimizadas en un futuro por algún índice compuesto.
4. Miembro desconocido
Cuando hay muchos hechos que integran la tabla de hechos, llega el momento en que la
búsqueda por clave técnica en la dimensión fracasa o simplemente no existe. Por ejemplo,
el cliente de una tienda que no haya rellenado su ficha de fidelización es un cliente
desconocido para la base de datos OLTP. Por ello, sus compras no pueden ligarse a la
dimensión cliente.
ShareVideos
SSAS propone a su vez una solución para gestionar este tipo de casos de miembro desconocido.
Para usar la gestión de SSAS, inserte el valor NULL en la tabla de hechos.
Tabla de hechos
La tabla de hechos es el núcleo del sistema decisional. Según el caso, los hechos son
atómicos, es decir almacenados con el nivel máximo de detalle del sistema OLTP, o ya
agregados. Debería realizar esta elección en función del enfoque preferido (Inmon o
Kimball), de las necesidades de los usuarios de DM y de la capa de aplicación por encima
del DM.
1. Columnas
La tabla de hechos contiene principalmente dos tipos de campos: claves foráneas con las
dimensiones y métricas. Las primeras contienen claves técnicas de las dimensiones y son de
tipo entero. Las segundas son, por lo general, valores numéricos. Ciertas tablas de hechos
no contienen ninguna métrica, por ejemplo si la tabla se usa únicamente para numerar las
líneas.
No es raro añadir campos de otros tipos en el registro de la tabla de hechos. Por ejemplo, la
referencia de la factura permite contar el número de facturas diferentes.
ShareVideos
Tamaño del almacenamiento
Precisión
en bytes
De 1 a 9 5
De 10 a
9
19
De 20 a
13
29
De 30 a
17
39
Desde la versión SQL Server 2005 SP2 existe un campo DECIMAL variable, que permite reducir el
tamaño de las columnas decimales. Esto provoca una reducción importante del tamaño de la tabla
de hechos y por tanto aumenta el rendimiento sensiblemente, según su infraestructura (véase el
artículo: http://msdn.microsoft.com/en-us/library/bb508963.aspx).
2. Índices
El DM está fuertemente indexado: no es raro que el tamaño ocupado por los índices en el
disco duro sea equivalente al de los datos.
Comience por crear un índice de tipo clustered sobre la clave de la dimensión Fecha, y a
continuación un índice que no sea de tipo clustered en las demás claves de las dimensiones.
Si bien es sensato mantener cierta restricción de unicidad entre varias columnas, es preciso evitar
crear una clave primaria de tipo clustered. Es preferible contar con un índice sencillo.
3. Modo de alimentación
Un DM puede ser objeto de actualización a partir del sistema origen de datos. Las
actualizaciones incrementales o aditivas, es decir aquellas que no efectúan más que
inserciones, son preferibles.
4. Particiones
Cuando la tabla de hechos deba contener varias decenas de millones de registros, es preciso
considerar el particionado. El particionado de las tablas es una funcionalidad de la edición
Enterprise que ha sido concebida para la administración de tablas voluminosas.
ShareVideos
ventajas: es fácil de administrar, resulta sencillo realizar su copia de seguridad, cargar los
datos, y presenta una clara mejora en el rendimiento.
El código que se muestra a continuación crea cuatro particiones: la primera para fechas que
van hasta el 31 de diciembre de 2010, la segunda para enero de 2011, la tercera para febrero
de 2011, y por último las fechas que vienen después del 1 de marzo de 2011.
Un esquema de partición hace el enlace entre cada partición definida por la función de
particionado y su grupo de archivos. La sintaxis a continuación permite enlazar todas las
particiones en un único grupo.
Tener un grupo de archivos por partición permite dejar las particiones antiguas en modo de sólo
lectura.
Para que una tabla utilice el esquema de particionado definido anteriormente, basta con
reemplazar el parámetro FILEGROUP por el esquema de particionado en el comando
CREATE TABLE.
ShareVideos
Los datos que se inserten se clasificarán automáticamente en una de las cuatro particiones.
SQL Server proporciona una función $PARTITION que permite consultar las particiones.
P N Min
----------- ----------- ----------
1 1 2010-07-11
2 1 2011-01-11
3 2 2011-02-01
4 2 2011-03-21
Entre las numerosas funcionalidades asociadas a las particiones, también es posible añadir
una partición nueva en una tabla existente. Si existen registros, se enviarán
automáticamente a la nueva partición... Preste atención a las volumetrías elevadas.
P N Min
----------- ----------- ----------
1 1 2011-07-11
2 1 2011-01-11
3 2 2011-02-01
4 1 2011-03-21
5 1 2012-01-31
El particionado también permite alimentar los datos de forma mensual en una tabla
separada (aunque en el mismo FILEGROUP) y añadirla como partición de la tabla. Y al
revés, suprimir todos los datos de una partición para archivarlos, por ejemplo:
ShareVideos
ClaveFecha date NOT NULL,
Cantidad int NOT NULL
) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX IXArchiClaveCliente ON dbo.MiArchivo
(ClaveCliente)
GO
CREATE NONCLUSTERED INDEX IXArchiClaveProducto ON dbo.MiArchivo
(ClaveProducto)
GO
CREATE CLUSTERED INDEX IXArchiClaveFecha ON dbo.MiArchivo (ClaveFecha)
GO
P N Min
----------- ----------- ----------
2 1 2011-01-11
3 2 2011-02-01
4 1 2011-03-21
5 1 2012-01-31
Base de datos
La base de datos decisional contiene un histórico más importante que los sistemas
operacionales, y es importante tenerlo en cuenta para garantizar su integridad y la
recuperación tras un desastre.
1. Integridad referencial
Si usted efectivamente no utiliza la integridad referencial del motor SQL Server, puede,
para mayor seguridad, no dar permisos de escritura más que al usuario configurado en la
alimentación ETL.
ShareVideos
2. Modo de recuperación, copias de seguridad
En un DW, los datos más críticos son aquellos más antiguos, que ya no están presentes en
los sistemas de origen. Estos datos habrán desaparecido hace tiempo del registro de
transacciones de su DW. Por lo general no es interesante hacer copia de seguridad del
registro de transacciones que contiene aquellas más recientes. Se aconseja el uso del modo
de recuperación Simple.
3. Compresión
Esta herramienta supone una verdadera mejora dado que el proyecto contiene una capa
SSAS por encima del DM y genera la capa SSAS y la capa SQL. Para utilizarla es preciso
poseer ciertos conocimientos de desarrollo SSAS. El asistente no se limita a la creación de
un DM sino que permite actualizarlo.
1. Abra BIDS.
2. Cree un nuevo Proyecto de Analysis Services.
ShareVideos
1. El nuevo proyecto SSAS estará vacío, en el Explorador de soluciones seleccione
añadir un nuevo cubo.
2. En la primera parte del Asistente para cubos, seleccione el método de creación
Generar tablas en el origen de datos.
1. La siguiente etapa permite Definir nuevas medidas. Cree una o varias medidas en un
Grupo de medida. Defina para cada medida el Tipo de dato y el operador de
Agregación.
1. Por defecto el Asistente para cubos propone una dimensión de tipo tiempo.
Renómbrela por Calendario por ejemplo.
2. Añada una dimensión nueva Cliente. Puede agregar a continuación los atributos de
la dimensión en el editor de dimensión.
3. Añada una dimensión nueva Producto.
4. Escoja para la dimensión Cliente, una variación lenta (DVL). En efecto, un cliente
puede cambiar de domicilio y los análisis deberían seguir este cambio.
1. El Asistente para cubos habrá generado un cubo y sus dimensiones, pero el proyecto
no contiene ni vista de origen de datos ni origen de datos.
2. En el Explorador de soluciones haga doble clic en la dimensión Cliente, para abrir
su editor.
3. Modifique el tipo de atributo ID original de DVL Cliente para adaptarlo al tipo
presente en su sistema de origen de datos.
ShareVideos
4. Añada un atributo Ciudad que contenga una clave entera y un nombre.
5. Guarde las modificaciones realizadas en la dimensión.
1. El editor del cubo o el de la dimensión contienen en el centro una zona Vista del
Origen de datos. En el medio de esta zona hay un texto en azul subrayado que le
invita a hacer clic para generar una vista de origen de datos.
2. Haga clic para que aparezca el Asistente para generar esquemas.
3. El Asistente para generar esquemas le propone en primer lugar Especificar destino.
Escoja un nombre para su vista del origen de datos y una conexión hacia una base
de datos SQL Server existente (creada anteriormente).
ShareVideos
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
CREATE NONCLUSTERED INDEX [IX_Cliente] ON [dbo].[Cliente]
(
[ID_original_de_DVL_Cliente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON
[PRIMARY]
GO
Por lo que respecta a la tabla de hechos, se han generado tres índices, ninguno de ellos de
tipo CLUSTERED.
ShareVideos
2. Para actualizar el esquema SQL, despliegue el menú contextual del proyecto, y
seleccione la opción Generar esquema relacional...
De este modo puede crear una base de datos SQL coherente con su cubo SSAS y
aprovechar reglas de nomenclatura homogéneas.
En una solución de BI, el motor de bases de datos OLAP proporciona una capa de negocio
entre el usuario final y los datos OLTP, la posibilidad de ejecutar cálculos complejos sobre
los datos y compartirlos, una capa centralizada de seguridad ligada a los datos y, sobretodo,
consultas de extracción muy eficientes.
MDX, el lenguaje de consultas, está mejor adaptado que el lenguaje SQL para escribir
consultas decisionales y fórmulas de cálculo. Calcular el volumen de ventas del mes
anterior precisa una consulta SQL compleja y poco eficiente. En MDX, una simple
expresión nos permite devolver instantáneamente el valor. La potencia de cálculo se
multiplica. Las fórmulas de negocio que más se usen se crearán en la base de datos OLAP,
y estarán disponibles para todos los usuarios. Éstos se beneficiarán de una biblioteca de
fórmulas ya diseñadas y adaptadas a sus propias necesidades. Las cifras que se
proporcionen en toda la empresa van a ser las mismas para todo el mundo.
Los roles de seguridad de la base de datos SSAS permiten dotar de seguridad a una
dimensión de un cubo, pero también a ciertos miembros de una dimensión, por usuario. De
este modo es posible restringir el acceso de un comercial a los clientes y las cifras de su
zona geográfica.
El motor OLAP construye valores agregados que aumentan la velocidad de ejecución de las
consultas. En SQL, el cálculo del volumen de ventas del mes anterior implica la lectura de
todos los registros de venta del mes anterior, mientras que en el cubo el motor no tiene más
que leer los valores agregados ya precalculados.
ShareVideos
A la inversa, si los usuarios finales hicieran cálculos o consultas sobre los datos individuales, el
rendimiento de SSAS sería desastroso. En este caso hemos escogido SSAS en vano, o bien
debemos estudiar la posibilidad de aportar mejoras a la modelización de la base de datos SSAS.
Calcular un volumen de ventas a partir de los precios unitarios y de las cantidades vendidas no
constituye una consulta OLAP. En la concepción del cubo, usted debe reemplazar el precio unitario
por el importe, que sí es un dato aditivo. El volumen de ventas será entonces la agregación de los
importes.
El UDM (Unified Dimensional Model) es el núcleo del motor OLAP de SSAS. El modelo
está unificado porque relaciona un modelo dimensional con un modelo relacional. Además
de las capacidades ya descritas, SSAS permite modelizar relaciones entre los atributos de
una dimensión, y distintos tipos de relaciones entre las dimensiones y las medidas. Por
ejemplo una funcionalidad como las tablas con relación N a N es típica del motor
relacional. Está también presente en el motor OLAP SSAS.
Con UDM el cubo no está limitado a una única tabla de hechos, como con SSAS 2000.
Ahora es un conjunto de tablas de hechos y dimensiones. Para comprender esto conviene
revisar los distintos componentes del UDM (salvo el Data Mining).
Base de datos
La base de datos SSAS es el equivalente a la base de datos SQL. Usted decide su perímetro.
Constituye el nivel más alto del UDM, y contiene todos los demás objetos del UDM.
Existe una buena práctica que consiste en crear un cubo por cada base de datos. Crear varios
cubos que contengan varias tablas de hechos en la misma base de datos es algo difícil de
gestionar.
Origen de datos
El origen de datos define el lugar donde se encuentran los datos de origen y la información
de seguridad que se va a aplicar para leerlos. Una base de datos puede contener varios
orígenes de datos.
La Vista del origen de datos (Data Source View) es una capa lógica relacional entre el
motor OLAP y los orígenes de datos. Puede utilizarse para describir el DM, o para crear un
DM lógico sobre un origen de datos OLTP. Una base de datos puede contener varias DSV.
ShareVideos
También es posible tener objetos que provengan de múltiples orígenes de datos en una DSV.
Dimensión
Las dimensiones son los ejes de análisis. Pueden compartirse entre diferentes cubos.
Cubo
Roles
Los roles permiten dotar de seguridad a los accesos a los datos multidimensionales por
parte de los usuarios o los grupos de usuarios de Windows.
Assemblys
Ciertas funcionalidades de los cubos o incluso ciertas dimensiones se alojan en la parte cliente, la
aplicación de BI. Este es el caso por ejemplo de los KPI. Es posible añadir KPI a un cubo, pero la
herramienta utilizada para leer el cubo los ignorará si no está diseñada para tenerlos en cuenta. A
su vez, ciertas propiedades de las dimensiones están destinadas a un cliente concreto.
2. Metadatos
Todos los objetos están descritos en formato XML dedicado: ASSL. Los metadatos se
almacenan en estos archivos XML: uno por cada componente del UDM. Cuando creamos
una solución dentro del entorno de desarrollo, este conjunto de archivos se agrega en un
único archivo alojado en la carpeta \bin del proyecto con la extensión .asdatabase.
En la creación de un proyecto nuevo, comience por editar las propiedades del mismo,
haciendo clic derecho en el proyecto dentro del Explorador de soluciones.
ShareVideos
Como en la parte SQL, para desplegar en SSAS necesitará un servidor, instalado por ejemplo en su
puesto de trabajo.
El Explorador de soluciones parece indicar un orden de creación de los objetos del UDM.
No lo siga: cree las dimensiones antes que el cubo.
Comenzar con el asistente de creación de un cubo puede ser una trampa. No es posible llegar a
buen término sin pasarse el tiempo necesario con cada dimensión. En SSAS 2005 el objetivo de
creación de un cubo "en un clic" había alentado a Microsoft a desactivar la gestión de errores de
integridad en las dimensiones para dar a los desarrolladores la ilusión de que el asistente
funcionaba... Con la versión 2008 el fabricante de software se ha echado atrás, pero en el
Explorador de soluciones sigue presentándose el cubo antes que las dimensiones.
Datos
Hay dos clases de objetos que realizan la interfaz con los datos de los sistemas de origen
bien sean operacionales o decisionales: los orígenes de datos y las vistas de los orígenes de
datos.
1. Orígenes de datos
Los orígenes de datos son fuentes de datos relacionales que se acceden a través de un
cliente, bien .NET, bien OLE DB nativo. El gestor de conexiones propone conectores
SSAS, pero SSAS no puede explotarlas como origen de datos. Por el contrario, es posible
crear enlaces con componentes de otras bases SSAS.
Dé preferencia a los conectores OLE DB. En efecto, si el servicio SSAS no ha sido desarrollado en
.NET usando una herramienta .NET las conversiones de tipo ralentizarán la lectura.
ShareVideos
Para realizar la conexión OLE DB a SQL Server, use un cliente SQL Server Native Client.
Esta opción utiliza la cuenta de servicio SSAS para conectarse al origen de datos.
Herencia
Con esta opción, SSAS escoge en función de la operación efectuada más apropiada
de entre los dos modos anteriores: cuenta de servicio o usuario actual.
Usar la seguridad de Windows para las bases de datos de origen (en el caso de SQL
Server).
Usar la opción de suplantación de identidad: Heredar.
Usar una cuenta de dominio para ejecutar el servicio SSAS y otorgar los privilegios
necesarios a esta cuenta en sus orígenes de datos.
La DSV es una capa lógica de metadatos que aisla la base de datos relacional del cubo y
permite trabajar sobre el esquema relacional sin impactar al origen de datos. Describe el
esquema de la base de datos relacional y permite añadir a este esquema claves primarias
lógicas, consultas nombradas y columnas calculadas.
Este es el objeto SSAS que permite crear un cubo sin Data Mart físico. Permite crear
consultas para desnormalizar la fuente de datos operacional.
Las consultas nombradas equivalen a las vistas en el motor de base de datos origen. Las
columnas calculadas también existen en los motores relacionales del mercado. Estas
funcionalidades están destinadas a la creación de un cubo sobre un sistema OLTP cerrado.
ShareVideos
Dado que el proyecto de BI contiene su propio DW relacional o decisional, es más sencillo
agrupar todas las reglas en el esquema relacional del DW. De este modo todas las capas que
no sean la capa SSAS también se verán beneficiadas.
Dimensiones
Las dimensiones son el fundamento de la base de datos multidimensional. Su creación es
un trabajo importante que tendrá gran impacto en la facilidad de uso del cubo y su
rendimiento. Las dimensiones son los ejes de análisis que podrán manipular los usuarios
para interrogar las cifras: construir ejes simples y ajustados al negocio permitirá a los
usuarios encontrar fácilmente la información. Las dimensiones definen a menudo jerarquías
que se usarán en el motor para construir valores agregados: diseñar las jerarquías adecuadas
y útiles permitirá al motor preparar los valores agregados pertinentes.
1. Terminología
Dimensión
Atributo
ShareVideos
Distinguimos dos tipos de atributo (según la propiedad AttributeHierarchyEnabled): los
atributos que forman una jerarquía de atributos y aquéllos que son únicamente una
propiedad, presentes para informar al usuario pero no para realizar un análisis.
Relación de atributos
Una relación de atributo define una integridad referencial entre dos atributos. Por defecto
todos los atributos tienen una relación con la clave de la dimensión. Es fundamental definir
en la pestaña dedicada a tal efecto las demás relaciones de integridad referencial. Esta es
una de las claves del rendimiento del motor de agregaciones de su base de datos SSAS. Por
ejemplo, en la dimensión de tiempo, la fecha es la clave. Por defecto, el mes (mes y año) y
el año están ligados al día. El motor OLAP calculará el volumen de ventas anual
recorriendo los días del año. Usted deberá definir una relación que indique que año es el
padre del mes. De este modo, el volumen de ventas anual se evaluará a partir de los
volúmenes de ventas mensuales.
Jerarquía
Una jerarquía es una serie jerárquica de atributos: el atributo A es el padre del atributo B
que es el padre de... La jerarquía se usa para efectuar un análisis de arriba hacia abajo
(drilldown).
Los distintos atributos de la jerarquía definen sus niveles. Por defecto, toda jerarquía tiene
un nivel por encima del primer nivel: el nivel Todos. Por ejemplo, la jerarquía Año, Mes,
Día tiene por defecto cuatro niveles: todos, año, mes y día. Puede desactivar el nivel
superior (modificando la propiedad IsAggregatable del primer nivel).
Jerarquía natural
Una jerarquía natural es una jerarquía para la que se define una integridad referencial entre
cada padre y sus hijos: los hijos no tienen más que un padre. El padre tiene uno o varios
hijos. El ejemplo del calendario ilustra perfectamente la naturaleza de esta jerarquía: años,
meses, días.
Las jerarquías de reporting son jerarquías en que los atributos no están ligados por
integridad referencial. Por ejemplo, en la jerarquía Tamaño - Color: es probable que exista
el mismo color en todas las tallas.
En SSAS una jerarquía de este tipo se crea simplemente modelando una jerarquía en la
interfaz.
ShareVideos
En SSAS no se explicita la distinción entre jerarquía natural y jerarquía de usuario. No obstante
este matiz es muy importante. Las jerarquías naturales se distinguen de forma implícita porque
definen una integridad referencial mediante la relación de sus atributos. Las jerarquías de
reporting no existen más allá de su propia definición. SSAS define jerarquías (a secas) que serán
naturales si se ha definido una relación entre los atributos, y que serán de reporting en caso
contrario.
Jerarquía de atributo
Por defecto cada atributo constituye una jerarquía de atributo. Esta jerarquía tiene por
defecto dos niveles: el nivel Todos y el nivel de atributo.
Hay que ver cada jerarquía de atributo como un potencial eje de análisis. El desarrollador
debe limitarlo únicamente para aquellos atributos en que sea útil. Por ejemplo la zona
geográfica del cliente podría constituir una jerarquía de atributo útil, pero no así su
dirección.
Miembro
Los miembros del nivel más bajo de la jerarquía son las hojas. Por ejemplo, las fechas son
las hojas de la jerarquía calendario mensual.
Por defecto, cada jerarquía posee un nivel superior, que contiene un único miembro: el
miembro Todos. Puede desactivarse, pero en este caso es preciso definir un miembro por
defecto.
Cada jerarquía de atributos puede tener un miembro por defecto. Si no se define, toma el
valor del miembro Todos. Si se define, crea un filtro automático para el valor asignado,
incluso si no sobrecargamos el valor por defecto. Por ejemplo, definir el año 2007 como
miembro por defecto del atributo año, hace que todas las consultas en que no se precise el
año devuelvan resultados relativos al año 2007. Por defecto, el volumen de ventas será el
del 2007. El miembro por defecto puede ser una expresión MDX.
ShareVideos
El miembro desconocido de la dimensión permite asignar a un miembro todos aquellos
hechos en que la clave dimensión de la tabla de hechos valga Null o sea inexistente
(violación de integridad referencial). Por defecto, el miembro desconocido no existe. Si está
activado, bien sea visible o invisible, es común a todos los atributos de la dimensión.
Dimensión padre-hijo
Se trata de una funcionalidad muy práctica, aunque su uso debe limitarse a pocos
miembros. En el caso de una dimensión demasiado importante el rendimiento no estará a la
altura del tiempo de espera necesario por parte de los usuarios finales. Recuerde que
siempre existe un modo de desnormalizar.
2. Asistente de dimensión
1. Agregue una vista del origen de datos que contenga la tabla DimPromotion.
ShareVideos
1. La etapa siguiente le permite definir los demás atributos y especificar si son parte de
una jerarquía de atributos (columna Habilitar exploración).
2. Seleccione Discount Pct para mostrarlo como jerarquía.
3. Seleccione Spanish Promotion Type para mostrarlo como jerarquía.
4. Seleccione las cuatro últimas columnas. No las marque como jerarquía de atributos.
1. Finalice el asistente.
3. El editor de dimensión
Estructura de dimensión:
Relaciones de atributo:
Esta pestaña le permite definir la integridad relacional entre los atributos mediante
la creación de relaciones de atributo.
Traducciones:
Examinador:
ShareVideos
4. Propiedades de la dimensión
Además del nombre de la dimensión, las propiedades más importantes son las siguientes:
Tipo:
ErrorConfiguration:
ProcessingMode:
StorageMode:
La opción InMemory ha hecho su aparición entre las opciones de StorageMode. Está reservada a la
creación de PowerPivot. Es imposible explotarla desde el estudio de desarrollo de BI.
AttributeAllMemberName:
Nombre del miembro All para todos los atributos de la dimensión. Este nombre,
parametrizado a nivel de la dimensión, lo comparten todos los atributos. Por defecto
ShareVideos
la propiedad está vacía, en cuyo caso vale All. Modifíquela para mejorar la
experiencia del usuario final.
Para añadir un atributo, deslice en la zona Atributos un campo proveniente de alguna de las
tablas mostradas en el área de Vista del origen de datos. A continuación haga clic derecho
sobre este nuevo atributo y seleccione Propiedades.
AttributeHierarchyEnabled:
Usage:
Origen/KeyColumns:
Conjunto de columnas de la DSV que definen la clave única del atributo. Se limita
generalmente a una columna: por ejemplo la clave de sustitución en un esquema en
copo de nieve.
NameColumn:
El nombre del miembro viene dado por una columna de la DSV. Si no se indica,
toma el valor de la clave.
IsAggregatable:
ShareVideos
El atributo forma parte de un agregado. Esto significa que la jerarquía de atributos
dispone de un nivel All o Todos. Esta opción se escoge en el 99% de los casos.
Type:
Igual que con la dimensión el tipo se usa para los atributos de dimensiones de tipo
temporal (Time) o contable (Account).
OrderBy/OrderByAttribute:
Estas dos propiedades se usan para especificar el orden de los miembros del
atributo. Por defecto, el orden se realiza según la clave. Puede realizarse no obstante
según el nombre o según otro atributo. Pruebe sus atributos en la pestaña del
Examinador y corrija el orden si es necesario.
AttributeHierarchyVisible:
DefaultMember:
RootMemberIf:
Permite definir la regla que define el miembro tope de la jerarquía según cuatro
reglas prefijadas.
Propiedades de discretización
ShareVideos
La discretización consiste en segmentar los valores continuos. Por ejemplo, si la edad de los
pacientes va de 0 a 99 años, la discretización permite configurar tramos de edad.
DiscretizationMethod:
DiscretizationBucketCount:
Jerarquías
Para crear una jerarquía, basta con deslizar las jerarquías de atributos en la parte Jerarquías
y organizarlas en niveles. El mismo atributo puede pertenecer a varias jerarquías. Las
jerarquías deben corresponderse con las de los procesos de negocio de los usuarios finales.
El orden de las jerarquías en pantalla corresponde con el orden en que deberían aparecer en
las herramientas cliente. Modifíquelo sencillamente con el ratón si es necesario.
Nombre:
AllMemberName:
6. Relación de atributos
SSAS 2005 situaba esta etapa de definición de atributos en la primera pestaña Estructura de
la dimensión. La edición 2008 tiene una pestaña dedicada para resaltar bien su importancia.
Toda relación enlaza un atributo origen a un atributo asociado. La relación significa que el
atributo origen tiene como padre al atributo asociado. Es decir, un miembro del atributo
origen está ligado a un único miembro asociado. Por ejemplo la fecha (10/10/2010) tiene
como padre el mes del año (Octubre 2010).
ShareVideos
Toda relación tiene una única propiedad importante: la RelationshipType. Una relación
puede ser flexible o rígida. Flexible significa que podrá variar a lo largo del tiempo, como
por ejemplo una relación jerárquica en la empresa. Rígida significa que es inmutable, como
las fechas de un calendario.
Por defecto, todas las relaciones son flexibles. Configurar una relación como rígida tiene
dos efectos. Por un lado, si evolucionara supondría un error para los cubos. Por otro, el
procesado incremental del cubo comienza suprimiendo las agregaciones ligadas a
relaciones flexibles para volver a calcularlas de nuevo, por lo que un cubo con relaciones
rígidas se procesará más rápidamente.
En caso de duda deje configurada una relación flexible, a menos que trabaje con un
volumen de datos donde el tiempo de procesado suponga un elemento crítico.
La propiedad Cardinality es una propiedad que parece interesante, pero que en realidad no tiene
ningún efecto. Oficialmente está reservada para una implementación futura.
Por defecto todos los atributos están ligados al atributo clave mediante una relación. Esto es
lógico, la clave es el nivel más fino.
El ejemplo del calendario es fácil de comprender. El día se relaciona con el mes, que se
relaciona con el trimestre, que se relaciona con el año. Decimos que el año está enlazado
indirectamente con el día. No obstante puede existir también una relación directa entre los
días y el año. En este caso SSAS muestra una advertencia: debe suprimir la relación directa
para garantizar un buen rendimiento.
En una relación directa, SSAS calcula los valores para el año a partir de los días. En una
relación indirecta, los valores del año se calculan a partir de los trimestres. Dejar ambas
relaciones degrada el rendimiento del motor.
Las relaciones de atributos se definen igualmente para indicar al motor OLAP cómo
construir los valores agregados. Se revelan útiles a su vez si tiene en el cubo grupos de
medidas de diferentes niveles de agregación, por ejemplo: ventas diarias y ventas
mensuales. La relación definida entre el día y el mes permite al motor SSAS generar
correctamente esta situación.
ShareVideos
La dimensión para las promociones, creada anteriormente con el Asistente de Dimensión,
posee relaciones de atributo por defecto, es decir, todos los atributos están ligados al
atributo clave.
Los usuarios pueden expresar la necesidad de realizar análisis según la jerarquía Categoría,
Tipo, Promoción.
Con un simple análisis vemos que la misma Promoción puede pertenecer a más de una
categoría. Podríamos por tanto crear una jerarquía para el reporting pero en esta situación
ShareVideos
nunca sería una jerarquía natural. Todos los atributos estarán ligados a la clave, lo cual no
es muy satisfactorio: el motor SSAS tendrá en este caso poco valor añadido.
Existe por tanto un medio para crear una jerarquía natural. Basta con modificar el atributo
tipo de promoción para que tenga una clave compuesta: el tipo y la categoría. En esta nueva
situación cada tipo no tendrá más que un comercial.
Para crear la relación de atributos y una jerarquía natural es preciso modificar la clave del
atributo Type.
ShareVideos
Todos los atributos están ligados a la clave (Promotion). Para crear la jerarquía basta con
ligar Category a Type.
1. Acepte.
Acaba de crear una jerarquía natural. Si el estudio de desarrollo le muestra dos advertencias
se debe a que los nombres de las relaciones no le parecen justos. Renómbrelas siguiendo las
instrucciones para hacer desaparecer las advertencias.
El nombre de una propiedad para el usuario final no es el nombre del atributo sino el nombre de la
relación.
7. Pruebas
Jerarquía:
Use la lista desplegable para seleccionar y mostrar una jerarquía o una jerarquía de
atributos. Los miembros de la jerarquía aparecen en la zona principal. A
continuación debe validar su contenido, el orden, etc. Visualice las propiedades del
miembro, y valide las relaciones entre las propiedades y los miembros.
Reconexión:
ShareVideos
Las propiedades del miembro son los atributos ligados a los miembros mostrados.
Es importante probar bien estas relaciones.
Observe que en la lista de jerarquías, siguen apareciendo las jerarquías de los atributos Categoría,
Promoción y Type. Para aligerar la interfaz de usuario, conviene ocultarlas
(AttributeHierarchyVisible = False) dado que están accesibles en la nueva jerarquía.
Cubos
Una vez creadas y validadas las dimensiones, llega el momento de pasar a la creación del
cubo. El cubo se crea inicialmente con ayuda del Asistente de cubo, y a continuación se
enriquece en el editor de cubo.
1. Terminología
Medida
Una medida es un hecho, una columna en la tabla de hechos de la DSV. Para cada medida
hay que definir su función de agregación.
Grupo de medidas
ShareVideos
En el cubo se crea una dimensión más para las medidas. Las medidas son los miembros de
la dimensión de las medidas.
Miembro calculado
Dimensión de cubo
La dimensión de cubo es un enlace hacia la dimensión de la base de datos. No es una copia o una
imagen.
Atributo de cubo
Del mismo modo un atributo de la dimensión de cubo puede variar ligeramente respecto al
de la dimensión de la base de datos. También se puede ocultar o desactivar.
Jerarquía de cubo
Cubo
Una Role Playing Dimension (RPG) es una dimensión que se usa varias veces con roles
distintos. La dimensión de tiempo puede servir para analizar fechas de facturas, fechas de
entrega, o fechas de envío.
Perspectiva
ShareVideos
La perspectiva permite exponer parte de un cubo y simplifica su uso a los usuarios finales.
No se trata de una gestión de permisos. Las perspectivas son el equivalente a las vistas en
SQL.
Un KPI es una súper medida calculada que sirve para mostrar en pantalla un indicador de
nivel, un contador, un indicador de semáforo...
Acción
Partición
De modo similar a las tablas SQL, las particiones SSAS permiten separar un grupo de
medidas en varios fragmentos, cada uno de ellos con ciertas propiedades: agregaciones,
frecuencias de actualización...
Escoja Usar tablas existentes para crear un cubo a partir de la Vista del origen de datos
(DSV).
Escoja una o varias tablas de hechos en la DSV. Se creará un grupo de medidas por cada
tabla de hechos.
ShareVideos
Seleccionar medidas
Para cada grupo de medidas seleccione las medidas concretas que quiera usar.
Esta etapa le ofrece la posibilidad de utilizar dimensiones de la base de datos para crear el
cubo y por tanto crear las dimensiones del cubo. Las dimensiones las detecta
automáticamente SSAS en función de las relaciones con las tablas de hechos seleccionadas,
definidas en la DSV.
SSAS le propone aquí crear nuevas dimensiones para las relaciones definidas en la DSV, y
que no se ha podido asociar en la etapa anterior.
Para cada dimensión nueva, la interfaz propone seleccionar las tablas del esquema en copo
de nieve.
3. El editor de cubo
Estructura de cubo:
ShareVideos
En esta pestaña se definen las relaciones entre las dimensiones y los grupos de
medida en una tabla que recuerda a la matriz de bus del Data Warehouse tan
apreciada por Kimball.
Cálculos:
Acciones:
Particiones:
Agregaciones:
Perspectivas:
Traducciones:
Examinador:
ShareVideos
Para comprender bien cómo se define un cubo, abra una solución SSAS. Por ejemplo, el de la
sociedad Adventure Works (C:\Program Files\Microsoft SQL
Server\100\Tools\Samples\AdventureWorks 2008R2 Analysis Services
Project\enterprise\Adventure Works.sln).
El editor de estructura del cubo le permite definir las medidas y las dimensiones del cubo.
La vista del origen de datos está accesible para ayudarle a realizar esta tarea.
a. Medidas
Durante la etapa de desarrollo, las propiedades importantes de los grupos de medida son:
Nombre:
Descripción:
De la misma forma la descripción se presenta como una ayuda para el usuario final
a través de las herramientas cliente. Piense en asignar una descripción que aporte
valor al negocio.
StorageMode:
Ciertos objetos o ciertas propiedades son modificables en varios pasos de la etapa de creación del
cubo. Si bien no todas las propiedades son críticas en el momento de la creación del cubo, sí son
críticas a la hora de alcanzar un buen rendimiento. Es el ejemplo de propiedades como
EstimatedRows que se definen en el Asistente para diseñar agregaciones.
Un grupo de medida contiene al menos una medida. Las medidas están ligadas a una
columna de la vista del origen de datos a excepción de las medidas donde la función de
agregación es Count, que están ligadas a una tabla.
ShareVideos
Nombre:
El nombre de cada medida visible debe tener un significado evidente para los
usuarios de negocio.
Descripción:
Origen (Source):
Indica el origen en la vista del origen de datos: columna o tabla según la función de
agregación. Esta propiedad no se modifica con frecuencia desde el panel de
propiedades. Por el contrario, use la opción Editar medida del menú contextual de la
medida.
AggregateFunction:
Una medida aditiva es una medida donde la agregación se hace del mismo modo
para todas las dimensiones. El ejemplo más corriente es la suma (Sum) aunque el
máximo (Max), el mínimo (Min), y la cuenta (Count) son igualmente medidas
aditivas.
Count cuenta el número de líneas. Es el equivalente a realizar la suma de una columna que tenga
valor 1 en todas las líneas.
A la inversa, una medida semi-aditiva no puede agregarse de la misma forma en todos los
ejes, o bien sencillamente no puede agregarse. Es el caso del nivel de stock que puede
agregarse en base al eje de productos o al eje de tiendas, pero no en base al eje de tiempo.
Las medidas semi-aditivas hacen una suma en todos lo ejes a excepción del eje temporal.
LastNonEmpty calcula un valor para el último hijo que no esté vacío encontrado en la
dimensión tiempo; por ejemplo, para el mes de Enero de 2011, si el nivel de stock más
reciente que se conoce es el del 20 de Enero, éste será el valor devuelto.
AverageOfChildren calcula la media para los hijos de la dimensión tiempo. ByAccount
ShareVideos
permite gestionar las medidas de tipo contable (Account). Existen otras funciones semi-
aditivas menos interesantes: FirstChild, LastChild, FirstNonEmpty.
Microsoft indica que las medidas semi-aditivas están disponibles únicamente en la edición
Enterprise del producto. La realidad no obstante difiere. Las funciones reservadas a la edición
Enterprise son realmente: None, ByAccount, AverageOfChildren, FirstChild, FirstNonEmpty y
LastNonEmpty.
Distinct Count cuenta el número de ocurrencias distintas contenidas en la columna de origen. Este
operador se usa por ejemplo para conocer el número de facturas en una tabla de hechos cuya
granularidad sea el nivel de línea de factura. Hacer una enumeración de elementos distintos sobre
no importa qué eje es una operación muy costosa en términos de cálculo. Por este motivo, SSAS
crea por defecto un grupo de medida dedicado para una medida que tenga esta función de
agregación. No intente desplazar esta medida a un grupo de medida ya existente, la experiencia
demuestra que dicha modificación provoca graves problemas de rendimiento. Siguiendo las
buenas prácticas de SSAS, limite en lo posible el uso de Distinct Count.
Visible:
Es muy útil ocultar una medida. En este caso la medida puede explotarse mediante
una medida calculada.
DataType:
ShareVideos
FormatString:
MeasureExpression:
Define una fórmula MDX simple que se usará durante el procesamiento del grupo
de medidas para calcular aquellos valores de los elementos hoja, es decir de nivel
atómico. A continuación los agregados se calculan por lo general a partir de las
hojas.
La expresión MDX puede ser la división de una medida por otra, o bien la
multiplicación. Una medida debe ser fuente de información, mientras que la otra
puede pertenecer a un grupo de medidas distinto. La relación entre ambas se realiza
a partir de la dimensión.
El orden de los grupos de medidas y el orden de las medidas en el interior del grupo pueden
modificarse simplemente desplazándolas o arrastrándolas.
b. Dimensiones
Las dimensiones, definidas en la base de datos, que están ligadas al cubo se definen en esta
pestaña. Si sigue el consejo de no tener más que un cubo por base de datos, debería
encontrar aquí todas las dimensiones. En el caso de una dimensión realizadora de
funciones, deberá añadirse siempre y cuando tenga funciones que desempeñar en su cubo.
ShareVideos
Nombre:
Orden:
El orden de las dimensiones afecta a los cálculos. Es el caso de operadores unitarios en las
dimensiones padres-hijos (http://msdn.microsoft.com/en-us/library/ms175417.aspx)
Enabled:
Visible:
Hace visible una jerarquía cuando desea utilizarla en las consultas (informes
estáticos) pero no desea que los usuarios finales realicen análisis dinámicos.
AttributeHierarchyEnabled:
AttributeHierarchyVisible:
Hace visible una jerarquía de atributo cuando desea utilizarla en las consultas
(informes estáticos) pero no quiere que los usuarios finales realicen análisis
dinámicos.
AggregationUsage:
Precise al motor cómo debe construir las agregaciones, entre las opciones Full,
None, Unrestricted y Default (véase el capítulo Ultimar la base de datos SSAS -
Diseño de la agregación).
ShareVideos
c. Cubo
Algunas propiedades del cubo pueden actualizarse haciendo clic sobre el cubo en lo alto de
la lista de medidas.
Nombre:
DefaultMeasure:
5. Uso de dimensiones
La pestaña Uso de dimensiones (Dimension usage) se utiliza para definir la relación que
enlaza cada dimensión con cada grupo de medidas.
Como en la pestaña anterior, las dimensiones representadas aquí son dimensiones de cubo:
existen tantas ocurrencias de una dimensión como roles tiene. Este rol se define creando
una relación con la tabla de hechos.
Aquí es posible, al igual que en la pestaña anterior, añadir una dimensión de cubo (o una función
realizada por una dimensión) y editar sus propiedades.
Cada cruce entre las dimensiones y los grupos de medida permite Definir una relación
haciendo clic en el botón cuadrado que aparece a la derecha cuando se hace clic sobre la
casilla de cruce.
Ninguna relación:
Normal:
ShareVideos
Este tipo de relación describe el enlace normal de la modelización en estrella entre
una tabla de hechos y su dimensión. Esta debería ser la relación usada más a
menudo en su cubo.
Existen tres relaciones más complejas que enriquecen las posibilidades del cubo:
Hechos:
Puede usarse cuando la tabla de hechos es también una dimensión. El caso típico es
la enorme dimensión (very large dimension) de las facturas que contengan un
número de factura y varias líneas por factura. Este caso no es el propio de un
proyecto de BI, mostrar este tipo de información, aunque a menudo se nos pida por
parte de los usuarios finales.
Referencia:
En el caso de un modelo en copo de nieve puede darse el caso de que una tabla de
dimensión esté enlazada directamente a una tabla de hechos (en estrella) o bien
enlazada indirectamente a otra mediante una referencia a una tabla de dimensión
intermedia. A su vez, varias dimensiones podrían compartir los mismos atributos. El
tipo de relación Referencia permite enlazar una dimensión a una tabla de hechos
usando una dimensión intermedia.
Por ejemplo, los atributos geográficos son comunes a las dimensiones de cliente,
tienda, etc.
Por ejemplo, los territorios de venta son una propiedad de los comerciales
(Employee). Es posible enlazar la dimensión de los territorios con la tabla de hechos
de los objetivos de venta creando una referencia con su dimensión de comerciales.
ShareVideos
Aquí la dimensión de los territorios se denomina dimensión de referencia mientras
que la dimensión de los comerciales se denomina dimensión intermedia.
Para crear una referencia es preciso añadir a la dimensión intermedia una jerarquía de atributos
correspondiente a la clave de referencia.
Una relación de referencia puede materializarse o no. Defina esta propiedad en la pantalla
Definir una relación marcando la casilla Materializar.
Ventaja: las consultas presentan un rendimiento mejor dado que se usa toda la
capacidad del motor OLAP.
Inconveniente: la relación materializada no evoluciona sino con el procesado el
cubo y este procesado se vuelve más largo.
La referencia que forma parte del cubo del ejemplo AdventureWorks enlazando territorios
comerciales con los empleados puede no materializarse puesto que los empleados que son
comerciales, y por tanto están asociados a un territorio, no son más que catorce. El cálculo
dinámico sobre un número tan reducido de miembros no debería penalizar demasiado los tiempos
de restitución de datos.
Típicamente la relación entre una dimensión y una tabla de hechos es de tipo uno a
varios: por cada miembro de la dimensión, existen varios registros en la tabla de
hechos. La relación Many to many permite gestionar aquellos casos donde, por cada
línea de la tabla de hechos, puede haber varios miembros de la dimensión. Es el
caso de los motivos de compra. Varios motivos de compra pueden ser la causa de
una venta. La relación Many to many provoca la aparición de una tabla cruzada, o
tabla de relaciones, entre la tabla de hechos y la dimensión. Esta tabla de relación se
ShareVideos
implementa en el uso de la dimensión como un grupo de medidas (eventualmente
sin medida).
La relación Many to many permite igualmente modelar una tabla de enlace entre
dos dimensiones. Por ejemplo, en un banco puede abrirse una cuenta para varios
clientes, y un cliente puede tener a su nombre varias cuentas.
Las relaciones Many to many, igual que las vistas no materializadas, provocan
cálculos dinámicos en el momento de consulta. En este caso no interviene la
potencia del motor OLAP.
Una vez efectuado el trabajo en las dos primeras pestañas, los fundamentos del cubo están
en su sitio: las dimensiones, los grupos de medidas y sus relaciones. Es inútil ir más lejos
sin probar y asentar esta primera parte.
En la suite de desarrollo usted añadirá expresiones MDX sobre esta capa. Gran parte de estas
expresiones se calculará dinámicamente en tiempo de consulta. Además de estar orientada al
negocio, su capa base debería estar orientada a las agregaciones. La mayor parte de los
requerimientos por parte de los usuarios finales deberían explotar el motor de agregaciones y
evitar por tanto la lectura de los datos atómicos.
ShareVideos
1. Cierre la ventana de proceso.
2. En el editor del cubo seleccione la pestaña Examinador.
A pesar de todo, consultar el cubo puede volverse una tarea compleja debido a la extensa
variedad de dimensiones y jerarquías que se ofrecen al usuario final. Tenga cuidado de no
ahogarse entre tantos ejes de análisis y medidas. Consultas dinámicas generadas fácilmente en
herramientas como Excel podrían resolverse de forma más rápida mediante procesos en el motor
SSAS. Cuanto más combine los ejes para un nuevo fin más dura será la carga que tendrá que
asumir. En la edición Enterprise, las perspectivas proporcionan desde un modelo simplificado
hasta una herramienta de consulta dinámica.
Realice un sondeo acerca de las herramientas que van a usar los usuarios finales. Recientemente,
tras la llegada de una herramienta cliente que no permite filtrar sobre el nivel All de una jerarquía,
ha sido preciso modelizar un equivalente de esta funcionalidad dentro de la dimensión para poder
realizar ciertos cuadros de mando.
ShareVideos
1. Formas de despliegue desde el estudio de desarrollo
El estudio de desarrollo proporciona al usuario dos formas de editar una base de datos
SSAS.
Modo proyecto
Permite usar una herramienta de gestión de orígenes de datos, por lo que facilita el trabajo
en equipo.
Existen dos formas de trabajar en modo proyecto sobre una solución SSAS.
1. Abra BIDS desde la ruta del menú Inicio: Inicio - Microsoft SQL Server 2008 R2 -
SQL Server Business Intelligence Development Studio.
2. En el menú Archivo - Nuevo, seleccione Proyecto.
3. Entre las Plantillas instaladas de Visual Studio, escoja Proyecto de Analysis
Services.
La segunda consiste en importar una base de datos OLAP en un proyecto nuevo dentro del
estudio de desarrollo.
1. Abra BIDS desde la ruta del menú Inicio: Inicio - Microsoft SQL Server 2008 R2 -
SQL Server Business Intelligence Development Studio.
2. En el menú Archivo - Nuevo, seleccione Proyecto.
3. Entre las Plantillas instaladas de Visual Studio, escoja Importar base de datos de
Analysis Services.
Modo conectado
ShareVideos
A diferencia del modo anterior, y tal y como indica su nombre, el modo conectado permite
trabajar en el estudio de desarrollo conectado directamente a una base de datos SSAS.
Modificar un objeto y guardar los cambios basta para desplegar una nueva versión o
evolutivo.
El estudio crea igualmente una solución y un proyecto, aunque este último no contiene más
que la referencia a la base de datos.
1. Abra BIDS desde la ruta del menú Inicio: Inicio - Microsoft SQL Server 2008 R2 -
SQL Server Business Intelligence Development Studio.
2. En el menú Archivo - Abrir seleccione Análisis de base de datos de servicios.
El procesado (Process en inglés) es la operación que consiste en cargar los datos desde los
orígenes de datos en las estructuras OLAP de la base de datos SSAS en el servidor de
despliegue.
Según la elección del servidor y de la base de datos de despliegue, las opciones son:
Despliegue transaccional
Modo de despliegue
Opción de procesado
ShareVideos
Por defecto, únicamente se inician aquellas operaciones de despliegue necesarias.
Es posible pedir que se procese la base de datos completa o pedir que no se procese
nada.
Para desplegar el proyecto, el estudio genera un archivo XML en la carpeta \bin del
proyecto con el nombre del proyecto y la extensión asdatabase. Este script de despliegue se
ejecuta a continuación sobre el servidor de despliegue.
Durante la generación de la solución (Build), el estudio crea dentro de la carpeta \bin del
proyecto cuatro archivos con el nombre del proyecto y las extensiones:
asdatabase
deploymenttargets
deploymentoptions
Contiene las opciones de despliegue fijadas en BIDS, así como varias opciones que
son necesarias para el despliegue en los entornos de producción.
configsettings
3. Asistente de despliegue
1. Abra el asistente en la ruta del menú Inicio: Inicio - Microsoft SQL Server 2008 R2
- Analysis Services - Deployment Wizard.
También puede ejecutarse por línea de comandos. El funcionamiento de este modo viene
descrito con detalle en: http://msdn.microsoft.com/en-us/library/ms162758.aspx. El modo
de línea de comandos permite hacer exactamente lo mismo que el modo interactivo.
ShareVideos
El modo interactivo muestra varias pantallas que permiten modificar el contenido de tres archivos
que acompañan al archivo .asdatabase. Por línea de comandos, deberá modificar manualmente
estos archivos antes de ejecutar la herramienta. Ambos modos, asistente y línea de comandos,
realizan las mismas operaciones: crean un script XMLA de despliegue y a continuación salvan y
despliegan este script.
El asistente únicamente pide el archivo .asdatabase, aunque en realidad usa los cuatro archivos.
Microsoft proporciona una herramienta ASCMD similar a SQLCMD que le permite ejecutar muchas
de las operaciones por línea de comandos. El único inconveniente es que Microsoft solamente
entrega las fuentes C# de esta herramienta. De usted depende la compilación del ejecutable, a
menos que encuentre un archivo ASCMD.EXE y lo descargue. Toda la información acerca de esta
herramienta imprescindible se encuentra en la página http://msftasprodsamples.codeplex.com/
en la sección Command-line Utility Sample.
ShareVideos
capítulo Ultimar la base de datos SSAS, sección Almacenamiento y particiones -
Almacenamiento en caché automático).
Procesar un objeto consiste en leer los datos del origen de datos y cargarlos en la estructura
física (archivo) OLAP.
Los objetos que se deben procesar son las dimensiones y los grupos de medidas. Se trata de
dos operaciones distintas. El procesado de la base de datos permite unirlas, aunque
entonces quedan disponibles muy pocas opciones.
1. Opciones de procesamiento
Por defecto el grupo de medidas está compuesto por una partición. En tal caso ambos objetos son
idénticos.
Un objeto puede contener a otros. En tal caso el procesado afecta tanto al objeto
seleccionado como a los objetos contenidos en él.
ShareVideos
Procesado completo
Procesar la actualización
Detecta las modificaciones que hay que realizar sobre la dimensión para que sea
coherente con los datos de origen. Este modo de procesamiento actualiza la
dimensión, sin afectar a los objetos dependientes.
Deshacer el procesamiento
Suprime los datos de la base de datos OLAP pero conserva los metadatos
(definiciones de los objetos).
Procesamiento incremental
ShareVideos
tanto es posible que si usted mismo se encarga del procesamiento obtenga el mismo resultado
con menos operaciones que el procesamiento por defecto.
Carga los datos en los objetos sin construir los índices ni las agregaciones.
Procesar la estructura
Suprime los datos de las particiones del cubo y reconstruye las dimensiones.
Para procesar varios objetos a la vez hay que pasarle los detalles al Explorador de objetos
(tecla [F7]), seleccionando los objetos, y a continuación usar del mismo modo la opción
Procesar del menú contextual.
Ejecute el script desde cualquier herramienta que le permita enviar un comando XMLA a la base
de datos OLAP. Por ejemplo ASCMD.EXE, la tarea DDL de ejecución SQL Server Analysis Services
presente en SSIS, o incluso un desarrollo .NET. En el caso de un procesamiento incremental,
también es posible modificar dinámicamente la consulta al origen de datos y actualizar la cláusula
WHERE que filtra los registros a tratar.
ShareVideos
3. Procesamiento desde SSIS
En el flujo de control, SSIS proporciona dos tareas para procesar las bases de datos SSAS:
la tarea de procesamiento de SQL Server Analysis Services y la tarea de ejecución de DDL
de SQL Server Analysis Services.
En el flujo de datos, la edición Enterprise de SSIS contiene dos destinos que permiten
escribir directamente sobre la base de datos OLAP: Procesamiento de dimensiones y
Procesamiento de particiones.
Cuando utilice SSIS para actualizar la base de datos asociada, es lógico que realice a
continuación un procesamiento OLAP directamente desde SSIS. Usted elige entre iniciar el
procesamiento tras la actualización de cada tabla o agrupar todas las tareas de
procesamiento en una operación única.
Los siguientes componentes dan acceso a cada una de las dos posibilidades:
Esta operación permite ejecutar un script XMLA sobre la base de datos SSAS. Por ejemplo,
un script generado con ayuda de SSMS. Es similar al uso del comando SQL para ejecutar
operaciones DDL (Data Definition Language) sobre la base de datos SQL.
Al revés que la primera, esta tarea es muy flexible y permite implementar cualquiera lógica de
procesamiento incremental adaptándose mejor a las restricciones que impone la industrialización.
Incluso el comando XMLA de procesamiento permite configurar el identificador de la base de
datos, y sin embargo SSAS no permite realizar esta configuración en la primera tarea.
Este destino del flujo de control permite actualizar la dimensión sin tener que pasar por una
tabla relacional.
ShareVideos
Este destino del flujo de control permite actualizar la partición del grupo de medidas sin
tener que pasar por una tabla.
Ambos destinos se usan esencialmente en escenarios específicos de tiempo real sobre volúmenes
de datos pequeños.
Expresiones MDX
Las expresiones MDX (MultiDimensional eXpressions) son a las bases de datos
multidimensionales lo que SQL a las bases de datos relacionales. Es un lenguaje concebido
para realizar informes y análisis OLAP. En el marco específico de SSAS es útil, por un
lado, para leer la base de datos y extraer resultados y, por otro lado, para enriquecer la capa
de cálculos del modelo dimensional unificado. MDX es útil para ofrecer más
funcionalidades y datos de negocio estándar en la base de datos. Esto no impide a los
usuarios extraer del cubo sus propios cálculos, pero el estudio de desarrollo SSAS le
permite centralizar en la base de datos gran parte de ellos.
El uso de expresiones MDX para definir ciertas propiedades, como el miembro por defecto,
ya se ha explicado en el libro.
Este capítulo presenta algunas nociones sobre las expresiones MDX que le van a permitir
crear medidas calculadas, conjuntos nombrados, indicar propiedades como el miembro por
defecto, definir la seguridad de acceso...
MDX es un lenguaje de consulta para la creación de informes. Una parte del lenguaje está
dedicado a las expresiones. Una expresión es una fórmula que devuelve un valor (un entero, un
decimal, un miembro, un conjunto...).
1. Elementos de MDX
Los miembros de un atributo son los valores posibles que puede tomar el atributo. Verde,
amarillo, rojo, todos son miembros del atributo color.
ShareVideos
La dimensión de las medidas es un caso particular. Esta dimensión tiene un único atributo y
una única jerarquía de atributo que contiene a los miembros: las medidas. No tiene
miembro All.
Cada jerarquía de atributo posee un miembro por defecto, en general el miembro All.
En una tabla, como en la hoja de cálculo Excel, toda celda que contenga un valor está
referenciada por su fila y su columna. Imagine que diseña un valor mediante una referencia
parcial, la columna por ejemplo. El valor será el resultado de la agregación de todas las
celdas de la columna. El motor MDX funciona del mismo modo con muchas más
dimensiones, más tablas y más valores... Las coordenadas de cada valor, de cada celda, se
llaman tuplas.
Tupla
Para conocer el volumen de ventas de zapatos de color rojo en 2010, basta con definir una
tupla a partir de los cuatro miembros:
Esta tupla define una celda del cubo, calculada mediante la agregación de todas las celdas
subyacentes. Estas celdas se definen mediante la combinación de los miembros de las
jerarquías de atributo no definidas en una tupla, por ejemplo las tiendas o las tallas de
zapato.
Si el volumen de venta es el miembro por defecto del cubo, puede suprimirse de la tupla,
compuesta ahora por tres miembros.
Cada tupla define una celda del cubo y devuelve su valor. Esta celda se define a partir de su
coordenada, su miembro, sobre cada una de las jerarquías de atributo del cubo. Cada
jerarquía tiene un miembro por defecto, y es opcional usar la jerarquía en la tupla para
definir la celda. Si no se ha escogido ningún miembro para una jerarquía de atributo, se
utiliza el miembro por defecto.
ShareVideos
El contexto de evaluación de la tupla puede ser un subconjunto del cubo. En este caso los
miembros por defecto pueden reemplazarse contextualmente por otros.
La sintaxis para definir una tupla es una lista de miembros separados por comas, entre
paréntesis.
Un miembro puede definirse a partir de tres elementos separados por puntos: la dimensión,
la jerarquía de atributo y el miembro. Cada elemento puede situarse entre corchetes. Una
tupla se define de este modo:
Esta notación hace uso de los nombres de los miembros. Un miembro también puede
identificarse mediante su clave; se usa el carácter & para identificar la clave. En la misma
tupla, es posible utilizar una u otra notación.
Identificar una celda mediante una tupla es similar a identificarla en Excel. No obstante, no olvide
que cada jerarquía de atributo que no esté definida en la tupla se evaluará en función del
contexto, o en función del miembro por defecto si no hemos definido un contexto para el atributo.
La dimensión de las medidas es un caso particular. Una tupla devuelve un valor si se usa en este
sentido. En los demás casos, son realmente las coordenadas de la celda de la tabla.
Conjunto (Set)
Un conjunto se compone de una o varias tuplas que se definen sobre las mismas jerarquías
de atributos. Los miembros de las jerarquías deben aparecer en el mismo orden en todas las
tuplas.
{([Date].[Calendar Year].&[2007],[Geography].[Country].&[France]),
([Date].[Calendar Year].&[2008],[Geography].[Country].&[Germany])}
ShareVideos
2. Manipulación
1. Abra SSMS desde la ruta del menú Inicio: Inicio - Microsoft SQL Server 2008 R2 -
SQL Server Management Studio.
2. Conéctese a una instancia de SSAS con los cubos AdventureWorks.
3. En el Explorador de objetos, haga clic en la base de datos Adventure Works DW
2008R2, y a continuación despliegue el menú contextual y escoja la opción Nueva
consulta MDX.
4. Escriba el código que se muestra a continuación:
WITH
SET [Líneas] AS {([Date].[Calendar Year].&[2007],[Geography].
[Country].&[France]),([Date].[Calendar Year].&[2008],[Geography].
[Country].&[Germany])}
MEMBER [Measures].[Tuple] AS ([Measures].[Reseller Sales Amount],
[Product].[Category].&[3])
SELECT
{[Measures].[Tupla]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
Esta consulta MDX crea un conjunto (SET) llamado Líneas, compuesto por dos tuplas. Se
crea también una medida, llamada Tupla, definida por una tupla. Para probar la consulta en
su conjunto se muestra el conjunto de líneas de la tabla y la medida como una columna.
Tupla
CY 2007 Francia $66,584.49
CY 2008 Alemania $28,005.90
WITH
SET [Líneas] AS {([Date].[Calendar Year].&[2007],[Geography].
[Country].&[France]),([Date].[Calendar Year].&[2008],[Geography].
[Country].&[Germany])}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
El motor MDX utiliza la medida por defecto para calcular los valores.
ShareVideos
Prenda
CY 2007 Francia $66,584.49
CY 2008 Alemania $28,005.90
WITH
SET [Líneas] AS {([Date].[Calendar Year].&[2007],[Geography].
[Country].&[France]),([Date].[Calendar Year].&[2008],[Geography].
[Country].&[Germany])}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
La cláusula WHERE se usa para definir un SLICER, un contexto de filtrado, que actúa en
este caso sobre la jerarquía de las medidas. Sobrecarga el miembro por defecto de esta
jerarquía.
Prenda
CY 2007 Francia 2,333
CY 2008 Alemania 1,034
Las tuplas y los conjuntos se basan en el lenguaje MDX. Estos elementos combinados con
los operadores y las funciones del lenguaje hacen infinitas las posibilidades de creación de
expresiones.
El margen bruto se calcula restando el importe de las ventas del importe de compra.
Del mismo modo, si el margen constituye un valor que puede agregarse en todas las dimensiones,
se calcula a partir de la diferencia de estas dos medidas. Crear el margen bruto como una medida
del cubo sería un error pues inflaría inútilmente las agregaciones creadas durante su
procesamiento. La modelización recomendada consiste en crear el margen bruto como una
ShareVideos
medida calculada, es decir una expresión MDX que se evaluará en el momento de realizar la
consulta.
Se puede añadir una expresión calculada desde la pestaña Cálculos en el editor del cubo.
Puede crear miembros calculados sobre cualquier dimensión. Comience por la dimensión de las
medidas, añadiendo las medidas calculadas. El uso de miembros calculados sobre otras
dimensiones exige mayor experiencia.
La propiedad Comportamiento si no está vacío es muy importante. Permite optimizar los cálculos.
El motor no efectuará el cálculo si al menos uno de los miembros indicados en esta lista no está
vacío. En el caso de tener miembros calculados complejos, esta propiedad evita tener que evaluar
este miembro en aquellas celdas que no sea necesario.
Para asociar una descripción a su medida calculada, use el botón Propiedades de Cálculo que
aparece en la barra de herramientas de esta pestaña.
ShareVideos
Los usuarios quieren, por lo general, crear cuadros de mando donde las ventas aparezcan
desglosadas por periodo de calendario. A su vez, necesitan conocer el porcentaje del
periodo en el total del año.
«Jerarquía».CURRENTMEMBER
Sea cual sea el contexto de ejecución de su expresión, todas las jerarquías (jerarquías y jerarquías
de atributo) tienen un miembro actual conocido. El conjunto de miembros actuales conforman el
contexto. Generalmente el miembro actual es el miembro ALL para la mayoría de las jerarquías.
Debemos efectuar una división del importe entre la tupla que evalúa el importe anual. Esto
se describe en la expresión siguiente:
[Measures].[Sales Amount]
/ ( ANCESTOR( [Date].[Calendar].CurrentMember, [Date].
[Calendar].[Calendar Year] ), [Measures].[Sales Amount] )
A nivel anual, o en el nivel superior ALL, no tiene sentido efectuar el cálculo: el resultado
debe ser 100%. La fórmula tiene que enriquecerse para contemplar este caso.
Todo miembro pertenece a un nivel de alguna jerarquía. Y cada nivel se caracteriza por un
entero llamado "ordinal". ALL es el nivel 0, los años el nivel 1...
«Miembro».LEVEL
«Nivel».ORDINAL
ShareVideos
1
Then 1
Else [Measures].[Sales Amount] /
( ANCESTOR( [Date].[Calendar].CurrentMember, [Date].
[Calendar].[Calendar Year] ), [Measures].[Sales Amount] )
End
El lenguaje MDX posee numerosas funciones que abren posibilidades infinitas. Para mayor
detalle, diríjase a la página MSDN de referencia de las funciones MDX:
http://msdn.microsoft.com/en-us/library/ms145970.aspx
Para definir el miembro por defecto, la expresión más sencilla consiste en indicar el
identificador de un miembro, igual que para las medidas.
ShareVideos
4. Elija el miembro predeterminado, el año 2007. Observe que la expresión MDX en la
parte inferior de la ventana se actualiza automáticamente con el identificador del
miembro.
5. Guarde y despliegue los cambios, el cubo aparece filtrado en base al año 2007.
En el caso de una dimensión usada en un cubo como dimensión realizadora de alguna función, es
imposible introducir un miembro por defecto a través de la interfaz estándar. El siguiente ejemplo
asume que usted ha eliminado las dimensiones Delivery Date y Ship Date del cubo. SSAS permite
igualmente especificar un miembro por defecto de las dimensiones realizadoras de funciones
añadiendo un script al cubo.
1. Guarde y despliegue.
2. Pruebe el cubo gracias a la pestaña Examinador.
En un escenario más evolucionado, los usuarios pueden solicitar que el filtro se calcule a
partir del año más reciente sobre el que existen ventas registradas. El objetivo sería filtrar
sobre el año en curso.
Para estudiar este escenario, ayúdese del modelo de la consulta MDX definido
anteriormente. Es útil para verificar la consulta MDX.
La consulta es la siguiente:
ShareVideos
WITH
SET [Líneas] AS {[Date].[Calendar Year].Members}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
Prenda
Todos los períodos 64,497
CY 2005 2,132
CY 2006 16,927
CY 2007 31,623
CY 2008 13,815
CY 2010 (NULL)
La primera línea Todos los periodos se corresponde con el atributo ALL de la jerarquía. Lo devuelve
la función MEMBERS puesto que es quien ha llamado a la jerarquía Calendar Year. La misma
función invocada para un nivel específico de la jerarquía de atributos no devuelve el miembro ALL.
La consulta es la siguiente:
WITH
SET [Líneas] AS {[Date].[Calendar Year].[Calendar
Year].Members}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
y devuelve:
Prenda
CY 2005 2,132
CY 2006 16,927
CY 2007 31,623
CY 2008 13,815
CY 2010 (NULL)
La sintaxis es la siguiente:
[Dimensión].[Jerarquía].MEMBERS
ShareVideos
[Dimensión].[Jerarquía].[Nivel].MEMBERS
Devuelve un conjunto de miembros. Observe que este conjunto viene ordenado. Esto es
debido a una buena construcción de la dimensión en la etapa de desarrollo.
El año más reciente con ventas registradas podría definirse como el último año del
subconjunto de años de donde se han excluido aquellos años sin ventas. La función
FILTER permite realizar un filtrado sobre un conjunto. Devuelve el conjunto filtrado.
La condición se define aquí como las celdas en las que hay ventas, es decir aquellas en que
la medida [Measures].[Order Count] contiene hechos.
La función ISEMPTY devuelve un valor booleano que indica si la expresión que le hemos
pasado devuelve resultado vacío.
ISEMPTY( «expression» )
La consulta siguiente:
WITH
SET [Líneas] AS {FILTER([Date].[Calendar Year].[Calendar
Year].Members, Not IsEmpty([Measures].[Order Count]))}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
Prenda
CY 2005 2,132
CY 2006 16,927
CY 2007 31,623
CY 2008 13,815
Para obtener el último miembro, MDX provee la función TAIL que devuelve el último
miembro del conjunto.
TAIL( «Conjunto» )
ShareVideos
Pruébela con la siguiente consulta:
WITH
SET [Líneas] AS {TAIL(FILTER([Date].[Calendar Year].
[Calendar Year].Members, Not IsEmpty([Measures].[Order
Count])))}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
El resultado es el esperado:
Prenda
CY 2008 13,815
Todas las funciones están accesibles en la interfaz de usuario del generador MDX del estudio de
desarrollo o del editor de la consulta MDX de SSMS. Las funciones son numerosas y vienen
agrupadas por categoría.
{Conjunto}.Item(índice)
Esto permite modificar la consulta anterior para obtener el único miembro del conjunto:
WITH
SET [Líneas] AS {TAIL(FILTER([Date].[Calendar Year].
[Calendar Year].Members, Not IsEmpty([Measures].[Order
Count]))).Item(0)}
SELECT
{[Product].[Category].&[3]} ON COLUMNS
,[Líneas] ON ROWS
FROM [Adventure Works]
WHERE [Measures].[Reseller Order Quantity]
Para modificar el miembro por defecto, basta con volver al estudio de desarrollo.
ShareVideos
1. Guarde los cambios y despliegue. El cubo está ahora filtrado sobre el año en curso.
Otro escenario posible consiste en calcular el miembro por defecto a partir de la fecha del sistema.
Es posible usando las extensiones VBA de MDX y la función de conversión de una cadena de texto
en un miembro. Véase el código a continuación.
Este código recupera el identificador del miembro correspondiente al año 2007 del
calendario. Por ejemplo, el año 2007 tiene como miembro: [Date].[Calendar
Year].&[2007].
Esto implica que el conjunto dinámico no varía en función del contexto interior de la consulta, de
hecho sólo se evalúa una vez en el contexto general. Este comportamiento es mucho menos
dinámico de lo que se podría haber esperado.
Productos de referencia
Para responder a esta necesidad, es posible crear un conjunto con nombre estático.
ShareVideos
3. Mediante la barra de herramientas de esta pestaña cree un Nuevo conjunto con
nombre.
4. Introduzca el nombre del conjunto con nombre: [Productos de referencia].
5. Escoja el tipo Estático.
6. En la Expresión deslice los productos afectados desde las Herramientas de cálculo.
7. Cree un conjunto en la Expresión indicando la lista entre llaves y separando cada
producto con una coma.
{TopCount([Customer].[Customer].[Customer].Members, 10,
([Measures].[Internet Sales Amount], STRTOMEMBER(’[Date].
[Calendar Year].&[’ + FORMAT(YEAR(NOW()),’0000’) + ’]’))
)}
Presentación de SSRS
SSRS es una solución de reporting que originalmente no estaba orientada al BI pero que
poco a poco ha ido incorporando funcionalidades en este sentido, empezando por un motor
MDX.
Este libro trata únicamente los aspectos específicos ligados al Business Intelligence, como el
reporting MDX, los indicadores de nivel, la distribución de los informes...
ShareVideos
Un servidor de informes dedicado a la ejecución de informes.
Un portal Web de gestión que permite consultar, distribuir y gestionar los informes.
Una herramienta de desarrollo de informes integrada en BIDS como las demás
herramientas de BI SQL Server.
Una herramienta de creación de informes: Report Builder. Esta herramienta está
destinada a usuarios finales experimentados y a desarrolladores.
Componentes .NET, reutilizables en el marco del desarrollo de aplicaciones en
Visual Studio, que permiten integrar SSRS en las aplicaciones y extender sus
funcionalidades.
Crear un informe SSRS es equivalente a crear un archivo XML con extensión RDL, de
Report Definition Language. El formato RDL es un formato XML abierto que permite
declarar todos los componentes del informe: conjuntos de datos, formato de presentación,
subtotales...
Disponer de un formato abierto tiene dos consecuencias principales. Por un lado, el diseño
del informe está separado de su ejecución, y esto otorga cierta flexibilidad en la
implementación. Por otro lado, es sencillo generar usted mismo los archivos con formato
RDL en sus aplicaciones.
2. Servicios
La instalación de SSRS crea dos servicios correspondientes a los dos servidores: el servidor
de informes (Report Server) y el portal de gestión (Report Manager).
a. Servidor de informes
ShareVideos
Distribución: SSRS permite a los usuarios buscar los informes en el portal Web.
Esta opción corresponde con lo que comúnmente se conoce como modo PULL. No
obstante, es posible empujar los informes hasta los usuarios en sus carpetas de
entrada de correo o en carpetas compartidas, modo PUSH.
Todos estos componentes son abiertos: es posible crear extensiones como la lectura de sus
propios formatos de dato, un nuevo tipo de renderizado, la implementación de algún otro
sistema de seguridad o una distribución de informes mediante fax.
la extracción de datos,
la generación del informe en un lenguaje intermedio (IF) propio a SSRS,
por último, la transformación de este lenguaje intermedio en el formato de
representación final (Excel, PDF...).
El servidor de informes es un servicio Web que funciona con o sin IIS (Microsoft Internet
Information Services). La nueva arquitectura sin IIS funciona directamente sobre el driver
HTTP.SYS de Windows. Se recomienda usar esta arquitectura si se quiere mejorar el
rendimiento. El servicio Web está accesible a través de una interfaz HTTP en la siguiente
dirección por defecto:
http://localhost:8080/ReportServer
El servidor de informes utiliza SQL Server para gestionar sus datos. Durante la instalación
se crean dos bases de datos:
b. Administrador de informes
http://localhost:8080/Reports
ShareVideos
3. Desarrollo
a. Elementos a desplegar
SSRS gestiona dos tipos de orígenes de datos: los orígenes de datos incrustados en
el informe y los orígenes de datos compartidos. En el caso de una solución de
portal, se recomienda usar un origen de datos compartido ya que esto permite
especificar una única vez la información de conexión, y configurar en los informes
un origen de datos incrustado que apunte a este origen de datos compartido.
informes:
Un informe puede contener varios orígenes de datos, puede tener una estructura
compleja con varias tablas, gráficos, mapas...
Un conjunto de datos (en inglés dataset) es un objeto del origen de datos que
describe los datos tal cual se han extraído del origen: la consulta, su resultado,
eventualmente algún campo calculado...
Si bien un informe puede usar un origen de datos incrustado, el conjunto de datos compartido
sólo funciona con un origen de datos compartido.
ShareVideos
partes de informe:
Cada vez más a menudo, los usuarios informáticos están acostumbrados a coger
pequeñas aplicaciones, o gadgets, y agregarlos en su propia interfaz. Con esta nueva
funcionalidad, SSRS permite realizar esta acción en la creación de un informe.
Incluya elementos tales como mapas, indicadores de nivel, o tablas accesibles en la
galería de partes de informe para permitir a los usuarios de Report Builder
reutilizarlas.
b. Herramientas de desarrollo
Dado que va a utilizar un cubo construido por encargo suyo tras un análisis completo, parta del
principio de que las consultas deben ser sencillas considerando el cubo como una capa de negocio.
Si en tiempo de diseño de una extracción se da cuenta de que la consulta no es evidente,
formúlese la siguiente pregunta: ¿sería necesario incorporar esta funcionalidad en el cubo?
Una aplicación de Business Intelligence no debería tener como objetivo realizar un informe de tipo
listado de facturas de 400 páginas.
ShareVideos
Habida cuenta de la pobre calidad del diseñador de consultas que MDX proporciona en
SSRS, se aconseja pasar de largo y no utilizarlo. Por el contrario, se recomienda utilizar el
siguiente proceso para diseñar un informe con una extracción de los datos principales:
En el caso de un informe que posea varios conjuntos de datos, será preciso crear tantos
conjuntos de datos y orígenes de datos como sea necesario.
4. Solución SSRS
Igual que para SSAS, el desarrollo de los informes se realiza en el estudio de desarrollo
(BIDS) creando un proyecto a partir de uno de los modelos siguientes:
Sólo hay una diferencia entre ambas plantillas: la primera lanza el asistente de creación de
informe al inicio. Seleccionando la segunda plantilla puede obtener el comportamiento de
la primera con un sólo clic.
Escoja sistemáticamente la segunda plantilla. En efecto, le deja la libertad de crear antes de nada
un origen de datos compartido.
Una plantilla de Proyecto de modelo de informe le permite crear modelos de informe que pueden
usarse en SSRS como origen de datos. El modelo de informe es una capa de negocio entre el
origen de datos y el informe. Este libro no se extiende sobre esta funcionalidad (véase la sección
ShareVideos
Uso de Report Builder en este mismo capítulo). En efecto en el caso de un origen de datos SSAS
que contiene una capa de negocio, el interés es limitado.
El proyecto creado estará accesible a través del panel Explorador de soluciones ([Ctrl][Alt]
L). Puede contener orígenes de datos compartidos, conjuntos de datos compartidos e
informes.
El estudio de desarrollo permite a su vez publicar partes de informe a través del menú Informe -
Publicar partes de informe. Las partes de informe no aparecen por tanto ilustradas en el
explorador de soluciones.
Extracción de datos
Tras la definición del informe, la primera tarea de desarrollo consiste en extraer los datos
útiles para su implementación.
1. Orígenes de datos
El acceso a los datos del informe se realiza a través de un origen de datos. SSRS gestiona
dos tipos de origen de datos: los orígenes de datos compartidos y los orígenes de datos del
informe.
Las buenas prácticas aconsejan crear un origen de datos compartido que usarán todos los
informes para leer este origen de datos. El origen de datos compartido es un objeto que se
despliega en el servidor de informes y que permite centralizar la información de seguridad
para acceder a los datos.
Un enlace hacia un origen de datos compartido, que indica que el informe usa este
último.
Un origen de datos propio y privado al informe. Se aconseja únicamente en el caso
de un origen de datos que se use una sola vez.
ShareVideos
c. Propiedades del origen de datos compartidos
Las propiedades generales, accesibles desde la página General, son el Nombre, el Tipo y la
Cadena de conexión:
Nombre
Tipo
SSRS puede asimismo conectarse a un origen de datos PowerPivot for SharePoint. Basta con usar
el tipo de proveedor Analysis Services. La cadena de conexión es la URL de la hoja de cálculo.
Cadena de conexión
Introduzca aquí la cadena de conexión a su origen de datos o use el botón Modificar para
editarlo. Para la mayoría de proveedores SSRS muestra una ventana adaptada.
ShareVideos
Esta ventana es genérica sea cual sea el tipo de proveedor que haya elegido.
SSRS dispone de cuatro modos de identificación del usuario para la lectura de datos en el
origen de datos.
Con esta opción la información de conexión del usuario de Windows es la que se usará para
leer los datos.
Esta opción está adaptada especialmente para una base de datos SSAS en la que ha definido
diferentes perímetros de datos por usuario.
Esta opción permite especificar una cuenta de usuario única para conectarse al origen de
datos sea cual sea el usuario que ejecute el informe. Especifique el nombre y la contraseña
una única vez en las zonas habilitadas.
Pedir credenciales
No usar credenciales
Las propiedades del origen de datos del informe permiten indicar tres opciones generales
suplementarias.
Esta opción es la más importante. Es la que debe escoger para usar un origen de datos
compartidos.
ShareVideos
En un origen de datos de informe usando un origen de datos compartidos, el nombre del primero
no es obligatoriamente igual al del segundo. No obstante es más claro si se asigna el mismo
nombre a ambos.
Esta opción permite efectuar todas las consultas ligadas a este origen de datos en una única
transacción con el objetivo de garantizar la coherencia del informe. Es preferible marcar
esta casilla de forma sistemática.
El botón fx a la derecha de la Cadena de conexión permite crear una conexión dinámica que
se evalúa en tiempo de ejecución. Esta funcionalidad tiene como objetivo esencial
incorporar en la cadena de conexión parámetros del informe. Por ejemplo, si en el servidor
SQL se guarda cada año en una base de datos diferente, la cadena de conexión podría ser:
2. Conjuntos de datos
El conjunto de datos o dataset es el objeto que define los datos que se leen del origen de
datos y que posteriormente se visualizan en el informe. Sus principales elementos son el
origen de datos y la consulta sobre este origen.
ShareVideos
Los conjuntos de datos ocultos están ligados a los parámetros de configuración de los
informes: si publica un parámetro del informe como parte del informe, el conjunto de datos
oculto se publica con él.
En contraposición a escenarios más sencillos, toda esta funcionalidad parece difícil de proponer a
los usuarios finales en el Report Builder.
La primera página de las Propiedades del conjunto de datos permite crear la consulta de
extracción a partir del botón Diseñador de consultas. En el caso de un origen de datos
SSAS, este botón abre una pantalla llamada Diseñador de consultas. Se trata de una
herramienta que es gráfica por defecto: la consulta se crea deslizando con el ratón los
atributos del origen de datos. No obstante, es posible usar el modo texto.
SSRS es una herramienta de reporting estático y relacional. El hecho de que sea relacional
indica que espera una estructura compuesta de varias columnas fijas y un número de líneas
variable. El motor de consultas MDX tal y como se presenta no garantiza esta integridad.
Las consecuencias pueden ser desastrosas en tiempo de desarrollo, mantenimiento y
ejecución.
Lo más extraño es que las consultas que SSRS genera automáticamente en los conjuntos de datos
ocultos, las consultas de los parámetros, sí toman en cuenta, no obstante, las restricciones
relacionales.
ShareVideos
Las consultas creadas pueden ejecutarse en otro motor de consultas (por ejemplo en
SSMS), aunque no devuelven el mismo conjunto de columnas.
No conserva el formato del texto de la consulta.
Por último, el cambio de vista entre las pestañas del modo gráfico y el modo texto provoca
de vez en cuando pérdidas en las consultas.
Por todos estos motivos le recomendamos que evite en lo posible el uso de esta herramienta
y, por el contrario, que construya usted mismo las consultas en SSMS. Además, le
recomendamos guardarlas en un gestor de código fuente antes de pegarlas en el diseñador
de consultas SSRS en modo texto.
Tras la creación de un parámetro de consulta para el atributo Product Line del cubo
Adventure Works, SSRS genera un conjunto de datos oculto con la consulta MDX
siguiente:
WITH
MEMBER [Measures].[ParameterCaption] AS [Product].[Product
Line].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[ParameterValue] AS [Product].[Product
Line].CURRENTMEMBER.UNIQUENAME
MEMBER [Measures].[ParameterLevel] AS [Product].[Product
Line].CURRENTMEMBER.LEVEL.ORDINAL
SELECT
{[Measures].[ParameterCaption]
,[Measures].[ParameterValue]
,[Measures].[ParameterLevel]} ON COLUMNS ,
[Product].[Product Line].ALLMEMBERS ON ROWS
FROM [Adventure Works]
ShareVideos
a. Cláusula FROM
En una consulta MDX la cláusula FROM indica el cubo de la base de datos, asumiendo que
una base de datos puede contener uno o varios cubos.
b. Cláusula ON ROWS
En el ejemplo anterior los registros se generan a partir de todos los miembros del atributo
Product Line, comprendiendo los posibles miembros calculados (ALLMEMBERS).
Para consultar los datos del primer día de Abril de 2007 y el segundo día de Marzo use un
conjunto de tuplas:
{([Product].[Product Line].[Mountain],[Date].[Calendar].[Month].
[April 2007]),([Product].[Product Line].[Touring],[Date].
[Calendar].[Month].[March 2007])}ON ROWS
Para consultar los tres registros que han generado mayor cantidad de ventas use la función
TOPCOUNT adaptada a tal efecto:
Es posible cruzar los datos entre los registros de productos y los tres mejores meses gracias
a la cláusula CROSSJOIN (CROSSJOIN y * son equivalentes):
Esta consulta evalúa los tres mejores meses independientemente de la línea de productos.
Para obtener para cada línea de productos los tres mejores meses de ventas de la línea, es
preciso usar el comando GENERATE :
Las posibilidades del lenguaje MDX son infinitas para crear conjuntos de registros que
respondan a su necesidad.
ShareVideos
No obstante la sintaxis sigue siendo compleja para un usuario final. Es una lástima que Microsoft
no ofrezca ningún editor gráfico con un buen funcionamiento y adaptado a tal efecto.
La cláusula ON COLUMS permite definir las columnas del resultado de la consulta MDX.
Una consulta MDX estándar genera un primer juego de columnas que se corresponde con el
eje de los registros (por ejemplo el nombre de los productos) y un segundo juego de
columnas que se corresponde con el eje de las columnas (por ejemplo los años). El número
de columnas tanto del primer juego de columnas como del segundo puede variar.
En el caso de una consulta MDX para SSRS, el segundo juego de columnas está limitado a
las medidas. Parta no obstante del principio de que los dos juegos de columnas pueden
variar en tiempo de ejecución: el primero desaparece por completo si la consulta no
devuelve ninguna línea, mientras que el segundo lo hace si una columna está vacía y se ha
especificado la cláusula NON EMPTY generada por SSRS.
Por este motivo la consulta debe contener una medida en la cláusula WITH por columna
utilizada en el informe, en esencia para el eje de los registros. Para el eje de las columnas
basta con suprimir la cláusula NON EMPTY.
Por ejemplo:
WITH
MEMBER [Measures].[País] as [Geography].
[Country].CurrentMEMBER.Name
MEMBER [Measures].[Promoción] as [Promotion].
[Promotion].CurrentMEMBER.Name
MEMBER [Measures].[Año] as [Date].[Calendar
Year].CurrentMEMBER.Name
SELECT
{ [Measures].[País],[Measures].[Promoción],[Measures].[Año],
[Measures].[Reseller Average Sales Amount]}
ON COLUMNS,
NON EMPTY { ([Geography].[Country].[Country].ALLMEMBERS ) }
* {[Promotion].[Promotion].[Promotion].ALLMEMBERS}
* {[Date].[Calendar Year].[Calendar Year].ALLMEMBERS}
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM [Adventure Works]
Cantidad Media de
País Promoción Año
las Ventas
Sin CY No CY
Australia Australia (NULL)
descuento 2005 Discount 2005
Australia Sin CY Australia No CY (NULL)
ShareVideos
Cantidad Media de
País Promoción Año
las Ventas
descuento 2006 Discount 2006
Sin CY No CY
Australia Australia 11,748.85 $
descuento 2007 Discount 2007
Sin CY No CY
Australia Australia 11,775.36 $
descuento 2008 Discount 2008
Sin CY No CY
Australia Australia (NULL)
descuento 2010 Discount 2010
La consulta devuelve registros sin resultado, es decir, registros donde el importe es NULL. Se trata
de algo normal en el uso de medidas calculadas en el cubo. Debe añadir la cláusula
NON_EMPTY_BEHAVIOR para evitar que se active el cálculo de la medida.
WITH
MEMBER [Measures].[País] as [Geography].
[Country].CurrentMEMBER.Name, NON_EMPTY_BEHAVIOR=’[Measures].
[Reseller Sales Amount]’
MEMBER [Measures].[Promoción] as [Promotion].
[Promotion].CurrentMEMBER.Name, NON_EMPTY_BEHAVIOR=’[Measures].
[Reseller Sales Amount]’
MEMBER [Measures].[Año] as [Date].[Calendar
Year].CurrentMEMBER.Name, NON_EMPTY_BEHAVIOR=’[Measures].[Reseller
Sales Amount]’
SELECT
{ [Measures].[País],[Measures].[Promoción],[Measures].[Año],
[Measures].[Reseller Average Sales Amount]}
ON COLUMNS,
NON EMPTY { ([Geography].[Country].[Country].ALLMEMBERS ) }
* {[Promotion].[Promotion].[Promotion].ALLMEMBERS}
* {[Date].[Calendar Year].[Calendar Year].ALLMEMBERS}
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM [Adventure Works]
Si desea mostrar el volumen de ventas por nombre de cliente, no le basta con tener una consulta
que devuelva únicamente los nombres de cliente. En efecto, cuando SSRS vea dos veces el mismo
nombre de familia va a acumular las ventas en un único registro, en caso de que su consulta
ShareVideos
devuelva varios. Si se trata en realidad de clientes distintos, es preciso extraer del origen de datos
el identificador de cliente y usarlo en el informe como criterio de filtrado.
d. Filtros
MDX proporciona básicamente dos técnicas para realizar un filtrado general sobre las
consultas: el segmentador y el subcubo.
Segmentador
Por ejemplo, para filtrar sobre las ventas de Canadá en el año 2008:
WITH
MEMBER [Measures].[LineaDeProducto] AS [Product].[Product
Line].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Mes] AS [Date].
[Calendar].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Ventas Euro] AS [Measures].[Sales Amount]
SELECT
{[Measures].[LineaDeProducto]
,[Measures].[Mes]
,[Measures].[Ventas Euro]
} ON COLUMNS ,
GENERATE({[Product].[Product Line].&[M],[Product].[Product
Line].&[R]},
[Product].[Product Line].CurrentMember * TOPCOUNT([Date].
[Calendar].[Month].Members, 3,[Measures].[Sales Amount])) ON ROWS
FROM [Adventure Works]
WHERE ([Date].[Calendar Year].&[2008],[Sales Territory].[Sales
Territory Country].&[Canada])
ShareVideos
El segmentador no permite efectuar un filtrado sobre una jerarquía presente en la cláusula ON
ROWS.
Subcubo
El subcubo se usa en la cláusula FROM. Es preciso reemplazar el cubo por una subconsulta
MDX que defina el subcubo. Por ejemplo:
WITH
MEMBER [Measures].[LineaDeProducto] AS [Product].[Product
Line].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Mes] AS [Date].
[Calendar].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Ventas Euro] AS [Measures].[Sales Amount]
SELECT
{[Measures].[LineaDeProducto]
,[Measures].[Mes]
,[Measures].[Ventas Euro]
} ON COLUMNS ,
GENERATE({[Product].[Product Line].&[M],[Product].[Product
Line].&[R]},
[Product].[Product Line].CurrentMember * TOPCOUNT([Date].
[Calendar].[Month].Members, 3,[Measures].[Sales Amount])) ON ROWS
FROM (SELECT {([Date].[Calendar Year].&[2008],[Sales Territory].
[Sales Territory Country].&[Canada])} ON COLUMNS FROM [Adventure
Works])
La siguiente consulta usa un segmentador para filtrar los años 2007 y 2008:
Efectivamente devuelve la suma de las ventas sobre los dos años indicados.
Ventas
Mountain 8 102 753,50 €
ShareVideos
Y la misma consulta con un subcubo:
Ventas
Mountain 10 251 183,52 €
Suprima la palabra clave EXISTING y ambas consultas realizarán la suma de las ventas sobre el total
de los años. Por defecto un conjunto se evalúa en el contexto del cubo que contiene sus
miembros. La cláusula EXISTING provoca que se evalúe en el contexto en curso. De ello se deduce
que el segmentador ha modificado el contexto en curso.
e. Parámetros
SSRS permite crear parámetros de consulta, es decir parámetros que van a influir sobre la
extracción de los datos. Con el lenguaje MDX, la configuración de las consultas tiene
varios usos posibles: filtrar sobre uno o varios miembros (años, familia de productos),
cambiar el valor que se está mostrando (las ventas o el stock), cambiar los ejes de análisis
(productos o clientes)...
WITH
SET [Lineas] AS {Filter([Customer].[Customer].
[Customer].ALLMEMBERS, LEFT([Customer].
[Customer].currentmember.name,1)=LEFT("A",1))}
MEMBER [Measures].[Columna] AS [Customer].[Customer
Geography].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Indicador] AS STRTOMEMBER("[Measures].
[Internet Order Count]")
SELECT
{[Measures].[Columna]
,[Measures].[Indicador]
ShareVideos
} ON COLUMNS ,
[Lineas] ON ROWS
FROM [Adventure Works] WHERE (STRTOMEMBER("[Date].[Calendar
Year].&[2008]") * STRTOSET("{[Product].[Product Categories].
[Category].&[4],[Product].[Product Categories].[Category].&[3]}"))
Los siguientes elementos servirán de parámetros para visualizar las ventas por cliente:
En SSRS, el símbolo arroba (@) identifica un parámetro. Basta con reemplazar las cadenas
por los parámetros correspondientes: @PrimeraLetra, @Medida, @Anyo y
@CategoriasProducto.
WITH
SET [Lineas] AS {Filter([Customer].[Customer].
[Customer].ALLMEMBERS, LEFT([Customer].
[Customer].currentmember.name,1)=LEFT(@PrimeraLetra,1))}
MEMBER [Measures].[Columna] AS [Customer].[Customer
Geography].CURRENTMEMBER.MEMBER_CAPTION
MEMBER [Measures].[Indicador] AS STRTOMEMBER(@Medida)
SELECT
{[Measures].[Columna]
,[Measures].[Indicador]
} ON COLUMNS ,
[Lineas] ON ROWS
FROM [Adventure Works] WHERE (STRTOMEMBER(@Anyo) *
STRTOSET(@CategoriasProducto))
La primera letra es un parámetro que tiene que introducir el usuario final: no es parte de la
jerarquía del cubo.
La medida forma parte de la dimensión de medidas, aunque SSRS no permite acceder a ella
desde la pantalla de configuración. Introduzca el valor por defecto.
ShareVideos
El año es un miembro de la jerarquía de años. Hemos usado la función STRTOMEMBER:
no se gestionan los Valores múltiples.
Los parámetros del informe se gestionan automáticamente en SSRS con el mismo nombre.
La página de Parámetros de las Propiedades del conjunto de datos realiza el enlace entre
ambos.
Los parámetros del informe están accesibles en el panel del estudio de desarrollo Datos de
informe ([Ctrl][Alt] D). Podemos, por ejemplo, ocultar el parámetro Medida.
Observe que se han creado dos conjuntos de datos ocultos por SSRS: Anyo y CategoriasProducto.
Son las extracciones MDX destinadas a alimentar las listas de selección de los parámetros del
informe.
En todo informe es obligatorio imprimir los parámetros de filtrado en el informe. Para ello,
basta con arrastrar el parámetro desde los Datos de informe hasta la superficie del informe.
SSRS crea una zona de texto con una expresión simple. Por ejemplo:
=Parameters!Anyo.Value
=String.Join(", ",Parameters!CategoriasProducto.Label)
ShareVideos
Una vez hayamos extraído los datos de la base de datos SSAS, queremos visualizar estos
datos en forma de tablas, gráficos, mapas... SSRS 2008 R2 proporciona varios elementos de
visualización de datos muy profesionales y varias funcionalidades para crear una aplicación
de Business Intelligence.
1. Cuadro de herramientas
a. Regiones de datos
Existen tres tipos de regiones de datos para trabajar con los conjuntos de datos. Se trata de
tres implementaciones de la Tabla matricial (Tablix). Las tres aprovechan la funcionalidad
para agrupar filas y columnas de Tablix.
Tabla
Objeto relacional por excelencia, la tabla contiene un número fijo de columnas por un
número variable de filas: los registros del conjunto de datos.
La tabla se enlaza directamente con el conjunto de datos arrastrando sus campos, desde el
panel Datos de informe, hacia las columnas de la tabla.
Defina en la parte inferior del estudio de desarrollo los Grupos de filas, para reagrupar,
ordenar, filtrar...
Un informe puede contener varias tablas ligadas a distintos conjuntos de datos. Una tabla
también puede incluirse en una lista.
Una celda de una tabla es una zona de texto, aunque también puede contener un elemento
de visualización de datos.
Matriz
Un informe puede contener varias matrices ligadas a distintos conjuntos de datos. También
es posible incluir una matriz en una lista.
ShareVideos
SSRS 2008 R2 introduce una propiedad nueva llamada DomainScope en la agrupación, muy útil
para visualizar regiones de datos superpuestos. Por ejemplo, una lista por país puede contener
una matriz con los años en las columnas. Sin esta propiedad, el número de columnas varía por
cada país. Para corregir este comportamiento seleccione el grupo de los años de la matriz, por
ejemplo en la zona de los Grupos de columnas y despliegue sus propiedades ([F4]). La propiedad
DomainScope aparece oculta en la categoría Grupo. Basta con introducir aquí el nombre del
elemento padre: la lista (List1, por ejemplo). De este modo todas las ocurrencias del grupo
tendrán el mismo número de columnas.
La celda de una matriz es una zona de texto, pero puede contener también un elemento de
visualización de datos.
Lista
La lista es un elemento cercano a una tabla. Incluye, por defecto, una columna en la que es
posible insertar varios elementos sin restricción de alineado. El número de filas varía según
los registros del conjunto de datos.
Por naturaleza, la lista permite componer todos aquellos informes que no sean tablas. La
lista está adaptada para mostrar, por familia de productos, una curva de evolución o incluso
un mapa geográfico de las ventas por departamento más incluso un indicador de tendencia
nacional.
A propósito de Tablix
Cada una de las regiones de datos que hemos visto es un Tablix. El Tablix es un
componente matricial de datos que permite al diseñador del informe preparar conjuntos de
líneas y columnas.
Haga clic en una región de datos del informe para que aparezca la definición del Tablix en
la parte inferior del estudio de desarrollo, en las zonas Grupos de columnas y Grupos de
filas.
Tablix permite gestionar, además de los grupos, las columnas o filas estáticas: los
etiquetados de las cabeceras o de los totales.
ShareVideos
Los elementos estáticos no se visualizan por defecto en los grupos. Es preciso activar el modo
Avanzado para verlas gracias al botón situado a la derecha de los grupos de columnas.
Igual que las regiones de datos, los elementos de visualización están ligados al conjunto de
datos a la hora de mostrar el contenido.
Todos los elementos gráficos, si se incluyen en las regiones de datos, ganarán en aspecto
profesional gracias a la nueva propiedad DomainScope, del mismo modo que para la matriz (véase
la sección Dar formato a un informe con BIDS - Cuadro de herramientas - Regiones de datos en
este capítulo).
Gráfico
El gráfico principal permite presentar múltiples tipos de gráfico: barras, gráficos de tarta,
nubes de puntos...
ShareVideos
Category group se traduce algunas veces como grupo de categorías, y otras como grupo de
abscisas.
Una vez ha seleccionado el gráfico que quiere diseñar, SSRS abre un panel de Datos del
gráfico en la parte derecha que permite definir sus grupos y sus valores.
Igual que para los componentes tablix, el elemento gráfico disponible en SSRS 2008 R2 es
extremadamente rico en funcionalidad. Todos los tipos de gráfico se implementan sin
mayor dificultad que encontrar la propiedad adecuada en la interfaz de diseño. Por ejemplo:
Medidor
Los medidores o indicadores de nivel imitan a los elementos del cuadro de mandos de un
coche (velocímetro, nivel de combustible). Cuando inserta un medidor, aparece un panel de
datos del medidor en el informe, y puede servir de base para la creación de un verdadero
cuadro de mando con ayuda de su menú contextual.
Barra de datos
El elemento Barra de datos es un elemento gráfico, concebido por defecto sin un grupo de
abscisas ni grupo de series, ni título, ni leyenda, que no muestra más que una barra en las
celdas de un Tablix, de forma similar a las barras de datos con formato condicional en
Excel.
Minigráfico
Indicador
ShareVideos
El elemento indicador es un medidor basado en una imagen dinámica que varía en función
del valor a representar, como un semáforo o una flecha indicando la tendencia.
Mapa
SSRS permite insertar en el informe mapas espaciales y geográficos. Para ello es necesario:
La representación gráfica se realiza coloreando las zonas y/o situando círculos coloreados
más o menos gruesos.
Permite adjuntar un campo o una etiqueta fuera de componentes como tablas o matrices,
por ejemplo en la cabecera del informe.
Línea
Rectángulo
Imagen
Permite situar una imagen en el informe. SSRS gestiona tres tipos de fuente distintas para
la imagen: Externa, Informe o Base de datos.
ShareVideos
Externa: para usar una imagen fija publicada en el servidor de informes o sobre otro
servidor Web.
La imagen de base de datos puede contener el nombre de un archivo. En este caso, puede cargar
los archivos en un servidor Web y usar el modo Externo con una expresión que apunte sobre los
archivos de imagen.
En las versiones anteriores de SSRS las imágenes se usaban bastante para crear indicadores
gráficos, como el semáforo rojo. No obstante la versión actual integra de forma nativa esta
funcionalidad gracias al elemento Indicador. Las imágenes se usan esencialmente para
aspectos decorativos y para los datos.
d. Subinforme
WITH
MEMBER [Measures].[PaisParametro] as [Geography].
[Country].CurrentMEMBER.uniqueName
e. Partes de informe
Los siguientes elementos pueden publicarse como una parte de informe: imagen, matriz,
tabla, lista, minigráfico, mapa, indicador, gráfico, barra de datos y rectángulo.
2. Expresiones
Las expresiones se usan para evaluar una propiedad en tiempo de ejecución. La mayoría de las
propiedades pueden asignarse mediante una expresión. Seleccione un objeto, muestre sus
propiedades ([F4]), abra el editor de expresiones para una propiedad gracias al botón
ShareVideos
El lenguaje de expresión es muy completo. Para las agregaciones de columnas de los
conjuntos de datos, la noción de scope (ámbito) es muy importante. El scope se define
mediante el nombre de un conjunto de datos, de un componente o de un grupo. La
agregación se calcula al nivel indicado por el scope.
Nuevas funciones, como por ejemplo Lookup, permiten hacer un join entre dos conjuntos de datos
dentro de la expresión.
Si bien el motor OLAP parece apropiado para realizar agregaciones, conviene usar
funciones de agregación del motor SSRS adaptadas a la problemática del reporting. La
consulta MDX permite obtener un conjunto de datos con cierto nivel de agregación.
Después es tarea del motor SSRS calcular los totales, subtotales, agregados acumulados...
SSRS 2008 R2 permite incrustar una función agregada en otra. Esto permite visualizar un valor
calculado a partir de otro que ya se muestre en la página. Por ejemplo, un subtotal que calcule la
media de las sumas que se muestran en la página a nivel de detalle (grupo « Detalles ») se podría
expresar así:
=Avg(Sum(Fields!Sales_Amount.Value,"Detalles"))
4. Acciones
El informe puede enriquecerse con acciones de tipo hiperenlace. Por ejemplo para abrir otro
informe más detallado. En este caso, se pasan los parámetros al informe seleccionado de
forma similar que con los subinformes (véase la sección Dar formato a un informe con
BIDS - Subinforme).
Las acciones pueden configurarse en una zona de texto, una imagen, un elemento de un
gráfico, de un indicador o de un mapa.
ShareVideos
5. Ejemplo
WITH
MEMBER [Measures].[Nombre de Producto] AS [Product].[Product
Categories].CurrentMember.Name, NON_EMPTY_BEHAVIOR=’
[Measures].[Order Quantity]’
MEMBER [Measures].[Subcategoria Producto] AS [Product].[Product
Categories].Properties( "Subcategory" ), NON_EMPTY_BEHAVIOR=’
[Measures].[Order Quantity]’
MEMBER [Measures].[Canal de ventas] AS [Sales Channel].[Sales
Channel].CurrentMember.Name, NON_EMPTY_BEHAVIOR=’[Measures].[Order
Quantity]’
SELECT
{[Measures].[Nombre de Producto],[Measures].[Subcategoria Producto],
[Measures].[Canal de ventas], [Measures].[Ratio to All Products],
[Measures].[Order Quantity] } ON COLUMNS,
NON EMPTY { [Sales Channel].[Sales Channel].[Sales Channel].MEMBERS *
[Product].[Product Categories].[Product].MEMBERS} DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT { (STRTOMEMBER(@Anyo),STRTOMEMBER(@Categoria) ,
[Geography].[Country].&[United States]) } ON COLUMNS FROM
[Adventure Works])
Los usuarios funcionales desean visualizar, según las cantidades de pedidos, y después
según las proporciones, el desglose por canal de ventas.
1. Agregue un origen de datos al informe. Esta fuente de datos será compartida para
todos los informes. Haga clic sobre los orígenes de datos compartidos del
explorador de soluciones para mostrar el menú contextual. Elija agregar un nuevo
origen de datos al proyecto.
2. Llámelo AdvSSAS_se, de tipo Microsoft SQL Server Analysis Services, con la
siguiente cadena de conexión:
ShareVideos
1. En el explorador de soluciones seleccione: Agregar - Nuevo elemento. Seleccione a
continuación un elemento de tipo Informe.
1. Acepte, haciendo clic en el botón OK para volver a las Propiedades del dataset.
2. Un clic sobre el botón Diseñador de consultas abrirá la ventana del mismo nombre.
3. En la barra de botones, cambie el Modo de diseño
ShareVideos
2. Despliegue los Datos de informe y, a continuación, despliegue el conjunto de datos
principal.
3. Deslice el campo Nombre_Producto hasta la celda llamada Filas de la matriz. Esta
acción realiza el enlace entre la matriz y el conjunto de datos, y crea el grupo de
líneas Nombre_Producto.
4. Deslice el campo Subcategoria hasta la región de Grupos de filas, justo debajo del
grupo de líneas Nombre_Producto. Esta acción tiene como consecuencia la creación
de una agrupación superior sobre las categorías.
5. Deslice en la celda Columnas el campo Canal_de_Ventas. Esta acción tiene como
consecuencia la creación del grupo de columnas Canal_de_Ventas.
6. Deslice en la celda Datos el campo Cantidad_de_la_Orden para mostrar la cantidad
por Canal de ventas.
La matriz utiliza una función de agregación para cada celda de datos que no se ha declarado a nivel
de detalle, la suma en este caso. Esta operación es transparente al desarrollador. Esto no quiere
decir que SSRS haya hecho la elección correcta. Usted debería siempre verificar que no se está
devolviendo un dato sin sentido, y que el informe sigue devolviendo, en efecto, el resultado
esperado.
ShareVideos
1. A continuación guarde el informe.
2. Despliegue y pruebe el informe en el servidor de informes.
Los "funcionales" piden ahora un segundo informe que presente las categorías, incluyendo
un enlace al informe anterior. Un clic en una categoría del nuevo informe muestra el
informe "Cantidad de pedidos por producto" detallando la categoría. Igual que el primer
informe aparece filtrado por año, el nuevo informe debe incluir esta información para
establecer el enlace. Piden asimismo un gráfico de tipo Minigráfico representando las
cantidades pedidas por año, y un indicador sobre la tasa de margen bruto.
Empecemos por la extracción de datos. La extracción debe traer los datos a nivel mensual
para componer el gráfico, y también los datos anuales para aquella información que no
pueda agregarse a nivel anual. Use la consulta siguiente:
WITH
MEMBER [Measures].[Categoria Nombre Unico] AS [Product].
[Category].CurrentMember.UniqueName
MEMBER [Measures].[Gross Profit Margin Year] AS ([Measures].[Gross
Profit Margin], ANCESTOR([Date].[Calendar].CurrentMember,[Date].
[Calendar].[Calendar Year]))
MEMBER [Measures].[Ratio to All Products Year] AS ([Measures].
[Ratio to All Products], ANCESTOR([Date].[Calendar].CurrentMember,
[Date].[Calendar].[Calendar Year]))
MEMBER [Measures].[Mes Numero] AS [Date].
[Calendar].Properties("KEY1")
SELECT
{[Measures].[Mes Numero], [Measures].[Categoria Nombre Unico] ,
[Measures].[Gross Profit Margin Year], [Measures].[Gross Profit],
[Measures].[Ratio to All Products Year], [Measures].[Order
Quantity] } ON COLUMNS,
NONEMPTYCROSSJOIN({ ([Product].[Product Categories].
[Category].ALLMEMBERS ) }
, {[Date].[Calendar].[Month].MEMBERS}) DIMENSION PROPERTIES
MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( { [Date].[Calendar Year].&[2008] } ) ON COLUMNS
FROM [Adventure Works])
El mes está constituido por una clave compuesta en la base SSAS: el año y el índice del mes. Es
posible recuperar este índice en MDX mediante la propiedad .Properties("KEY1"). KEY1 representa
el segundo componente de la clave compuesta, KEY0 la primera.
ShareVideos
Para obtener un porcentaje anual basta con crear una tupla MDX que indique que la medida debe
evaluarse en el total del año. El año puede evaluarse gracias a la función MDX ANCESTOR. En la
jerarquía, el año es el ancestro del mes.
El identificador único de la categoría es necesario para pasar esta información al informe enlazado.
1. En los Grupos de filas modifique las Propiedades del grupo de filas para añadir una
expresión de grupo. Reagrupe según el campo Categoria.
ShareVideos
1. Haga clic una vez en el Minigráfico insertado y, a continuación, haga un segundo
clic para abrir el panel Datos del gráfico.
2. Agregue el valor Cantidad_de_la_Orden.
3. Deslice el campo Ratio_to_All_Products_Year desde el cuadro de herramientas
hasta la tercera columna de la tabla. La expresión suma creada no se corresponde
con nuestra necesidad. Por ello, reemplácela por:
=First(Fields!Ratio_to_All_Products_Year.Value).
4. Agregue una cuarta columna a la derecha de la tabla: haga clic en la última columna
para desplegar el menú contextual y seleccione Insertar columna - derecha.
5. Deslice el campo Gross_Profit_Margin_Year desde el Cuadro de herramientas hasta
la última columna de la tabla. Reemplace la expresión por:
=First(Fields!Gross_Profit_Margin_Year.Value).
6. Agregue una quinta columna a la derecha de la tabla: haga clic sobre la última
columna para desplegar el menú contextual y seleccione Insertar columna - derecha.
7. Deslice el campo Gross_Profit_Margin_Year desde el Cuadro de herramientas hasta
la última columna de la tabla. Reemplace la expresión por:
=Fields!Gross_Profit_Margin_Year.Value*100. Como todos los valores son
idénticos para una categoría y un año, tomar el primero o cualquier otro no supone
diferencia alguna. Los indicadores SSRS no permiten la agregación First. El valor
se multiplica por 100 para obtener un valor entre 1 y 100.
1. Haga clic dos veces sobre el indicador que acaba de crear para abrir el panel de
Datos del medidor.
2. En las Propiedades de indicador modifique Valor y estados. Porcentaje significa que
el valor se compara con otros de la tabla. Este no es nuestro caso. El indicador que
deseamos visualizar se evalúa únicamente en función del valor del margen de la
categoría. En Unidad de medida de estados seleccione Numérico en vez de
Porcentaje. A continuación, defina los Estados de indicador según muestra la
pantalla siguiente:
1. Acepte.
ShareVideos
1. Haga clic en el campo Categoria de la primera columna. Menú contextual,
Propiedades de la Zona de texto, página Acción. Seleccione Ir al informe.
2. Indique el nombre del informe DetalleProductosUSA.
3. Agregue el parámetro: Anyo =Parameters!Anyo.Value.
4. Agregue el parámetro: Categoria =Fields!Categoria_Nombre_Unico.Value.
5. Acepte.
6. Guarde el informe.
7. Despliegue y pruebe el informe en el servidor de informes.
Un clic sobre la categoría abre el primer informe con ambos parámetros inicializados.
El uso de Report Builder 3.0 es muy parecido al del estudio de desarrollo con algunas
excepciones:
Report Builder no trabaja con un proyecto y una solución. Cada informe o conjunto
de datos compartido se edita de forma independiente.
Report Builder no permite crear un origen de datos compartido (a los orígenes de
datos se les llama conexiones). El origen de datos compartido, necesario en la etapa
de creación de una solución empresarial, se crea bien a través del estudio de
desarrollo o bien a través del gestor del informe.
Los elementos del Cuadro de herramientas del estudio se encuentran en el menú
Insertar en la cabecera de Report Builder.
Report Builder 3.0 puede trabajar en modo conectado al servidor de informes: el
hecho de guardar los cambios publica directamente el archivo, informe o conjunto
de datos en el servidor de informes. También es posible trabajar en modo
desconectado.
En modo conectado el Report Builder usa el servidor de informes para procesar y
renderizar el informe guardando los datos en la caché. El desarrollo gana así en
rapidez.
Report Builder es la única herramienta que usa las partes de informe publicadas en
el servidor de informes, gracias al icono del menú Insertar.
Report Builder es bastante agradable de usar.
Report Builder 3.0 puede abrirse directamente desde el servidor de informes mediante el
sistema ClickOnce: un botón que descarga y lanza la aplicación. En este caso Report
ShareVideos
Builder se abre e inicia en modo conectado. Este modo está principalmente destinado a
aquellos usuarios finales avanzados que trabajan directamente sobre los datos en
producción.
Report Builder puede reemplazar a BIDS como herramienta de desarrollo. No obstante será
preciso prever como mínimo un servidor de informes para acceder a los orígenes de datos
compartidos. Puede usar un gestor de orígenes de datos guardando en disco los informes y
conjuntos de datos. Si, por el contrario, escoge trabajar siempre en modo conectado al servidor de
informes, planifique una copia de seguridad frecuente de la base de datos ReportServer de
desarrollo.
Oficialmente todavía se distribuye con SQL Server 2008 R2. Teóricamente, para usar la
versión 1.0 hay que cambiar un parámetro en la configuración del site desde el
administrador de informes.
Report Builder 3.0 gestiona tanto los modelos de informe como los orígenes de datos igual
que BIDS. Por el contrario, un informe creado con la versión 1.0 y modificado con la
versión 3.0 no podrá abrirse más con la versión 1.0.
Despliegue
Orígenes de datos compartidos, conjuntos de datos compartidos, informes y partes de
informes pueden desplegarse en el servidor de informes.
ShareVideos
1. Despliegue asistido desde BIDS
Las siguientes propiedades no aplican más que al desarrollo de la solución desde el estudio:
Preste especial atención a la hora de asignar nombres únicos a sus conjuntos de datos en tiempo
de desarrollo.
Las partes de informe no se despliegan en el mismo instante que los demás componentes. Es
preciso desplegarlas desde la opción de menú Informe - Publicar las partes de informe.
Inicie el despliegue con la opción de menú Generar - Desplegar, o desde el menú contextual
en el Explorador de soluciones.
ShareVideos
añadir más. Marcar la casilla Desplegar permite definir si los componentes se despliegan en
el servidor seleccionado o si se ejecutarán en local.
ShareVideos
Impresión
En sus inicios los informes estaban destinados esencialmente a su impresión. Con la
proliferación de soportes digitales, los usuarios ya no imprimen sistemáticamente los
informes. SSRS ofrece varios tipos de presentación, PDF, Excel, Word..., que permiten
conservar el informe sin tener que imprimirlo, trabajar con él, e incluso publicarlo fuera del
servidor de informes.
1. Configurar página
Las opciones para configurar la página del informe están accesibles en el menú Informe -
Propiedades del informe del estudio de desarrollo.
Las opciones para configurar la página son las clásicas: Orientación, Tamaño del papel y
Márgenes.
2. Formatos de representación
PDF
Archivo TIFF
MHTML
Excel
Archivo XML con datos de informe
CSV (delimitado por comas)
Para no llevarse sorpresas, se aconseja encarecidamente probar cada uno de los formatos de
representación durante la etapa de tests unitarios del informe.
Existen dos instrucciones nuevas que permiten actuar según el formato de representación
escogido: Globals!RenderFormat.Name y Globals!RenderFormat.IsInteractive. Estas instrucciones
pueden usarse para ocultar ciertas zonas del informe que puedan crear efectos indeseados en la
representación en Excel por ejemplo.
ShareVideos
3. Impresión desde el puesto cliente
El gestor del informe permite a su vez realizar una impresión directamente a partir de la
barra de botones. La impresión se hace mediante un cliente ActiveX. El usuario debe
aceptar su instalación la primera vez, y tal vez modificar las opciones de seguridad del
navegador.
Administración
La administración del servidor de informes tiene como objetivo asegurar su
funcionamiento, gestionar los permisos de acceso de los usuarios finales y optimizar el
rendimiento. Este capítulo describe los aspectos principales a tener en cuenta para iniciarse
en SSRS.
1. Abra desde el menú Inicio: Inicio - Microsoft SQL Server 2008 R2 - Administrador
de configuración de Reporting Services.
2. Conéctese al servidor de informes.
3. El administrador está organizado en varias páginas. Cada página le permite
administrar un aspecto del despliegue del servidor SSRS. La primera le informa
acerca del Estado de Report Server.
4. En la página Cuenta de servicio, introduzca o modifique la cuenta de Windows del
usuario local, o de dominio, que ejecuta el servicio del servidor de informes.
5. La página Dirección URL del servicio Web permite definir una o varias URL para
el servidor de informes, y eventualmente habilitar la conexión segura SSL.
6. Base de datos es útil para crear o cambiar de base de datos. El servidor de informes
almacena toda la información en una base de datos llamada por defecto
ReportServer. Tras un incidente, es importante poder restablecer esta base de datos
y reinstalar un servidor de informes para usarla.
7. Igual que para el servicio Web, una página similar le permite definir la URL del
Administrador de informes.
8. El servidor tiene la posibilidad de entregar los informes a los usuarios suscritos por
mensajería SMTP, la página Configuración de correo electrónico le permite definir
la dirección del servidor SMTP que desea utilizar.
ShareVideos
9. Para todas las operaciones que consumen recursos externos al servidor sin pasar por
las bases de datos, por ejemplo para cargar una imagen en un informe, se aconseja
definir una cuenta de Windows de dominio distinta a la cuenta de servicio. Esta
cuenta, llamada Cuenta de ejecución, se debe definir en la página del mismo
nombre.
10. Claves de cifrado es una de las páginas más importantes. Entre toda la información
almacenada en la base de datos del servidor de informes, una parte es ciertamente
sensible y está encriptada por el motor. Las fuentes de datos, o las suscripciones de
usuarios, se encuentran entre esta información. En caso de ocurrir un incidente, o de
una migración, usted quiere evidentemente conservarla. Por ello le será útil realizar
una copia de seguridad de la clave utilizada en la instalación del servidor. La copia
de seguridad se hace en un archivo protegido por contraseña. A su vez, es
indispensable asegurarse de que las copias de seguridad de la base de datos se
realizan correctamente.
2. Seguridad
Por defecto, SSRS hace uso de la seguridad de Windows. SSRS usa dos tipos de roles para
definir los permisos de un usuario o de un grupo: los roles sobre los elementos y los roles
de sistema. Los primeros definen la seguridad de acceso a los elementos desplegados,
mientras que los segundos lo hacen sobre las funcionalidades del sistema.
Carpetas
Informes
Orígenes de datos compartidos
Conjuntos de datos
Modelos de informe
Partes de informe
Cualquier otro recurso desplegado en el servidor (recuerde que es posible descargar
un archivo de cualquier tipo desde el servidor de informes).
ShareVideos
Por defecto, se hereda la seguridad del elemento padre, tomando como punto de partida la
Carpeta raíz. Por defecto, todos los elementos de una carpeta heredan la seguridad de la
carpeta.
Un rol se define como un conjunto de tareas que abren o cierran los permisos de acceso a
las familias de elementos agrupados según el tipo: modelos de informe, informes... Las
tareas definidas son las siguientes:
ShareVideos
Tarea Elementos Autorización
Borrar una suscripción
Leer el contenido
Borrar el contenido de
actualización
Actualizar la estrategia
ShareVideos
Tarea Elementos Autorización
actualización
Actualizar la estrategia
Crear un recurso o una parte de
informe en la carpeta
Carpetas
Actualizar las propiedades
Administrar los recursos Recursos
Borrar el contenido de
Partes de informe actualización
Orígenes de datos
compartidos
Leer las estrategias de seguridad
Definir la seguridad para
Conjuntos de datos
elementos individuales Actualizar las estrategias de
compartidos
seguridad
Carpetas
Recursos
Leer el contenido
Mostrar los orígenes de Orígenes de datos
datos compartidos
Leer las propiedades
Leer las propiedades
ShareVideos
Tarea Elementos Autorización
Leer las propiedades
Modelos de
Mostrar los modelos Leer el contenido
informe
Leer los orígenes de datos
Informes
Leer el contenido
Mostrar los informes
Conjuntos de datos
Leer las propiedades
compartidos
Recursos Leer el contenido
Mostrar los recursos
Partes de informe Leer las propiedades
La gestión de los roles se hace con SSMS conectado al servidor de informes. Es posible
crear, modificar o suprimir roles. Con la instalación se incluyen varios roles predefinidos.
Por cada rol existente se genera una asociación con una o varias de las tareas arriba
descritas.
Para la carpeta raíz la página de Seguridad se accede mediante el botón Parámetros de la carpeta
en la página de la carpeta raíz.
Esta gestión de permisos no tiene efecto sobre los permisos de acceso a los datos que se han
definido en los orígenes de datos.
b. Roles de sistema
Del mismo modo, los roles de sistema se definen con SSMS asociando una o varias tareas
predefinidas.
Tarea Descripción
Mostrar las tareas Permite ver una tarea programada que está disponible
programadas compartidas para su uso general.
ShareVideos
Tarea Descripción
Mostrar las propiedades del Permite ver las propiedades que se aplican al servidor
servidor de informes de informes.
Ejecutar la definición del Iniciar la ejecución a partir de la definición del
informe informe sin publicarlo en Report Server.
Proporciona una aplicación que permite generar
Generar eventos eventos en el espacio de nombres del servidor de
informes.
Administrar la seguridad Permite ver y modificar los atributos de los roles a
del servidor de informes nivel de sistema.
Permite crear, modificar y suprimir tareas
Administrar las tareas
programadas compartidas que se usan para ejecutar o
programadas compartidas
actualizar los informes.
Administrar las Permite ver y modificar las propiedades que se
propiedades del servidor de aplican al servidor de informes y a los elementos
informes administrados en él.
Permite crear, ver y modificar las definiciones de
Administrar los roles
roles.
Administrar las tareas Permite ver y anular las tareas en curso de ejecución.
c. Usuarios externos
Presentación de SSIS
SSIS es un ETL (del inglés Extract, Transform & Load - Extraer, Transformar y Cargar):
está compuesto principalmente por un potente motor de procesamiento de datos. Este motor
permite leer múltiples orígenes de datos heterogéneos, efectuar transformaciones sobre los
datos y escribirlos en uno o varios destinos, incluso en modo diferido. Aunque esta
funcionalidad puede parecer interesante en todo el conjunto del SI (Sistema de
Información), el ETL está reconocido como una herramienta muy valiosa de Business
Intelligence destinada a la alimentación del Data Warehouse.
ShareVideos
SQL Server ya es en sí mismo un potente motor de datos. Microsoft complementa esta
potente solución con ETL SSIS, permitiéndole separar las aplicaciones OLTP de los
procesos de BI, acceder a orígenes de datos variados y presentar una paleta de
funcionalidades complementarias como transferencias FTP, realizar una copia de seguridad
de la base de datos SQL Server, o enviar un correo electrónico. Todas estas funcionalidades
complementarias, o parte de ellas, se pueden acceder a través de otros medios (scripts,
desarrollos .NET, Transact SQL), pero aquí se integran en un entorno de desarrollo
puramente gráfico, lo que supone al mismo tiempo una ventaja y un inconveniente. Una
ventaja porque los algoritmos se muestran de forma visual a los desarrolladores o incluso a
una persona no iniciada. Un inconveniente porque más allá de la representación gráfica
toda la configuración está oculta en las ventanas de propiedades.
Para grandes proyectos se recomienda recurrir a procesos ETL, aunque no es obligatorio. Si los
orígenes de datos son de tipo SQL Server o de tipo texto, y los motores de bases de datos OLTP no
están muy saturados, utilizar el motor SQL para cargar los datos en el Data Warehouse es una
solución viable y económica (véase el capítulo Sacar provecho al motor SQL).
SSIS se compone de un motor de flujo de datos, el núcleo del ETL, y un motor de flujo de
control. Más que una simple caja de herramientas, el flujo de control permite orquestarlas
enlazándolas mediante restricciones de precedencia que condicionen la ejecución de una
tarea respecto a la ejecución de alguna otra. En el flujo de control, el flujo de datos es una
simple tarea al mismo nivel que las demás. Por consiguiente diremos que el flujo de datos
es el núcleo del producto.
Ciertos desarrollos SSIS cargan los datos brutos en la base de datos y a continuación usan
únicamente consultas SQL para cargar el DW: jamás recurren al motor de flujo de datos. En este
caso, escoger SSIS puede verse como un error en la evaluación de productos. En efecto, ¿por qué
no usar simplemente un script Transact SQL? Esto evitaría al equipo de desarrollo adquirir
competencias SSIS.
1. Paquetes DTSX
El uso de un origen con formato XML, y el hecho de que este mismo origen se use para la
ejecución, le permite crear su propio generador de orígenes en función de un diccionario de
metadatos y comentar sus desarrollos mediante consultas XML. Como inconveniente
diremos que el lenguaje XML puede llevarnos a usar archivos de origen de datos de tamaño
considerable.
ShareVideos
Se aconseja por tanto limitar el ámbito de un paquete a la alimentación de una única tabla en el
Data Warehouse. Trabajar con un único paquete responsable del proceso de alimentación
completo de todo el DW se convierte rápidamente en un freno para mantener su nivel de calidad.
Haciéndolo al revés y desacoplando el proyecto en paquetes pequeños, uno por destino, le
permite trabajar en equipo, realizar una gestión óptima de los orígenes de datos y, sobretodo,
asegurar la contención del perímetro de los tests de regresión en caso de que se haya corregido un
error, como ocurre en todo lenguaje de programación. Esta buena práctica implica a día de hoy
una complejidad que no es despreciable, aunque el beneficio es superior.
2. El estudio de desarrollo
Para familiarizarse con el estudio de desarrollo propio de SSIS, es más sencillo abrir un
proyecto existente.
1. Abra BIDS desde el menú de Inicio: Inicio - Microsoft SQL Server 2008 R2 - SQL
Server Business Intelligence Development Studio.
2. En el menú Archivo - Abrir seleccione Proyecto/Solución.
3. Vaya a la carpeta de ejemplos \Samples\Integration Services\Package
Samples\LookupSample\LookupSample y seleccione el proyecto
LookupSample.dtproj.
4. En el menú Ver, seleccione Explorador de soluciones.
5. En el Explorador de soluciones, bajo la carpeta Packages SSIS, haga doble clic en el
paquete LookupSample.dtsx.
Si en la carpeta de la solución aparece un archivo del mismo nombre que la solución pero con
extensión .suo, permite abrir automáticamente uno o varios paquetes cuando se abra la solución.
El archivo .suo guarda la última configuración. Este archivo puede suprimirse para abrir
únicamente el proyecto.
ShareVideos
Tras abrir del paquete BIDS se muestra la pestaña de diseño del flujo de control.
Panel de diseño central. La interfaz del estudio permite abrir varios paquetes,
separados en pestañas bajo el menú. Cuando seleccionamos una de las pestañas
BIDS muestra un panel de diseño que está compuesto a su vez de cuatro pestañas:
o Flujo de control: el flujo de control constituye el punto de partida del
desarrollo y de la ejecución. Diseñar el flujo de control consiste en deslizar
tareas y contenedores desde el Cuadro de herramientas y enlazarlas por
restricciones de precedencia. Un paquete contiene un único flujo de control.
o Flujo de datos: cuando se agrega una tarea al flujo de control esta pestaña
permite editarla. Diseñar un flujo de datos consiste en deslizar orígenes y
destinos y enlazarlos por caminos de acceso al flujo de datos pasando por
transformaciones. Un paquete puede contener varios flujos de datos.
o Controladores de eventos: el estudio permite crear flujos de control llamados
controladores de eventos o flujos de trabajo (workflow) bien a nivel de
paquete o bien a nivel de una tarea o contenedor del flujo de control
principal. La ejecución de tal flujo se inicia mediante un evento como:
OnError, OnWarning, OnProgress...
ShareVideos
lectura, aunque no obstante permite modificar las propiedades de los
elementos e incluso borrarlos.
b. Proyecto SSIS
ShareVideos
de ocultar al diseñador aquellos elementos innecesarios y cargar una única vez la caché en
tiempo de desarrollo.
El uso de orígenes de datos no resulta interesante, pues tendrá que recurrir a la configuración para
administrar la información de conexión. En cuanto a las DSV, sus ventajas no son suficientes como
para justificar su uso.
c. Ejecución
La ejecución también puede iniciarse a través del menú Depurar - Iniciar depuración o mediante el
botón correspondiente en la barra de herramientas, y aunque el paquete ejecutado no siempre
esté activo esto se indica en las propiedades del proyecto. Para configurar la ejecución del
paquete activo abra el menú contextual del proyecto en el Explorador de soluciones, haga clic en
Propiedades, vaya a la página de depuración y elija la opción ExecutePackage en StartAction y
seleccione el <Paquete activo> en StartObjectID.
Gestión de conexiones
La alimentación del DW pasa por la lectura de distintos orígenes de datos. Estos datos
pueden transitar por una base de datos intermedia (staging area o área de ensayo) antes de
escribirse en el DW. El paquete puede buscar los datos en un sitio FTP, enviar un registro
de errores por correo electrónico, enviar un mensaje a una cola MSMQ (Microsoft Message
Queuing), iniciar el procesamiento de una dimensión de un cubo... Todas estas operaciones
requieren conexiones.
ShareVideos
Tipos de conexión disponibles
2. Tipos de conexión
Cada conexión tiene un tipo de conexión definido. A cada tipo de conexión le corresponde
un editor del administrador de conexiones que le permite crear la cadena de conexión o
ConnectionString de su conexión.
Sería posible escribir un libro entero para describir todas estas conexiones. En la captura de
pantalla anterior no aparecen todas. Para más información, diríjase a las direcciones:
http://msdn.microsoft.com/es-es/library/ms140203(SQL.105).aspx
http://msdn.microsoft.com/en-us/library/dd299429.aspx
http://ssis.wik.is/Data_Sources
Seleccione sus conexiones con precaución ayudándose de los enlaces anteriores, ganará un
tiempo precioso.
Las conexiones a motores de bases de datos más corrientes son las realizadas por los tipos
OLE DB, ADO.NET, ADO o ODBC. Cada tipo tiene sus propias particularidades. Para
realizar una alimentación masiva y con buen rendimiento, seleccione OLE DB. Para
llamadas unitarias con uso de variables como parámetros, seleccione ADO.NET.
Sería inteligente crear dos conexiones a un mismo origen de datos: la primera, de tipo OLE DB,
para lecturas y tareas de carga y la segunda, de tipo ADO.NET, para llamadas a procedimientos
almacenados y otros comandos que requieran el paso de parámetros.
ShareVideos
Tipo deParámetro de la Número de parámetros
Ejemplo SQL
conexión consulta SQL en la interfaz SSIS
El parámetro tiene el SELECT precio FROM
mismo nombre que el HechosPrecios WHERE
ADO.NET @<parámetro>
que se usa en la ClaveProducto =
consulta. @QueProducto
Cadena Param seguida
de un entero: Param1 SELECT precio FROM
ADO ? para el primero, HechosPrecios WHERE
Param2 para el ClaveProducto = ?
segundo...
Entero, 1 para el primer SELECT precio FROM
ODBC ? parámetro, 2 para el HechosPrecios WHERE
segundo... ClaveProducto = ?
4. Seguridad
Para conectarse a la base de datos SQL Server, es posible optar por una autenticación
Windows o SQL Server. La autenticación Windows de SQL Server es un caso particular
puesto que la conexión no contiene ni el nombre ni la contraseña. En otros tipos de base de
datos la conexión incluye un nombre de usuario y una contraseña. Esta información
confidencial puede poner en peligro su sistema si llega a manos incorrectas, por ello está
encriptada por defecto en el paquete SSIS. Esto puede suponerle una preocupación desde el
momento del desarrollo.
SSIS proporciona varios niveles de encriptación. ¿Basta con encriptar todo (All) el
paquete? Algunos de los metadatos que se guardan, como por ejemplo el esquema de la
base de datos, constituyen en sí mismos un problema de seguridad. ¿Basta con encriptar
solamente la información sensible (Sensitive) como el nombre y la contraseña de la
conexión? ¿Qué clave podemos usar para realizar el cifrado? ¿Una clave propia del usuario
(UserKey), calculada a partir de su identificador Windows, o una contraseña (Password)
que puede compartir un equipo?
ShareVideos
La configuración ideal consiste en no salvar los datos sensibles con el paquete (DontSaveSensitive)
e inicializar las cadenas de conexión ConnectionString por variables de tipo String. De hecho esta
información tendrá que ser parametrizable si queremos desplegar en producción usando una
configuración, un archivo XML por ejemplo. Esta configuración es la que se tiene que securizar, por
ejemplo con NTFS, para proteger el sistema.
1. Haga clic en el flujo de control sobre una zona vacía (sin tarea ni contenedor) para
seleccionar el nivel paquete.
2. En el menú SSIS seleccione Variables.
3. En el panel Variables haga clic en el botón Agregar variable
1. Haga clic sobre una conexión del administrador de conexiones y muestre sus
propiedades (menú contextual - Propiedades).
2. Seleccione el contenido de ConnectionString.
ShareVideos
El flujo de control está constituido por elementos del cuadro de herramientas, por tareas y
por contenedores, enlazados por restricciones de precedencia.
1. Restricciones de precedencia
Un doble clic sobre una restricción permite abrir el editor de restricciones de precedencia
para configurar las opciones: operación de evaluación y la operación lógica en caso de
restricciones múltiples.
ShareVideos
Es posible forzar el resultado de la ejecución de un elemento del flujo de control modificando su
propiedad ForceExecutionResult.
Puede modificar el orden de las herramientas con ayuda del ratón, y situar arriba del todo sus
herramientas preferidas.
Para construir un paquete ETL use los elementos del flujo de control.
La tarea más importante es la tarea de flujo de datos, que permite la creación de flujos de
datos. Su uso se explica en la siguiente sección.
Crear en una variable su propio código SQL le permite evitar algunas de las dificultades habituales
con el uso de parámetros.
ShareVideos
Tarea Ejecutar paquete: indispensable para construir varios paquetes más pequeños
en vez de un paquete enorme. Esta tarea permite a un paquete padre llamar a otros
paquetes hijos. El paquete hijo se parametriza en la conexión. El paso de parámetros
del padre al hijo se hace mediante la configuración del paquete hijo.
Si usa paquetes hijos la ConnectionString de la conexión hacia el paquete hijo contiene la ruta
completa del archivo. A menudo, este valor se verá modificado en los entornos de pruebas y de
producción. Por ello, haga configurable esta conexión.
1. Haga clic en el flujo de control sobre un lugar vacío (sin tarea ni contenedor) para
situarse a nivel de paquete.
2. En el menú SSIS seleccione la opción Variables.
3. En el panel Variables haga clic sobre el botón Agregar variable situado arriba a la
izquierda.
4. Introduzca el nombre de variable MiRuta, de tipo String.
5. Haga clic de nuevo en el botón Agregar variable situado arriba a la izquierda.
6. Introduzca el nombre de variable MiPaqueteHijo, de tipo String.
7. Haga clic en la conexión hacia el paquete hijo del administrador de conexiones y
muestre sus propiedades (menú contextual - propiedades).
8. Seleccione el contenido de ConnectionString.
9. Cópielo y péguelo en el valor de la variable MiRuta. Borre el valor del nombre del
archivo y guarde únicamente la ruta terminada por \.
10. Modifique a True la propiedad EvaluateAsExpression de la variable MiPaqueteHijo.
11. En la propiedad Expression de la variable MiPaqueteHijo, introduzca la fórmula:
@[User::MiRuta] + "hijo.dtsx" siendo hijo.dtsx el nombre del paquete hijo (la
palabra clave User puede variar en función de la versión de SSIS, se trata del
espacio de nombres de la variable).
12. En las propiedades de la conexión, el botón situado a la derecha del todo en
Expressions abre el editor de expresiones de la propiedad. Haga clic en él.
13. Introduzca la propiedad ConnectionString, y la expresión @[User::MiPaqueteHijo].
Tarea FTP: como su propio nombre indica, esta tarea tiene como finalidad realizar
intercambios de archivos con un servidor FTP. Usa un administrador de conexiones
FTP para almacenar la información de las conexiones. La sintaxis de la
ConnectionString es Servidor:Puerto.NombreUsuario.Contraseña (por ejemplo:
ftppersonal.free.fr:21.Nicolas.p4ssw0rd123)
ShareVideos
Es extrañamente complicado implementar la tarea FTP debido a limitaciones en la
gestión de la contraseña. Para un desarrollo robusto que deba ejecutarse en varios
entornos, la primera solución consiste en usar un script, en lugar de una tarea FTP,
con las funciones FTP del framework de .NET (por ejemplo: UploadFile). Una
segunda solución consiste en utilizar en un script el componente FTP de SSIS.
Ejemplo:
Ejemplo:
Por último, una cuarta solución consiste en crear una configuración ligada a las
propiedades de la conexión FTP que no use variables.
Tarea Script: todo lo que no pueda hacer con las demás tareas puede implementarse
en un script. Los scripts se escriben en Visual Basic o en C# y acceden al conjunto
de funcionalidades disponibles propias de estos lenguajes: transferencias FTP,
añadir una partición a un cubo SSAS, etc. Es posible informar variables a un script.
En el editor de la tarea script, defina las variables de sólo lectura en
ReadOnlyVariables y las variables de escritura en ReadWriteVariables. Edite el
script mediante el botón Editar script. Los comentarios que aparecen al inicio del
script indican la sintaxis para interactuar con SSIS: uso de variables, inicio de un
evento...
La tarea script no debe confundirse con su equivalente en el flujo de datos: el componente script.
Si su script se usa varias veces, es posible crear una tarea en el cuadro de herramientas a partir de
un desarrollo propio (véase: http://msdn.microsoft.com/es-es/library/ms135965.aspx y los
ejemplos: http://ssisctc.codeplex.com/)
Tarea Sistema de archivos: se usa para realizar operaciones sobre los archivos:
copiar, renombrar... Usa el administrador de conexiones de archivos.
ShareVideos
Esta tarea se usa a menudo con el contenedor de bucle Foreach para iterar sobre los archivos.
Incluso si hay sólo uno, este contenedor permite verificar su existencia.
El contenedor es un tipo de elemento del flujo de control en el que es posible integrar otros
elementos, tareas o contenedores.
Para agrupar las tareas gráficamente, por ejemplo para desplazarlas todas juntas, el editor de flujo
de control proporciona la opción agrupar disponible en el menú contextual.
Los contenedores ofrecen más que una simple agrupación, permiten gestionar las
transacciones, interrumpir el proceso tras un error de ejecución en un conjunto de tareas
lanzando una tarea de gestión de errores como puede ser el envío de un correo electrónico,
implementar bucles sobre los archivos que queremos cargar en la tabla...
Contenedor de secuencias: se usa para agrupar elementos cuya ejecución forme una
unidad. Permite realizar la gestión de transacciones.
Contenedor de bucles Foreach: permite realizar bucles sobre los elementos de una
colección. Los principales tipos de colecciones son:
o Enumerador de archivos para Foreach: colección de lista de archivos para
una carpeta especificada y una máscara de archivo (con la misma sintaxis
que la usada por el comando dir del sistema operativo).
o Enumerador de elementos para Foreach: colección introducida en tiempo de
desarrollo en el editor. Se usa por ejemplo si debe lanzar un procesamiento
particular sobre ciertas categorías de productos, donde estos últimos forman
la colección.
o Enumerador ADO para Foreach: colección formada por registros de un
dataset ADO o ADO.NET. El caso clásico consiste en cargar el resultado de
ShareVideos
una consulta en una variable de tipo Object, e iterar sobre las líneas del
resultado. Este componente permite mapear una variable por cada columna
del dataset.
o Enumerador Node list para Foreach: colección formada por un conjunto de
nodos resultado de una consulta XPATH sobre un documento XML.
Contenedor de bucles For: permite ejecutar un bucle donde la salida está
condicionada por una expresión lógica. Generalmente su implementación pasa por
el uso de una variable inicializada al principio del bucle (InitExpression) que
evoluciona en cada iteración (AssignExpression) hasta cumplir cierta condición
(EvalExpression) que provoca la salida del bucle. Para InitExpression y
AssignExpression, hay que usar el operador = para actualizar la variable. (Ejemplo
de AssignExpression: @varLoop = @varLoop + 1).
Ejemplo:
Uso de ADO ForEach para iterar sobre el resultado de una consulta SQL Server:
1. Seleccione con un clic la tarea SQL y tome la flecha verde con el ratón para
deslizarla hasta el contenedor de bucles. Acaba de crear una restricción de
precedencia.
ShareVideos
1. Abra el Editor de la tarea Ejecutar SQL. Seleccione la conexión OLE DB que ha
creado antes e introduzca la consulta el SQL Statement siguiente: SELECT name,
object_id FROM sys.tables.
Una tarea de flujo de datos debe contener al menos un origen. Generalmente contiene
también un destino y varias transformaciones, enlazadas por caminos de acceso al flujo de
datos que representan las líneas de datos de un componente a otro.
ShareVideos
Los caminos estándar están representados en color verde. Es posible gestionar los caminos
de errores, donde se redirigen los errores, para la mayoría de componentes. Por ejemplo, en
la lectura de un origen de datos con una columna de tipo numérico, todos los registros que
contengan caracteres alfanuméricos en esta columna pueden enviarse a un archivo de
registro de errores.
Por defecto un error deja como fracasado el conjunto de la tarea de datos. El editor del
componente permite modificar este comportamiento para tratar los errores en el flujo de
datos.
Este comportamiento por defecto está lejos de ser deseable en la mayoría de los casos de
alimentación de un DW. Su alimentación cotidiana, que importa millones de registros, no puede
teóricamente bloquearse a causa de un único error entre todos ellos.
Los componentes del cuadro de herramientas son los orígenes, los destinos y las
transformaciones.
Tras haber situado un origen de datos en el flujo de datos un doble clic permite abrir su
editor. El editor se compone de tres páginas:
Omitir error reemplaza el dato erróneo por el valor NULL en el caso de una
conversión, o simplemente trunca el dato en el caso de un truncado. Por ejemplo, si
un carácter alfabético se cuela en la recepción de valores enteros, el motor del flujo
reemplaza silenciosamente este código por un NULL.
ShareVideos
Redirigir fila permite hacer la gestión de errores por un camino distinto al del flujo
de datos, identificado en la salida del origen de datos por una flecha roja. Este flujo
recoge los problemas de conversión (Error) y de truncado.
Cuando enlace la flecha roja de la salida de errores a otro componente, el programa le propone la
misma ventana modal de configuración de la salida de error, pero fuera del editor del origen de
datos. La configuración de los errores se almacena a nivel de componente y no a nivel de camino
de acceso del flujo de datos.
El menú contextual del origen de datos permite acceder a un editor avanzado. Los datos
leídos y los datos de salida del origen se definen completamente en la pestaña Propiedades
de entrada y salida. Es posible indicar si estos datos ya están ordenados.
Es posible modificar un origen o un destino sin estar conectado al mismo, por ejemplo cuando no
existe o cuando se crea como parte de ejecución del flujo ETL. Cambie a False la propiedad
ValidateExternalMetadata del componente. La validación de los metadatos se hace ahora
únicamente en tiempo de ejecución.
Origen de OLE DB: úselo para todas aquellas bases de datos que dispongan de un
cliente OLE DB. El editor le permite leer una tabla, una vista, una consulta o
incluso un procedimiento almacenado. En todos los casos, la configuración puede
introducirse en tiempo de diseño en el editor, o puede estar contenido en una
variable.
Origen de ADO.NET: menos rico en funcionalidades que el origen de OLE DB, el
origen de ADO.NET muestra un rendimiento ligeramente superior. Úselo en casos
donde las exigencias de rendimiento sean críticas.
Origen de archivo plano: úselo para leer un archivo de texto plano, es decir con
separadores por columnas o con una longitud de línea fija. Cuando el archivo de
ShareVideos
texto tenga una estructura más compleja, este origen puede usarse para cargar las
líneas en una estructura temporal para después explotarlas.
Origen XML: para leer un archivo XML o una variable que contenga información
en formato XML. Se aconseja usar igualmente un archivo XSD de definición de
esquema para evitar sorpresas. Habida cuenta de la riqueza del lenguaje XML, es
posible que existan varias salidas desde este origen.
Hay tres drivers disponibles para descargar para la versión Enterprise de SSIS:
Oracle - Attunity, SAP BI y Teradata.
Los destinos constituyen igualmente el final de los caminos de acceso del flujo de datos.
Igual que los orígenes, poseen un editor y un editor avanzado. Los destinos menos
utilizados sólo tienen editor avanzado.
ShareVideos
Salida de error: el editor de salida de error permite gestionar los errores devueltos
por el destino, como una violación de integridad en la base de datos relacional.
Destino de OLE DB: para escribir en cualquier destino OLE DB. Para bases de
datos que no son SQL Server, este destino no permite igualar el rendimiento de la
utilidad bulk de la base de datos. En este caso, puede exportar los datos en un
archivo de texto plano y a continuación usar una carga de tipo bulk en el flujo de
control.
Destino de SQL Server: limitado a una base de datos SQL Server instalada en la
máquina que ejecuta el paquete SSIS, escribe directamente en el destino, omitiendo
así ciertas operaciones. Puede seleccionarse cuando el rendimiento sea un factor
crítico.
Destino de DataReader: permite escribir en memoria del ordenador. Este destino se
usa para comunicarse con aplicaciones de terceros como SSRS o una aplicación
desarrollada por su propia compañía. Por ejemplo, el paquete puede gestionar un
juego de datos en un DataReader y a continuación solicitar la creación de un
informe SSRS a partir de este DataReader. Otro ejemplo, un programa C# puede
ejecutar un paquete SSIS que carga en memoria un DataReader que el programa
leerá a continuación. (véase http://msdn.microsoft.com/es-
es/library/ms135917(v=SQL.105).aspx)
Procesamiento de la dimensión: sirve para escribir en una dimensión SSAS sin tener
que pasar por una tabla de dimensión.
Procesamiento de la partición: sirve para empujar los datos en un cubo SSAS sin
tener que pasar por una tabla de hechos. Úselo para reducir el tiempo de espera de
actualización del cubo, para acercarse al tiempo real.
Destino de archivo plano: para gestionar archivos con exportaciones con el fin de
comunicarse con otros servidores, herramientas o clientes en un formato universal.
Destino de archivo sin formato: este formato propio de SSIS se usa para alcanzar
mejores rendimientos a la hora de almacenar datos temporales necesarios para el
procesamiento del ETL (vea más arriba los orígenes de datos).
Destino de conjunto de registros (recordset): permite crear un objeto recordset en
una variable del tipo Objeto, explotable a continuación por ejemplo en el flujo de
control para realizar un bucle sobre sus registros.
ShareVideos
Cree su propio destino de datos integrado en el Cuadro de herramientas a partir de
un desarrollo .NET: (véase: http://msdn.microsoft.com/es-
es/library/ms135899(v=SQL.105).aspx y los ejemplos disponibles en:
http://ssisctc.codeplex.com/)
Las transformaciones permiten modificar los datos del flujo. Tienen una o varias entradas y
una o varias salidas. Incluyen una gestión de errores fina similar a la de los orígenes de
datos.
Una transformación síncrona se efectúa fila a fila: se procesa una fila cada vez, y no es
necesario leer ninguna otra fila del flujo para devolver en la salida la línea procesada. De
este modo, entra una fila en la transformación y sale simultáneamente. Como toda fila de
entrada se corresponde con una fila de salida, SSIS usa el mismo buffer para la entrada y
para la salida. Ejemplo: la conversión en mayúsculas del nombre de la familia de productos.
Una transformación síncrona como la multidifusión puede tener varias salidas.
Una transformación bloqueante necesita leer todas las filas de un buffer antes de poder
crear la salida. Por ejemplo realizar una ordenación es una transformación bloqueante: es
necesario leer todas las filas para poder crear la salida.
Al reutilizar el mismo buffer las transformaciones síncronas son las que presentan mejor
rendimiento y las menos exigentes en términos de consumo de memoria.
ShareVideos
A la inversa, el uso de transformaciones bloqueantes debe realizarse con el mayor cuidado
y probarse bien ajustándose a las condiciones próximas a las condiciones de producción
especialmente para volúmenes de datos grandes.
En este sentido, sería lógico exportar las operaciones asíncronas sobre el motor de base de datos
donde el rendimiento a este respecto es mucho mejor.
La nueva opción Redirigir filas hacia la salida sin correspondencia permite gestionar
adecuadamente la búsqueda.
Por defecto, la transformación carga todas las filas de la tabla de búsqueda en una caché en
memoria. Existe una opción en el administrador de conexiones de caché que permite
unificar la misma caché para varias búsquedas.
ShareVideos
Muy a menudo la tabla de búsqueda contiene muchas columnas inútiles para su búsqueda. Para
minimizar el uso de memoria necesaria, estas columnas no hay que cargarlas. Para ello use una
vista o una consulta.
El comando de OLE DB fila a fila no presenta muy buen rendimiento. SQL jamás ha destacado por
su rendimiento en operaciones unitarias. Para actualizar volúmenes de datos importantes, que
requieran de un rendimiento óptimo, use una tabla temporal y un comando SQL desde el flujo de
control.
ShareVideos
Transformación Exportar columna (Export column): se utiliza, por ejemplo, para
guardar en archivos las imágenes contenidas en el flujo de entrada.
Transformación Importar columna (Import column): al revés que con la
exportación, la importación permite añadir al flujo información almacenada en
archivos.
Transformación de caché (cache): para gestionar las cachés. La caché es una
estructura en memoria o en disco destinada a mejorar el rendimiento de la
Transformación de búsqueda. Esta Transformación permite crear y escribir en una
caché.
Transformación de Auditar (audit): añade al flujo columnas de información tales
como la hora de ejecución, el nombre del servidor, el identificador de ejecución...
Transformación de Muestreo de porcentaje (Percent sampling): sirve para guardar
solamente una muestra aleatoria de filas, normalmente representativa de la entrada.
Esta Transformación no la usa directamente el flujo ETL, pero puede usarse en
tiempo de desarrollo para crear juegos de datos menos voluminosos.
Limite el uso de la unión al caso en que los datos provengan de orígenes de datos distintos. Si los
datos vienen de la misma base de datos, utilice mejor una consulta ejecutada por el motor de base
de datos.
ShareVideos
Transformación de Ordenar (sort): se utiliza para ordenar las filas del flujo. Permite
de forma opcional suprimir los valores duplicados.
Transformación de Agregado (aggregate): sirve para crear agregados de modo
similar a las cláusulas GROUP BY, COUNT, SUM... La Transformación puede
generar varias salidas con varios agregados.
Transformación Muestreo de fila (Row sampling): es igual que la Transformación
de Muestreo de porcentaje pero permite especificar el número exacto de filas de
salida.
Para alimentar una dimensión, hay que extraer los datos del origen, limpiarlos, procesarlos,
buscar las claves de sustitución a partir de las claves del origen, y a continuación alimentar
la tabla de dimensiones: insertar los nuevos registros, actualizar los existentes y
eventualmente gestionar los atributos de tipo 2.
USE [AdventureWorksDW2008R2]
GO
CREATE SCHEMA [ei] AUTHORIZATION [dbo]
GO
/****** Object: Table [ei].[DimEmployee] Script Date:
05/30/2010 12:13:18 ******/
CREATE TABLE [ei].[DimEmployee](
[EmployeeKey] [int] IDENTITY(1,1) NOT NULL,
[EmployeeNationalIDAlternateKey] [nvarchar](15) NULL,
[SalesTerritoryKey] [int] NULL,
[FirstName] [nvarchar](50) NOT NULL,
ShareVideos
[LastName] [nvarchar](50) NOT NULL,
[BirthDate] [date] NULL,
[CurrentFlag] [bit] NOT NULL,
[StartDate] [date] NULL,
[EndDate] [date] NULL,
CONSTRAINT [PK_MyDimEmployee_EmployeeKey] PRIMARY KEY CLUSTERED
( [EmployeeKey] ASC)) ON [PRIMARY]
GO
Columna Columna
Tabla origen Descripción/Transformación
Dimensión origen
Clave de sustitución generada
EmployeeKey
por el motor de base de datos.
Cadena de caracteres que
contiene el DNI. Puede contener
espacios a la derecha o a la
Employee
izquierda que es preciso limpiar.
[HumanResources]. National
National
Esta columna es la clave
[Employee] IDNumber
funcional de la dimensión de
IDAlternateKey
empleados. Se usa para buscar el
registro en el proceso de
alimentación.
El campo TerritoryID es la clave
funcional usada para buscar la
clave de sustitución de la
dimensión DimSalesTerritory.
ShareVideos
Columna Columna
Tabla origen Descripción/Transformación
Dimensión origen
territorio.
SELECT [E].[NationalIDNumber]
,[E].[BirthDate]
,[E].[CurrentFlag]
ShareVideos
,[C].[FirstName]
,[C].[LastName]
,COALESCE([SP].[TerritoryID],0) AS
[SalesTerritoryAlternateKey]
FROM [HumanResources].[Employee] [E]
INNER JOIN [Person].[Contact] [C] ON ([E].[ContactID] = [C].
[ContactID])
LEFT OUTER JOIN [Sales].[SalesPerson] [SP] ON ([SP].
[SalesPersonID] = [E].[EmployeeID])
Para extraer datos del origen de datos, si todas las tablas pertenecen a la misma base de datos, no
diseñe un flujo de datos en SSIS con transformaciones de unión, use en su lugar un origen con una
consulta que use de forma óptima los índices del motor SQL.
Observe que la dimensión DimSalesTerritory contiene un miembro especial para gestionar el caso
de los empelados que no están ligados a un territorio, la consulta efectúa una unión de tipo LEFT
JOIN y a continuación un COALESCE, reemplazando el NULL por la clave funcional de este miembro
especial.
Creación de variables
1. Haga clic en el flujo de control sobre un área vacía (sin tarea ni contenedor) para
seccionar el nuevo paquete.
2. En el menú SSIS, seleccione Variables.
3. En el panel de Variables, agregue las variables siguientes: nLeidos, nErrores,
nInsertados y nMax de tipo Int32.
1. En el Cuadro de herramientas, haga doble clic en la Tarea Flujo de datos para crear
tal flujo.
2. Haga clic en la pestaña del flujo de datos para abrir el nuevo flujo de datos.
ShareVideos
1. Agregue una transformación Unión de todo. Renómbrela por Unir error.
2. Agregue una transformación Recuento de filas. Renómbrela por Número de errores.
Abra su editor y asigne la variable nErrores a la propiedad VariableName.
3. Enlace Unir error con Número de errores.
1. Modifique la Salida de error para reencaminar las filas en todos los casos.
2. Valide la creación del origen.
3. Enlace la flecha roja de la salida de este origen a Unir Error.
ShareVideos
1. Enlace la fecha roja de la columna derivada con Unir error seleccionando redirigir
todos los errores.
Conserve el valor por defecto Error de componente: en efecto el caso de filas sin
correspondencia ya se trata en la consulta SQL de extracción.
Presentación
La implementación del conjunto de tecnologías SQL Server en una solución de BI lleva a
menudo a una arquitectura compleja y costosa de desarrollar y mantener. Este capítulo tiene
como objetivo destacar ciertas capacidades del motor relacional SQL Server que pueden
considerarse frente a otras tecnologías a la hora de diseñar la arquitectura BI.
En lo que respecta al Reporting, cabe destacar que Transact SQL está en posición de
realizar consultas muy próximas a las de MDX.
Alimentación ETL
En competencia con ETL SSIS, Transact SQL es suficiente para la alimentación de las
dimensiones y los hechos. Además, el motor SQL permite detectar modificaciones de la
base de datos origen SQL Server sin provocar ninguna modificación en su estructura.
ShareVideos
La primera etapa efectúa controles sobre los tipos de datos y controles de campos
obligatorios, de conversión y de limpieza de datos para garantizar que no habrá problemas
en la siguiente etapa.
La segunda etapa realiza la búsqueda de las claves técnicas en el DW, alimenta las
dimensiones y, a continuación, las tablas de hechos. En el capítulo anterior hemos abordado
el diseño y la construcción de esta etapa con SSIS (véase el capítulo Alimentar el Data
Mart, secciones Flujo de datos (Data Flow) - Alimentación de una dimensión y
Alimentación de un grupo de medidas). A continuación, abordamos las mismas etapas pero
únicamente usando tecnologías SQL partiendo de la hipótesis de que las bases de datos
Staging Area y DW están en el mismo servidor.
b. Dimensión
¿Por qué gestionar los atributos de tipo 2 antes que los de tipo 1? En ciertos casos la modificación
de tipo 1 sólo debe implicar al registro activo, por lo que la desactivación del registro antiguo debe
realizarse con antelación.
ShareVideos
es de nuevo alimentar la dimensión de empleados [ei].[DimEmployee] (véase el capítulo
Alimentar el Data Mart).
Como hemos visto en el capítulo anterior, la consulta de extracción de los datos del sistema
origen es la siguiente:
SELECT [E].[NationalIDNumber]
,[E].[BirthDate]
,[E].[CurrentFlag]
,[C].[FirstName]
,[C].[LastName]
,COALESCE([SP].[TerritoryID],0) AS
[SalesTerritoryAlternateKey]
FROM [AdventureWorks].[HumanResources].[Employee] [E]
INNER JOIN [AdventureWorks].[Person].[Contact] [C] ON ([E].
[ContactID] = [C].[ContactID])
LEFT OUTER JOIN [AdventureWorks].[Sales].[SalesPerson] [SP] ON
([SP].[SalesPersonID] = [E].[EmployeeID])
Búsqueda de las claves técnicas
La búsqueda de las claves técnicas consiste en leer otras dimensiones del DW para sustituir
las claves del sistema de origen por las claves del DW. Esta etapa existe únicamente en el
caso de un esquema en copo de nieve. Aquí, si los empleados poseen un territorio
comercial, este territorio es objeto de una tabla dedicada de la que es preciso recuperar la
clave primaria.
Podemos construir otra consulta a partir de la consulta anterior para hacer el enlace con la
tabla de territorios comerciales. La unión es una unión externa de forma que no se pierda el
empleado en esta operación. La posibilidad de que no se encuentre ningún territorio debería
gestionarse, bien aquí, o bien más adelante en la cadena decisional, por ejemplo en el cubo.
SELECT [S].*,[DimTer].[SalesTerritoryKey]
INTO #OrigenConClavesTecnicas
FROM
(SELECT [E].[NationalIDNumber]
,[E].[BirthDate]
,[E].[CurrentFlag]
,[C].[FirstName]
,[C].[LastName]
,COALESCE([SP].[TerritoryID],0) AS
[SalesTerritoryAlternateKey]
ShareVideos
FROM [AdventureWorks].[HumanResources].[Employee] [E]
INNER JOIN [AdventureWorks].[Person].[Contact] [C] ON ([E].
[ContactID] = [C].[ContactID])
LEFT OUTER JOIN [AdventureWorks].[Sales].[SalesPerson] [SP]
ON ([SP].[SalesPersonID] = [E].[EmployeeID])
) AS [S]
LEFT OUTER JOIN [AdventureWorksDW2008R2].[dbo].
[DimSalesTerritory] AS [DimTer] ON ([S].
[SalesTerritoryAlternateKey] = [DimTer].
[SalesTerritoryAlternateKey])
Los datos se almacenan en una tabla temporal, #OrigenConClavesTecnicas, puesto que van a ser
utilizados en las dos etapas siguientes. Esto nos permite evitar introducir y ejecutar dos veces el
mismo código SQL.
Inserciones y Tipo 2
Transact SQL contiene, tras la versión SQL Server 2008, instrucciones del tipo
MERGE. MERGE permite fusionar los datos de un origen y un destino provocando,
en función de cierta condición lógica de búsqueda, una operación A o una operación
B. Desgraciadamente, para escribir nuestro algoritmo, tenemos que lanzar dos
operaciones en el caso en que sí se encuentre el registro...
MERGE por tanto no basta, aunque permite realizar ya buena parte del procesamiento, a
saber:
ShareVideos
Búsqueda del registro activo de la dimensión correspondiente al registro de origen:
o Si no se encuentra: creación del nuevo registro activo.
o En el caso contrario, y si es una modificación de Tipo 2: desactivación del
registro.
Se realiza una verificación para detectar la modificación de al menos uno de los atributos de tipo
2. En nuestro caso no hay más que uno: SalesTerritoryKey. Si hubiera más, sería preciso incluir las
condiciones correspondientes usando la cláusula OR.
Para completar este comando, es necesario recuperar el conjunto de filas que han
provocado la desactivación para insertarlas como activas en la tabla de dimensión. Esta
operación es posible gracias a la cláusula Transact SQL OUTPUT.
OUTPUT devuelve las filas del origen así como la operación que ha provocado en el
destino. Filtrando aquellas que han provocado una actualización (UPDATE) el motor SQL
devuelve un conjunto de filas que basta insertar en la dimensión como los nuevos registros
activos.
ShareVideos
WHEN MATCHED AND ([D].[SalesTerritoryKey] <> [SS].
[SalesTerritoryKey])
THEN UPDATE SET [D].[CurrentFlag] = 0, [D].[EndDate] =
DATEADD(d,-1,GETDATE())
OUTPUT $Action [TypeAction],[SS].[NationalIDNumber], [SS].
[SalesTerritoryKey], [SS].[FirstName], [SS].[LastName], [SS].
[BirthDate]
) AS [MergeScd]
WHERE [MergeScd].[TypeAction] = ’UPDATE’
Este comando SQL bastaría si todos los atributos de la dimensión fueran de tipo 2. A la inversa, si
todos fueran de tipo 1, sería inútil ejecutarlo.
Actualización de Tipo 1
La gestión de atributos de Tipo 1 es más sencilla. O bien el registro ya existe y en ese caso
debe actualizarse si se ha modificado alguno de sus atributos, o bien no existe y es preciso
crearlo.
Este comando actualiza el conjunto de filas devueltas. La opción entre comentario permite
actualizar solamente la fila activa.
ShareVideos
Estos tres comandos SQL ejecutados juntos y en orden garantizan la correcta alimentación
de la dimensión.
c. Hechos
Una modificación o un borrado tiene un impacto enorme sobre los cálculos de importes. Es
preciso rehacer completamente todos los cálculos para aplicar este impacto, mientras que una
actualización aditiva necesita muy poco tiempo para aplicar su impacto. Una tabla de hechos
puede contener varios cientos de miles de hechos.
Como hemos visto en el capítulo anterior la consulta de extracción de datos del sistema de
origen es:
SELECT RTRIM(LTRIM([E].[NationalIDNumber])) AS
[NationalIDNumber]
,[SPQH].[QuotaDate]
,MAX([SPQH].[SalesQuota]) AS [SalesQuota]
FROM [AdventureWorks].[Sales].[SalesPersonQuotaHistory] [SPQH]
LEFT OUTER JOIN [AdventureWorks].[HumanResources].[Employee] [E]
ON ([SPQH].[SalesPersonID] = [E].[EmployeeID])
GROUP BY [E].[NationalIDNumber], [SPQH].[QuotaDate]
Búsqueda de las claves técnicas
Los datos de calendario tienen claves técnicas específicas que se calculan. Por tanto no hay
una clave que buscar en la dimensión de empleados. La consulta correspondiente es la
siguiente, donde se ha marcado en negrita el código SQL agregado respecto a la anterior:
SELECT
[DimEmp].[EmployeeKey]
,YEAR([S].[QuotaDate]) *10000 + MONTH([S].[QuotaDate]) * 100 +
DAY([S].[QuotaDate]) AS [DateKey]
,YEAR([S].[QuotaDate]) AS [CalendarYear]
,1 + (MONTH([S].[QuotaDate]) - 1) / 3 AS [CalendarQuarter]
,[S].[SalesQuota]
FROM (
ShareVideos
SELECT RTRIM(LTRIM([E].[NationalIDNumber])) AS [NationalIDNumber]
,[SPQH].[QuotaDate]
,MAX([SPQH].[SalesQuota]) AS [SalesQuota]
FROM [AdventureWorks].[Sales].[SalesPersonQuotaHistory] [SPQH]
LEFT OUTER JOIN [AdventureWorks].[HumanResources].[Employee] [E]
ON ([SPQH].[SalesPersonID] = [E].[EmployeeID])
GROUP BY [E].[NationalIDNumber], [SPQH].[QuotaDate]
) AS [S]
LEFT OUTER JOIN [AdventureWorksDW2008R2].[ei].[DimEmployee] AS
[DimEmp] ON ([S].[NationalIDNumber] = [DimEmp].
[EmployeeNationalIDAlternateKey])
La unión es una unión externa de forma que no se pierda ningún registro en esta operación.
La posibilidad de que no se encuentre algún empleado debería gestionarse bien aquí, o bien
más adelante en la cadena decisional, por ejemplo en el cubo, gracias al Miembro
desconocido.
Inserción
En los casos reales el número de filas puede ser demasiado grande como para lanzar un único
comando INSERT. Jamás hay que perder de vista que la base de datos de ejemplo Adventure
Works posee un volumen muy pequeño. Permite probar las funcionalidades de la suite SQL, pero
no su comportamiento en un entorno DW estándar.
ShareVideos
El conjunto de comandos para gestionar la alimentación ya están listos. Quedaría
prepararlos para desplegarlos en los entornos de pruebas y producción.
d. Despliegue
SQL Server ofrece una herramienta para ejecutar scripts Transact SQL con parámetros: el
programa SQLCMD, que reemplaza a ISQL.
Permite parametrizar los elementos del script SQL, como por ejemplo el nombre de las
bases de datos o la configuración de la conexión, y automatizar la ejecución de distintos
scripts de alimentación: dimensiones y a continuación hechos.
Es posible trabajar en SSMS con una consulta SQL en modo SQLCMD. Para ello puede añadir un
botón en la barra de herramientas del procesador de consultas SQL. Despliegue el menú
contextual haciendo clic derecho con el ratón en la barra de botones y a continuación elija la
opción personalizar - Consulta, y deslice Modo SQLCMD.
Para habilitar el despliegue de estos scripts, es necesario parametrizar los nombres de las
bases de datos. En nuestro ejemplo, la conexión al servidor SQL, con los permisos
necesarios para la ejecución de los comandos escritos anteriormente, se realiza en tiempo
de llamada a SQLCMD, en modo autenticación Windows.
ETL_DimEmployee.sql
--comandos SQLCMD
print ’Origen : $(DBSOURCE)’
print ’Data Warehouse : $(DBDW)’
--variables contador
ShareVideos
DECLARE
@nLineasOrigen AS BIGINT
,@nLineasTipo2 AS BIGINT
,@nLineasTipo1 AS BIGINT
ShareVideos
--usar el mismo modelo de consulta si se borrara la consulta
--anterior (si no hubiera atributos de tipo 2)
MERGE INTO $(DBDW).[ei].[DimEmployee] AS [D]
USING #OrigenConClavesTecnicas AS [SS]
ON ([SS].[NationalIDNumber] = [D].
[EmployeeNationalIDAlternateKey]) --option (AND [D].[CurrentFlag] = 1)
WHEN NOT MATCHED
THEN INSERT VALUES ([SS].[NationalIDNumber], [SS].
[SalesTerritoryKey], [SS].[FirstName], [SS].[LastName], [SS].
[BirthDate], 0, NULL, NULL)
WHEN MATCHED AND ([D].[FirstName] <> [SS].[FirstName] OR [D].
[LastName] <> [SS].[LastName] OR [D].[BirthDate] <> [SS].
[BirthDate])
THEN UPDATE SET [D].[FirstName] = [SS].[FirstName]
,[D].[LastName] = [SS].[LastName]
,[D].[BirthDate] = [SS].[BirthDate];
--Total Tipo 1
SET @nLineasTipo1 = ROWCOUNT_BIG()
Las instrucciones SQL usadas no permiten obtener los mismos indicadores que en la modelización
SSIS.
ETL_FactSalesQuota.sql
--comandos SQLCMD
print ’Origen : $(DBSOURCE)’
print ’Data Warehouse : $(DBDW)’
--variables contador
DECLARE @nLineasInsertadas AS BIGINT
ShareVideos
,YEAR([S].[QuotaDate]) AS [CalendarYear]
, 1 + (MONTH([S].[QuotaDate]) - 1) / 3 AS [CalendarQuarter]
,[S].[SalesQuota]
FROM (
SELECT RTRIM(LTRIM([E].[NationalIDNumber])) AS [NationalIDNumber]
,[SPQH].[QuotaDate]
,MAX([SPQH].[SalesQuota]) AS [SalesQuota]
FROM $(DBSOURCE).[Sales].[SalesPersonQuotaHistory] [SPQH]
LEFT OUTER JOIN $(DBSOURCE).[HumanResources].[Employee] [E] ON
([SPQH].SalesPersonID] = [E].[EmployeeID])
GROUP BY [E].[NationalIDNumber], [SPQH].[QuotaDate]
) AS [S]
LEFT OUTER JOIN $(DBDW).[ei].[DimEmployee] AS [DimEmp] ON ([S].
[NationalIDNumber] = [DimEmp].[EmployeeNationalIDAlternateKey])
--Total Tipo 1
SET @nLineasInsertadas = ROWCOUNT_BIG()
--Variables SQLCMD
:SETVAR DBSOURCE [AdventureWorks]
:SETVAR DBDW [AdventureWorksDW2008R2]
El comando :r permite lanzar otro script SQLCMD. El script maestro es el más sencillo y
simplemente llama a los tres anteriores.
--Carga de variables
:r ETL_Config.sql
print ’Origen : $(DBSOURCE)’
print ’Data Warehouse : $(DBDW)’
--Carga de dimensiones
:r ETL_DimEmployee.sql
--Carga de hechos
:r ETL_FactSalesQuota.sql
Por último, el comando SQLCMD simplemente inicia la ejecución del script maestro:
sqlcmd -i"ETL_Maestro.sql"
ShareVideos
e. Resumen
Hemos visto cómo es posible automatizar y desplegar programas en producción. Hay que
destacar que el tiempo de procesamiento es mucho mejor que el que se obtiene con SSIS:
del orden de 15 a 20 veces más rápido partiendo de la hipótesis de que el origen y el destino
están en el mismo servidor...
Se plantea por tanto la duda entre usar Transact SQL o SSIS para alimentar el DW...
SSIS permite realizar una gestión de errores, por ejemplo de conversión. Con SQL,
un error en una fila bloquea toda la instrucción y no permite redirigirla a una tabla
de errores.
SSIS permite gestionar más finamente la auditoría de operaciones, como contadores
del número de filas insertadas, leídas, en error, actualizadas.
SSIS puede conectarse a numerosos orígenes. SQL permite conectarse a archivos de
texto y orígenes OLE DB con OPENROWSET (véase
http://msdn.microsoft.com/en-us/library/ms190312.aspx), pero esto no siempre es
suficiente.
La interfaz gráfica de SSIS supone un valor añadido: la imagen del flujo de datos
documenta en cierto modo el procesamiento.
SSIS proporciona el Registro (Logging) para crear un registro del procesamiento.
SSIS puede implementarse sin SQL Server, por ejemplo en un entorno ORACLE.
Cada proyecto tiene sus propias restricciones y su contexto, no existe por tanto una regla
universal.
ShareVideos
2. Detección de las modificaciones de la base de datos de origen
En BI los volúmenes de datos que se manipulan son considerables. Un método para superar
este inconveniente consiste en no leer en la base de datos de origen más que el diferencial
de las modificaciones que han aparecido desde la última lectura. Desgraciadamente, en
ciertos casos esta información está ausente en el origen de datos si no se expresó la
necesidad durante su diseño y creación. Si, por suerte, la base de datos de la aplicación está
alojada en una edición Enterprise de SQL Server 2008 o superior puede activarse la
funcionalidad CDC (Change Data Capture).
Para ello el administrador crea la petición de seguimiento de una o varias tablas. Un agente
se encarga de sincronizar el registro de transacciones y almacena la información útil en la
base de datos.
La activación de CDC para una tabla provoca la creación de numerosos objetos en la base de datos.
Estos objetos se usan bien por el proceso asíncrono del registro de CDC, o bien para consultar al
CDC.
Los datos almacenados pueden volverse muy voluminosos. Su supresión también está
automatizada por un agente. Por defecto, la información se conserva 3 días, ¡aunque es
posible aumentar este rango hasta varios años! El procedimiento almacenado
sys.sp_cdc_change_job permite configurar este parámetro.
Por defecto, CDC anota todos los cambios. Existe una opción que permite obtener los
cambios netos: si han tenido lugar varios cambios sobre el mismo registro y únicamente
nos interesa el último, entonces CDC sólo reportará este último.
Esta opción no modifica el comportamiento de CDC sino que añade una funcionalidad más.
ShareVideos
b. Ejemplo de CDC
El ejemplo se realiza sobre una tabla reducida en la base de datos AdventureWorks: la tabla
de los departamentos. Para no alterar la base de datos de ejemplo vamos a crear una copia
en el esquema [ei].
--CREACION TABLA
USE [AdventureWorks]
GO
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N’ei’)
EXEC sys.sp_executesql N’CREATE SCHEMA [ei] AUTHORIZATION [dbo]’
GO
CREATE TABLE [ei].[Department](
[DepartmentID] [smallint] IDENTITY(1,1) NOT NULL,
[Name] [dbo].[Name] NOT NULL,
[GroupName] [dbo].[Name] NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
CONSTRAINT [PK_Department_DepartmentID] PRIMARY KEY CLUSTERED
(
[DepartmentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
--Inserción de Tabla
INSERT INTO [ei].[Department]
SELECT [Name], [GroupName], [ModifiedDate] FROM [HumanResources].
[Department]
use [AdventureWorks]
exec [sys].[sp_cdc_enable_db]
select [is_cdc_enabled] from [sys].[databases] where [name] =
’AdventureWorks’
ShareVideos
Transact SQL proporciona varios comandos para integrar la configuración de CDC, por
ejemplo:
El tercer parámetro "all" indica que el comando debe recuperar únicamente aquellos valores que
se han producido tras la modificación. Reemplace este parámetro por "all update old" para tener
los valores anteriores y posteriores.
ShareVideos
__$operatio __$updat DepartmentI
__$start_lsn __$seqval Name GroupName
n e _mask D
0x0000002C 0x0000002C
Sales and
000006CB00 000006CB00 4 0x02 3 Sales 2
Marketing
04 02
0x0000002C 0x0000002C
04 02
0x0000002C 0x0000002C
Sales and
000006CF00 000006CF00 2 0x07 17 Export
Marketing
04 03
0x0000002C 0x0000002C
Inv
Purchasin
000006D000 000006D000 4 0x04 5 Managemen
g
t
04 02
Para conocer los cambios netos tenemos una segunda función a nuestra disposición:
Para la próxima carga es preciso memorizar el final del intervalo usado, por ejemplo en una
tabla temporal...
ShareVideos
SELECT @to_lsn AS [TO_LSN] INTO #MEMO_LAST_LSN
Puede detectarse gracias a la consulta siguiente que calcula el nuevo intervalo a partir del
final del anterior. El nuevo intervalo comienza justo después del final del precedente,
gracias a la función fn_cdc_increment_lsn().
El proceso de captura es asíncrono, por lo que es preciso esperar antes de interrogar a CDC para
que realmente aparezca la modificación que acabamos de efectuar. Espere primero a que la
transacción finalice y se almacene...
Consulta decisional
Este capítulo presenta dos ejemplos, entre otros, de funcionalidades del motor SQL que
compiten con SSAS: las vistas indexadas y las consultas GROUPING SETS.
1. Vistas indexadas
ShareVideos
Esto significa que una consulta escrita antes de la creación de la vista indexada puede
aprovechar el rendimiento ligado al uso de esta vista.
Una funcionalidad similar de OLAP consiste en crear una vista indexada de agregados. El
motor alimenta automáticamente esta vista, y las consultas de los usuarios aprovechan de
forma transparente los agregados.
Los siguientes enlaces contienen más información acerca de las vistas indexadas:
http://msdn.microsoft.com/en-us/library/ms187864.aspx
http://msdn.microsoft.com/en-us/library/ms191432.aspx
Es posible crear tablas de agregados en la edición Standard de SQL Server, pero el motor no las
usará ni las actualizará automáticamente. Existen dos funcionalidades abordadas en este capítulo
que pueden implantarse para aprovechar la implementación de las tablas de agregación: el
comando MERGE (edición Standard), que permite realizar una actualización de la tabla de
agregado en una única instrucción, y el CDC (edición Entreprise), que permite el comportamiento
incremental.
2. Consultas
Una consulta diseñada para realizar un análisis tiene a menudo como objetivo cruzar ejes de
análisis en filas y en columnas para dar, en cada cruce, un agregado sobre un indicador de
la tabla de hechos.
Escribir tal consulta sobre la base de datos SSAS en MDX es bastante intuitivo: basta con
devolver la lista de países en columnas, la lista de trimestres en filas y agregar una columna
con una expresión MDX que defina el valor solicitado.
La siguiente consulta MDX puede lanzarse sobre la base SSAS Adventure Works DW
2008R2 SE:
WITH
MEMBER [Measures].[Número] AS {NONEMPTY([Product].[Product].
[Product].MEMBERS, [Measures].[Reseller Order Quantity])}.COUNT
SELECT
ShareVideos
{[Geography].[Country].&[France],[Geography].[Country].&[United
Kingdom],[Geography].[Country].&[Canada],[Geography].
[Country].&[United States], [Geography].[Country].[All
Geographies]} * {[Measures].[Nombre]} ON COLUMNS,
{[Date].[Calendar].[All Periods],[Date].[Calendar].[Calendar
Quarter].&[2005]&[1]:[Date].[Calendar].[Calendar
Quarter].&[2006]&[4]} ON ROWS
FROM (SELECT
{[Date].[Calendar].[Calendar Year].&[2005]:[Date].[Calendar].
[Calendar Year].&[2006]} ON 0
FROM [Adventure Works])
La expresión MDX calculada puede incluirse en el cubo SSAS. En este caso, la consulta no necesita
la cláusula WITH MEMBER.
Este resultado nos recuerda que existen pocas diferencias entre las ventas a nivel nacional.
No obstante, el último trimestre de 2006 parece que el intervalo entre el mercado europeo y
el mercado norteamericano se ahonda.
El motor SQL Server 2008, en su edición Standard, permite superar los dos primeros
puntos usando comandos Transact SQL:
ShareVideos
La cláusula GROUPING SETS, junto a la cláusula GROUP BY, permite realizar las
agregaciones de mayor nivel.
La cláusula PIVOT, que existe desde SQL Server 2005, permite pivotar el
contenido de un campo en columnas.
Combinadas, ambas cláusulas Transact SQL permiten crear una tabla similar a la que
devuelve la consulta MDX. Hemos descompuesto la construcción de la consulta SQL en
dos etapas.
La primera etapa consiste en realizar los tres niveles de agregación necesarios. La consulta
que se muestra a continuación se puede ejecutar sobre la base de datos SQL
AdventureWorksDW2008R2.
SELECT
D.CalendarYear
, D.CalendarQuarter
, T.SalesTerritoryCountry
, COUNT(DISTINCT F.ProductKey) AS DistinctProductCount
FROM dbo.FactResellerSales F
INNER JOIN dbo.DimDate D ON F.OrderDateKey = D.DateKey
INNER JOIN dbo.DimSalesTerritory T ON F.SalesTerritoryKey =
T.SalesTerritoryKey
WHERE D.CalendarYear IN (’2005’ , ’2006’)
GROUP BY GROUPING SETS ( (D.CalendarYear, D.CalendarQuarter,
T.SalesTerritoryCountry), (D.CalendarYear, D.CalendarQuarter),
(T.SalesTerritoryCountry),())
ORDER BY 1,2,3;
Las primeras filas del juego de datos devuelto por la consulta SQL son:
ShareVideos
CalendarYear CalendarQuarter SalesTerritoryCountry DistinctProductCount
2005 4 United States 60
2006 1 NULL 51
... ... ... ...
La segunda etapa consiste en pivotar los países en columnas. Para ello se usa la cláusula
PIVOT que requiere el uso de una función de agregación: la consulta usa arbitrariamente
MIN(), aunque esto no tiene el menor impacto dado que sólo existe una fila por cada cruce.
SELECT * FROM
(SELECT
D.CalendarYear
, D.CalendarQuarter
, COALESCE(T.SalesTerritoryCountry,’Total’) AS
[SalesTerritoryCountry]
, COUNT(DISTINCT F.ProductKey) AS DistinctProductCount
FROM dbo.FactResellerSales F
INNER JOIN dbo.DimDate D ON F.OrderDateKey = D.DateKey
INNER JOIN dbo.DimSalesTerritory T ON F.SalesTerritoryKey =
T.SalesTerritoryKey
WHERE D.CalendarYear IN (’2005’ , ’2006’)
GROUP BY GROUPING SETS ( (D.CalendarYear, D.CalendarQuarter,
T.SalesTerritoryCountry), (D.CalendarYear, D.CalendarQuarter),
(T.SalesTerritoryCountry),())
) AS [SUB]
PIVOT(
MIN(DistinctProductCount) FOR SalesTerritoryCountry IN ([France],
[United Kingdom],[Canada],[United States],[Total])
) AS [PVT]
ORDER BY 1,2
United United
CalendarYear CalendarQuarter France Canada Total
Kingdom States
NULL NULL 104 106 166 167 167
2005 3 NULL NULL 46 46 46
2005 4 NULL NULL 59 60 60
2006 1 NULL NULL 51 51 51
2006 2 NULL NULL 59 59 59
2006 3 104 105 107 107 107
2006 4 93 96 100 100 100
Conviene no obstante observar que aunque MDX es un lenguaje muy poco extendido,
escribir la consulta MDX del ejemplo es mucho más sencillo que escribir la consulta SQL,
que requiere conocer en profundidad el modelo de la base de datos relacional.
ShareVideos
Si desea profundizar, Microsoft proporciona el siguiente ejemplo de uso de una consulta
MDX en SSRS (véase
http://msftengprodsamples.codeplex.com/wikipage?title=SS2008!Grouping%20Sets%20Re
port).
1. Comandos de script
A diferencia de las medidas calculadas y de los conjuntos con nombre, que son expresiones
MDX, los comandos son scripts MDX donde el objetivo consiste en modificar la estructura
del cubo.
El script puede realizar cantidad de operaciones sobre el cubo, tales como definir el
miembro por defecto de una dimensión realizadora de funciones (véase el capítulo Crear el
cubo, sección Expresiones MDX - Miembro por defecto), pero también se usa para
sobrecargar un valor contenido en el cubo sobre un perímetro definido.
SCOPE([Geografia].[Pais].[España], [IVA].[IVA].[Lujo],[Measures].
[Importe sin IVA]);
THIS = [Measures].[Importe con IVA] * (1 - 0.18);
SCOPE([Fecha].[Calendario].[Mes].&[2011]&[1]:NULL);
THIS = [Measures].[Importe con IVA] * (1 - 0.18);
BACK_COLOR = 9035969 (-Verde) = --Verde
END SCOPE;
END SCOPE;
Un primer ámbito (SCOPE) restringe el cálculo al mercado español, a la tasa de IVA para
los productos de lujo y al cálculo de la medida Importe sin IVA.
ShareVideos
Se define un subperímetro sobre los meses posteriores al cambio y el cálculo se define con
el nuevo impuesto. Para trazar bien el cambio en el valor del impuesto, el color de fondo de
las celdas (BACK_COLOR) implicadas aparece coloreado en verde.
2. KPI
El KPI es un concepto que no tiene sentido más que cuando la herramienta de visualización cliente
lo soporta.
La pestaña Indicador clave de desempeño permite gestionarlos dentro del editor del cubo en
el estudio de desarrollo.
Para crear un KPI existen cuatro valores obligatorios definidos por expresiones MDX:
Define el valor del KPI, que generalmente es una medida del cubo o una medida
calculada.
Estado:
ShareVideos
El estado permite alimentar el semáforo en función de la posición del valor respecto
al valor objetivo fijado. La expresión debería devolver un -1 para el rojo, 0 para el
ámbar y 1 para el verde.
Tendencia:
Las expresiones deben corresponderse con reglas de negocio definidas con los usuarios, y a
continuación bien documentadas. No es responsabilidad del equipo de BI definir un umbral
arbitrario únicamente porque sea necesario para crear un KPI.
SELECT
{KPIValue("Product Gross Profit Margin")
,KPIGoal("Product Gross Profit Margin")
,KPIStatus("Product Gross Profit Margin")
,KPITrend("Product Gross Profit Margin")} ON COLUMNS
FROM [Adventure Works]
3. Acciones
Las acciones SSAS son comandos contextuales definidos con ayuda del lenguaje MDX,
que el usuario puede iniciar haciendo clic derecho con el ratón sobre la celda de una tabla.
La pestaña Acciones dentro del editor del cubo en el estudio de desarrollo está dedicada a
su gestión.
Acción de extracción:
ShareVideos
Acción de informe:
Acción:
Esta acción genérica reagrupa distintos tipos de acciones. El tipo usado por defecto
es la URL. Permite definir dinámicamente una URL y abrirla en un navegador Web,
por ejemplo para mostrar la ficha de un producto o la dirección de un cliente en un
mapa o incluso para mostrar un informe creado con otra tecnología distinta a
SSRS...
4. Traducciones
Todas las etiquetas definidas en la etapa de diseño son susceptibles de ser traducidas.
El caso de los atributos de dimensión es particular. Puede que los miembros del atributo
sean traducibles. Por ejemplo, los miembros del atributo color son traducibles. Pueden
traducirse en las columnas dedicadas de la tabla de dimensión (véase el capítulo Crear el
cubo). En este caso, por cada atributo y cada idioma existe un botón que permite hacer el
enlace entre la columna de traducción con la vista del origen de datos.
5. Perspectivas
Las perspectivas son vistas que se proporcionan para simplificar el trabajo del usuario. En
efecto, cuando haya construido un DW de empresa con numerosos DM (Data Marts), la
capa SSAS contiene tantos grupos de medidas y tantas dimensiones que se vuelve
inmanejable. Los enlaces entre grupos de medidas y dimensiones no se distinguen
visualmente... Si el usuario final tiene permisos definidos sobre varios grupos de medidas
existe el riesgo de perderse en la interfaz de consulta dinámica, como puede ser Excel,
incluso si se trata de un usuario experto... La perspectiva permite separar las vistas DM por
DM, negocio por negocio, dominio por dominio, con el fin de simplificar su uso.
ShareVideos
perspectivas las columnas, y el diseñador selecciona en los cruces las asociaciones que
quiere materializar.
Esta funcionalidad está reservada a la edición Entreprise. Si el cubo es rico en objetos se vuelve útil
para los usuarios que acceden al cubo mediante una aplicación cliente dinámica. La perspectiva se
ve como un cubo.
Este asistente es muy interesante, por un lado porque aporta un valor añadido a los
cálculos de la dimensión temporal, como los totales a partir del inicio del periodo o
incluso progresiones, y por otro lado porque genera comandos de scripts que pueden
servirnos de guía para crear nuestros propios scripts. Por último, todo cubo tiene
requisitos de análisis sobre el eje temporal. Aparece detallado a continuación (véase
la sección Enriquecer el funcionamiento de la base de datos SSAS - Asistente
Business Intelligence en este capítulo).
SSAS permite modelar una dimensión de tipo plan contable con reglas de
agregación adaptadas a la gestión del plan contable, generalmente útil en DM de
tipo financiero. Este asistente proporciona ayuda al usuario para diseñar tal
dimensión. Se detalla a continuación (véase la sección Enriquecer el
funcionamiento de la base de datos SSAS - Asistente Business Intelligence en este
capítulo).
Este asistente ayuda al usuario a realizar las asignaciones entre los tipos de
dimensiones y los atributos definidos en SSAS y sus dimensiones y atributos.
Actualmente sólo los tipos Time, Currency y Account son oficialmente útiles. Crear
otras asociaciones puede ser interesante si están reconocidas en las aplicaciones
cliente, por ejemplo desarrollos específicos...
ShareVideos
SSAS permite definir fórmulas de agregación gracias al operador unario. Definido
en cada miembro de una dimensión, el operador unario indica si este miembro se
añade o sustrae, para obtener la agregación de su nivel padre. El asistente ayuda
simplemente a definir la columna que describe el operador unario (véase la sección
la sección Enriquecer el funcionamiento de la base de datos SSAS - Asistente
Business Intelligence en este capítulo).
Este asistente tiene como objetivo definir el orden de los miembros de los atributos
de una dimensión. Consiste en definir las propiedades OrderBy y OrderByAttribute
de los atributos de la dimensión.
Este asistente, accesible únicamente desde el editor del cubo, permite simplemente
escoger para cada medida la función de agregación, y que sea semiaditiva o no.
Este asistente, accesible únicamente desde el editor del cubo, permite implementar
una conversión dinámica de divisa de los importes comprendidos en la tabla de
hechos y también en las dimensiones. El objetivo es mostrar al usuario final un
importe en otra divisa distinta a la que se ha usado para almacenar los datos en el
DW (véase la sección Enriquecer el funcionamiento de la base de datos SSAS -
Asistente Business Intelligence en este capítulo).
ShareVideos
a. Ejecutar el asistente Time Intelligence
El asistente no puede funcionar si no existe al menos una dimensión de tipo temporal y sus
atributos están tipados.
La primera etapa permite seleccionar una jerarquía en la dimensión y las fórmulas que se
quiere añadir al cubo.
La segunda etapa consiste en seleccionar las medidas a las que se quiere aplicar las
fórmulas.
Se crea una columna tras cada ejecución del asistente, lo cual no tiene sentido alguno: con una
columna es suficiente. Si se ejecuta varias veces el asistente para la misma jerarquía, aparece un
valor autoincrementado en el nombre (ej: Calendar 2 Date Cálculos).
El valor N’Actual Date’ debería considerarse más bien como N’Valor real’, por ejemplo.
ShareVideos
Ha creado para cada fórmula seleccionada un miembro calculado sobre la nueva
jerarquía de atributo. Este miembro calculado tiene la expresión ’NA’ por No
Asignado. Es el valor por defecto de la nueva medida, que se devolverá cuando no
tenga sentido aplicarla.
Por último, los comandos de script se han generado para poder definir la fórmula en
el ámbito (SCOPE) de las medidas seleccionadas.
Por ejemplo, para el Valor anual hasta la fecha (en inglés Year To Date):
Scope(
{
[Measures].[Internet Order Quantity],
[Measures].[Sales Amount Quota]
}
) ;
Aggregate(
{ [Date].[Fiscal Date Calculs].[Actual Date] }
*
PeriodsToDate(
[Date].[Fiscal].[Fiscal Year],
[Date].[Fiscal].CurrentMember
)
) ;
End Scope ;
Esto significa en concreto que sobre las demás medidas no se aplicará el cálculo y
por tanto el nuevo miembro calculado devolverá el valor ’NA’.
La tupla en la parte izquierda del signo igual define un nuevo subcubo, en el interior
del primero. Esta vez el perímetro está restringido al miembro calculado, a los años
del calendario, y a las fechas. Esto significa que la expresión a la derecha se
evaluará solamente en estos cruces.
ShareVideos
La expresión en la parte derecha del signo igual solicita una agregación de todos los
periodos desde el comienzo del año hasta la fecha en curso. Dado que no se ha
especificado ninguna medida esta agregación se realiza sobre la medida en curso.
La función Aggregate permite usar la función de agregación definida sobre esta
medida.
El miembro único del nuevo atributo de dimensión creado por el asistente se usa
aquí para crear un producto con el conjunto de los periodos devueltos.
Existen varias formas de escribir este script, si bien es cierto que el script implementado por el
asistente no es el que un desarrollador, incluso partiendo de las mismas condiciones, hubiera
escrito. En efecto éste último hubiera preferido, por ejemplo, la función YTD (Year To Date) frente
a PeriodsToDate que es más genérica.
Ejecute el asistente y estudie las fórmulas generadas para los otros miembros calculados.
Recuede que la etiqueta ’Actual date’ tiene más bien el sentido de ’Valor’ o ’Valor real’.
Considere este asistente como un tutorial. En efecto, el uso práctico de esta funcionalidad pasa
por realizar sus propios desarrollos. Por otro lado, está limitado al cálculo sobre las fechas,
mientras que es posible implementar esta técnica sobre otro tipo de dimensión.
Cada miembro de una dimensión de plan contable representa un tipo de datos que puede o
no estar agregado en función de reglas de negocio. El tipo de agregación ByAccount
(Cuenta), disponible en la edición Entreprise, proporciona el borrador para diseñar una
solución propia que a menudo tendremos que completar con fórmulas MDX adaptadas al
caso que estamos modelando.
ShareVideos
Esta sección ya parte de una traducción errónea. De hecho ByAccount se traduce como Cuenta,
que puede confundirse con Recuento, la traducción española de plan contable (Chart of Accounts)
es Gráfico de cuentas.
El principio es el siguiente:
Se crea la dimensión Plan contable de tipo Account. La jerarquía principal del plan
contable debe poseer el tipo Account. El atributo número de cuenta debe poseer el
tipo Account Number.
Esta dimensión debe contener a su vez un atributo Tipo de cuenta, que identifique
para cada cuenta el tipo a que estará asociado mediante una regla de agregación. La
propiedad Tipo de cuenta debe ser de tipo Account Type.
La última etapa consiste en enlazar los tipos de cuenta con los que aparecen
predefinidos en SSAS (Asset, Balance, Expense, Flow, Liability, Income,
Statistical) e indicar una función de agregación.
El Asistente de inteligencia de cuentas permite hacer el enlace entre sus tipos de cuenta y aquellos
predefinidos, pero no el enlace con la función de agregación. Lo encontrará en las propiedades de
la base de datos accesibles en la opción del menú contextual Editar base de datos sobre la base de
datos en el Explorador de soluciones.
La experiencia muestra que esta funcionalidad no cubre más que una parte de la problemática
contable que será preciso completar con el operador unario y el desarrollo de expresiones MDX.
ShareVideos
Operador
Regla
unario
+ El valor del miembro se suma.
- El valor del miembro se sustrae.
El valor del miembro se usa para multiplicar el agregado constituido
*
por los miembros precedentes.
El valor del miembro se usa para dividir el agregado constituido por
/
los miembros precedentes.
~ El valor del miembro se ignora.
El valor numérico se usa para ponderar el valor del miembro. Se
Valor
suma el valor del miembro multiplicado por el valor del operador
numérico
unario.
Esta opción se usa en raras ocasiones. Generalmente se adapta mejor el uso de un script de
comandos.
ShareVideos
AccountKey AccountDescription AccountType Operator CustomMembers
04].&[50]/[Account]
[Accounts].[Account
Level 02].&[97]
El precio unitario promedio (Average Unit Price) es igual al cociente de la clave 50, las
ventas netas (Net Sales), entre la clave 97, las unidades (Unit). Precio unitario promedio =
Ventas netas / unidades.
Para visualizar los datos en distintas divisas es preciso operar con conversiones, a menudo
complejas. Parece lógico efectuar estas conversiones en el momento de ejecutar la consulta.
Es práctico almacenar en el DW los importes en una divisa única, para poder agruparlos sin
problemas. El inconveniente es que los importes que se muestran en la divisa de origen serán los
importes convertidos y presentarán una ligera desviación respecto a los importes de origen.
El asistente permite gestionar el caso en que se almacenen varias divisas llamadas divisas
locales o de origen (Source Currency) y se mostrarán en una divisa llamada divisa de
destino. La conversión pasa naturalmente por una divisa intermedia: la divisa pivote.
Debe existir una dimensión de tipo Currency en el cubo. El atributo clave no debe
tener la propiedad IsAggregatable a Falso. Uno de los atributos debe ser de tipo
CurrencyName.
Debe existir una dimensión de tipo Time en el cubo, con sus atributos igualmente
tipados.
Una tabla de hechos define la tasa de conversión por periodo entre la divisa pivote y
las demás divisas. Esta tabla contiene, en teoría, la clave de la dimensión de las
divisas, una clave con la dimensión tiempo (por ejemplo con el atributo fecha) y una
tasa de conversión entre la divisa pivote y la divisa referenciada por la clave.
ShareVideos
El ejemplo Adventure Works proporciona dos tasas distintas: la tasa media (Average Rate) y la tasa
de cierre de la jornada (End of day Rate).
Es preciso crear un grupo de medidas para la tabla de hechos con una función de
agregación apropiada para la tasa de conversión. Se aconseja cambiar el tipo de este
grupo de medidas a ExchangeRate.
Las tasas son medidas semiaditivas, y por tanto reservadas a la edición Entreprise de SSAS. En el
ejemplo Adventure Works, la función de tasa promedio es AverageOfChildren y la función de tasa
de cierre es LastNonEmpty.
Igual que con la dimensión Tiempo, pruebe este asistente para ver si responde a su caso concreto,
y estudie la manera de adaptarlo a su problemática. Una vez domine bien la solución propuesta
por el asistente, es posible adaptarlo a su propio caso o escoger otra modelización. Exiten de
hecho otras formas de gestionar las divisas.
Un punto interesante a estudiar con atención en el comando de script generado por el asistente es
el uso, mediante la función MDX LinkMember, de una dimensión de reporting que no esté ligada a
ningún grupo de medida.
7. Objetos vinculados
SSAS permite agregar a nuestra base de datos dimensiones vinculadas y grupos de medidas
vinculados. El objetivo es integrar en nuestra base de datos un grupo de medidas o una
dimensión que ya existan en otra base de datos SSAS, o incluso en la misma (en el caso de
los grupos de medidas).
ShareVideos
Esta operación puede realizarse de varias formas, entre ellas haciendo clic en el botón
Nuevo objeto vinculado de la barra de botones del editor del cubo en el estudio de
desarrollo.
El principio es muy simple: tenemos que definir un origen de datos que apunte a la base de
datos SSAS, a menos que escojamos la base de datos activa. A continuación, los objetos
seleccionados se integran en nuestro proyecto como enlaces hacia el origen.
El enlace se comporta como un proxy: envía las consultas al origen y cachea las respuestas
a las consultas para evitar tener que solicitar varias veces la misma información resultado
de la misma consulta.
8. Reescritura (Writeback)
SSAS sigue siendo una herramienta de consulta. La escritura debería limitarse al uso restringido de
pocos usuarios, evitando accesos concurrentes sobre la misma celda.
a. Dimensión en reescritura
ShareVideos
b. Grupo de medidas en reescritura
La reescritura puede activarse para un grupo de medidas en la pestaña Particiones del editor
de cubos. Haga clic en una partición del grupo de medidas y seleccione Parámetros de
reescritura.
No obstante SSAS autoriza la escritura sobre una partición de escritura de tipo MOLAP. Dé
preferencia a esta opción.
Para usar esta funcionalidad, necesita usar una aplicación de BI cliente que soporte esta
característica, o tendrá que desarrollarla. Esta funcionalidad está completamente integrada
en Excel 2010, a través del Análisis de hipótesis en las Herramientas de tabla dinámica.
Cuando se realiza una modificación sobre un valor agregado, se desglosa en los valores
detallados. La Configuración del Análisis de hipótesis permiten escoger el método de
desglose.
ShareVideos
Roles de seguridad
La gestión de la seguridad de acceso a los datos de la base de datos OLAP pasa por la
creación de roles de la base de datos en el estudio de desarrollo (BIDS) o en el estudio de
gestión (SSMS). Otorgan permisos sobre los objetos del UDM a usuarios o grupos de
Windows.
Además de los roles de base de datos, SSAS define un rol de administrador del servidor que
no puede borrarse y es accesible mediante las propiedades del servidor, página Seguridad,
en SSMS. Este rol permite definir los usuario o grupos de Windows que tendrán permisos
de administración sobre la instancia SSAS.
En el estudio de desarrollo, el editor de roles permite definir el rol gracias a sus múltiples
pestañas:
General: se usa para definir el nombre del rol, su descripción y las autorizaciones
sobre la base de datos. Las autorizaciones son:
o Control total (Administrador): para otorgar permisos de administración de la
base de datos SSAS. Esta autorización otorga todos los permisos sobre la
base de datos, incluidos los datos. Cuando un rol posee este nivel de
autorización las demás pestañas, que permiten definir autorizaciones
concretas, se desactivan en el editor de roles.
o Procesar base de datos: para otorgar permisos para procesar la base de datos
así como sus objetos. No proporciona ningún permiso de lectura sobre los
datos.
o Leer definición: para otorgar el derecho de leer los metadatos de la base de
datos, sin proporcionar permiso alguno sobre los datos.
Orígenes de datos: para cada origen de datos, el rol puede tener permisos de acceso
de lectura y permisos para leer la definición. Es útil únicamente en el marco del data
mining.
Cubos: indispensable para otorgar permisos de acceso de lectura al cubo. Permite a
su vez definir los permisos de escritura (véase la sección Reescritura (Writeback)),
de extracción (Drillthrough) de creación de cubos locales y de procesamiento del
cubo.
ShareVideos
Por defecto, la suscripción hereda los derechos de lectura sobre las dimensiones del cubo.
Esta herencia puede desactivarse en la pestaña Dimensiones.
Un hiperenlace en la parte superior de esta pestaña permite probar la seguridad del cubo.
En muchos casos se plantea la duda entre autorizaciones sobre los datos de las celdas y los
datos de la dimensión. Si bien ambas opciones pueden parecer similares, no se comportan
del mismo modo. Pruebe y seleccione aquélla que mejor se adapte a su problemática.
En ciertos casos es teóricamente necesario crear cientos de roles. Esta situación es difícil de
gestionar y administrar. SSAS permite implementar soluciones llamadas de seguridad
dinámica basadas generalmente en el uso de la función MDX USER_NAME() en las
expresiones MDX de un único rol. La expresión MDX puede basarse sobre un grupo de
ShareVideos
medidas dedicado a la definición de permisos o sobre la llamada a un ensamblado
dedicado.
Un usuario que esté ligado a varios roles posee el acumulado de los permisos de sus
distintos roles. No obstante, es posible limitar los permisos a los de uno de sus roles
concretos especificándolo en la cadena de conexión a través del parámetro Roles.
De hecho, el rol no contiene más que un nombre y la lista de sus suscripciones. Toda la
información de seguridad se almacena en otros objetos del cubo, aunque se definan en la
interfaz a nivel de rol.
Almacenamiento y particiones
Igual que para las tablas de la base de datos SQL, SSAS tiene una funcionalidad de
particionamiento de grupos de medidas, accesible únicamente en la edición Entreprise. Con
SQL el particionamiento puede considerarse como una opción que va a jugar un papel
importante en el rendimiento, y en la facilidad de gestión. Con SSAS, el particionamiento
es necesario si el procesamiento de un grupo de medidas puede consumir muchos recursos
de memoria debido a volumetrías importantes.
Lo más sencillo es adoptar la misma estrategia de particionamiento en SSAS que para las tablas
SQL subyacentes. Aun así hay que considerar que más allá de los 100 millones de registros por
grupo de medidas el particionamiento es indispensable, si bien esto depende del número de
parámetros.
Más allá de la filosofía "divide y vencerás", las particiones SSAS, igual que las particiones
SQL, tienen cada una su propia configuración que permite afinar el rendimiento sobre cada
funcionalidad del cubo.
La gestión de las particiones es esencialmente una tarea de gestión de producción que se realiza
en SSMS gracias al Explorador de objetos.
ShareVideos
1. Particiones
Por defecto, todo grupo de medidas está constituido por una partición. Trabajar con
particiones consiste en limitar el perímetro de la primera partición, y agregar otras
particiones sobre perímetros distintos.
Si dos particiones tratan datos en común, estos datos serán contabilizados dos veces, lo cual no es
deseable.
El perímetro de una partición SSAS se define bien por una tabla de la vista del origen de
datos, bien por una consulta.
La primera opción no parece muy práctica. Es preferible la segunda: uso de consultas. Cuando
todas las particiones tienen como origen la misma consulta sobre la misma tabla, debe comenzar
por la creación de la primera mediante una consulta filtrada.
2. Modos de almacenamiento
MOLAP: OLAP multidimensional, almacena tanto los datos como los valores
agregados en una estructura multidimensional. Como consecuencia, las consultas
presentan un mejor rendimiento aunque el procesado de la partición es un proceso
pesado y que consume muchos recursos.
ROLAP: OLAP relacional, almacena tanto los datos como los valores agregados en
la base de datos relacional. Es muy lento a la hora de responder a las consultas,
aunque su procesamiento es muy liviano.
HOLAP: OLAP híbrido, almacena los datos en la base de datos relacional de origen
y los valores agregados en una estructura multidimensional. Supone un compromiso
entre el MOLAP y el ROLAP, aunque por desgracia tiene poco interés y no se usa
muy a menudo.
InMemory: este nuevo método de almacenamiento que se proporciona al
desarrollador se reserva al uso de PowerPivot. Seleccionar este modo supone un
error.
ShareVideos
El objetivo principal de la capa OLAP es procurar buenos tiempos de respuesta a las consultas. El
MOLAP se usa, por tanto, en la mayoría de los casos. El ROLAP se usa cuando se desea obtener
información en tiempo real sobre volúmenes de información pequeños.
Por el contrario, no es tan evidente realizar esta operación en SSMS. Para seleccionar uno
de los tres modos de almacenamiento en SSMS, es preciso abrir las propiedades de la
partición, ir a continuación a la página Almacenamiento en caché automático y hacer clic
en el botón Opciones encima de Anular. El modo de almacenamiento se modifica gracias a
la lista desplegable en la parte superior de la ventana Opciones de almacenamiento.
3. Diseño de la agregación
ShareVideos
En SSMS puede iniciarse desde el Explorador de objetos mediante la opción Diseñar
agregaciones del menú contextual de las particiones.
Puede seleccionar una única partición y a continuación aplicar el diseño creado a otras mediante la
opción de menú Asignar diseño de agregaciones. Por defecto, un diseño afecta como mínimo a
una partición. Es posible que algún diseño no se encuentre asignado a ninguna partición o, a la
inversa, que una partición no tenga ningún diseño de agregación.
ShareVideos
El número de miembros de un atributo de dimensión en la partición no puede informarse en esta
pantalla. Es importante hacerlo, especialmente para aquellos atributos de la dimensión usada
como criterio de particionamiento y, en general, para los de la dimensión de tiempo.
Esta información es capital para que SSAS construya valores agregados correctos. Es útil
actualizarla regularmente en producción. Podemos usar el botón Recuento para contar las
líneas en el origen, aunque esta operación puede volverse increíblemente lenta cuando se
trata de grandes volumetrías.
100% de ganancia de rendimiento se corresponde con el máximo que puede aportar SSAS
con las agregaciones. 0% se corresponde con no crear ninguna agregación.
Diseñar las agregaciones es una operación que puede tomar su tiempo en SSAS puesto que
tiene que tener en cuenta un número elevado de combinaciones posibles. El botón Iniciar (o
Continuar) permite iniciar el diseño. Durante su creación, el gráfico se actualiza
presentando la ganancia de rendimiento en el eje de ordenadas frente al almacenamiento
estimado en el eje de abscisas.
La estrategia correcta que se debe adoptar varía según el desarrollo del cubo. Partir de una
ganancia inicial del 30% es prudente. Puede descender hasta un 10% para alcanzar un margen
mayor, cuando los usuarios reclaman mejores rendimientos...
ShareVideos
El Asistente para diseñar agregaciones finaliza con la elección del nombre para el diseño de
la agregación.
El primer paso consiste en iniciar el registro de la actividad en una tabla de una base de
datos SQL. Esta operación se define en las propiedades del servidor SSAS, desde SSMS.
Existen cuatro propiedades para ello:
Preste especial atención pues a menudo existen dos tipos de aplicaciones BI: aplicaciones estáticas
como SSRS y aplicaciones dinámicas como Excel. Una aplicación dinámica corre el riesgo de
generar un número de consultas muy elevado si cada acción del usuario provoca una actualización
de los datos. En este caso tomará un peso desproporcionado a la hora de realizar su registro
respecto a la actividad estática, mientras que la actividad dinámica en teoría no debería
representar más que una pequeña parte de la actividad total.
El registro de consultas (Query Log) no registra más que la información útil a la hora de diseñar la
agregación. No tiene nada que ver con el FlightRecorder que guarda una traza mucho más
detallada y completa de la actividad, explotable por SQL Server Profile, y que le permitirá
ShareVideos
encontrar las últimas consultas ejecutadas, especialmente aquellas que han producido un error
grave.
Una vez registrada la actividad, es preciso dejar a los usuarios trabajar durante un periodo
de tiempo significativo. Al final de este periodo, el asistente Optimización basada en el
uso... puede lanzarse desde SSMS mediante el menú contextual de las particiones.
La primera etapa consiste en filtrar la información registrada que queremos tomar en cuenta
para ejecutar el asistente. Este filtro marca un periodo, una lista de usuarios y un porcentaje
de consultas más frecuentes. Un porcentaje menor favorecerá a las consultas menos
frecuentes.
La etapa siguiente muestra las agregaciones filtradas según la selección anterior y permite
al usuario deseleccionar aquello que no le parezca pertinente.
Por último, las etapas siguientes son las mismas que las del Asistente de diseño de
agregaciones clásico.
Con las herramientas estándar es posible crear o suprimir un diseño de agregación, pero no
modificarlo.
4. Procesamiento
Procesar (en inglés Process) un objeto de la base de datos SSAS significa que se actualizará
a partir de los datos de origen. En el caso de una dimensión, se leen los datos de origen para
actualizar la dimensión SSAS. En el caso de un cubo, se leen los datos de origen para
actualizar los datos atómicos del cubo así como sus valores agregados.
Para más información sobre las operaciones de procesamiento remítase al capítulo Crear el
cubo.
ShareVideos
alimentación del DW o del DM de origen del cubo se hace de manera puntual
mediante un proceso automático llamado ETL. El cubo puede entonces actualizarse
al final de este proceso.
Almacenamiento en caché automático y OLAP en tiempo real son dos conceptos diferentes que a
menudo se confunden. Es posible llegar a tener un tiempo real con SSAS sin Almacenamiento en
caché automático, o recíprocamente usar el Almacenamiento en caché automático para una
actualización diaria.
Dé preferencia a esta solución cuando el origen sea una fuente de datos operacional y
transaccional.
Igual que es posible insertar filas en una tabla SQL, es posible escribir en una
dimensión o en una partición. Esta funcionalidad, poco usada, tiene su interés en
escenarios de tiempo real para evitar tener que crear una base de datos
desnormalizada. En efecto, el DM y el grupo de medidas son redundantes.
Empujar los datos puede hacerse con SSIS, que tiene en su edición Entreprise los
componentes necesarios.
Para diseñar una arquitectura correcta de base de datos SSAS, hay que tener en cuenta la
noción de latencia de los datos. La latencia califica el tiempo que tarda un dato del sistema
transaccional en estar disponible en el sistema decisional. Cuanto menor sea la latencia, la
base de datos SSAS estará más cerca del tiempo real.
Si hay alguna etapa intermedia entre la base de datos SSAS y los datos operacionales, la noción de
latencia se desvirtúa. Si la base de datos intermedia se actualiza diariamente a primera hora del
día es inútil definir una baja latencia para alimentar la base de datos SSAS.
ShareVideos
5. Almacenamiento en caché automático
Observe que esta noción de caché sólo está disponible para los modos de almacenamiento
MOLAP y HOLAP. Con MOLAP los datos y las agregaciones están en la caché. Con
HOLAP solamente las agregaciones están en la caché. Con ROLAP no hay caché: se lee
directamente el origen relacional.
Antes de que la segunda caché reemplace a la primera, puede darse el caso de que se haya
superado la latencia exigida. En este caso la primera caché de lectura ha sido suprimida sin que se
haya generado la nueva. Las consultas se resuelven directamente en modo ROLAP. Esto puede
causar una degradación significativa en los tiempos de respuesta.
Estos modos están preconfigurados, por tanto sólo es posible realizar desde SSAS
una pequeña parte de la configuración. SSAS no puede adivinar cómo funciona el
ShareVideos
origen de datos. Por ello generalmente es necesario indicar las opciones haciendo
clic en el botón Opciones.
Esta pantalla habría ganado en lógica desplazando el modo de almacenamiento disponible en las
opciones (botón Opciones) a Configuración estándar, desplazando los parámetros estándar a una
página dedicada en Configuración personalizada, y asociando únicamente el modo de
almacenamiento MOLAP con los parámetros de configuración del almacenamiento en caché
automático. El procesamiento MOLAP aprovecha efectivamente la caché para conservar el línea el
cubo durante el procesamiento, pero la actualización manual no puede considerarse como
proactiva.
ShareVideos
Actualizar la caché periódicamente:
o Volver a generar intervalo: permite especificar un intervalo de actualización
de caché independientemente de que se produzcan o no notificaciones. El
valor -1 permite ignorar esta actualización periódica.
Poner en línea inmediatamente: especifica si el servidor debe responder en modo
ROLAP o no responder a las consultas cuando la caché haya quedado obsoleta y la
nueva caché todavía no se haya generado.
Tenga en cuenta que en ocasiones ROLAP puede suponer un tiempo de respuesta mayor que
esperar a la actualización y responder a continuación en modo MOLAP.
SQL Server:
Los eventos de la base de datos relacional SQL Server (versión 2000 ó superior) se
usan para detectar la actualización del origen. Es posible usar una tabla de
seguimiento para gestionar los eventos, en vez de basarse simplemente en la tabla
de origen. Aunque está optimizado para SQL Server, este modo presenta un
rendimiento bastante limitado y raramente se usa.
Cliente iniciado:
En este modo SSAS espera una notificación XMLA del cliente (véase el artículo
http://msdn.microsoft.com/es-es/library/ms187202(SQL.100).aspx). Este modo es
difícil de implementar pues precisa la implementación de un sistema de
notificaciones.
ShareVideos
incremental. SSAS genera él mismo las notificaciones si el límite superior es
diferente al límite superior que se ha leído antes.
Una segunda consulta, llamada Consulta de procesamiento, permite extraer las filas
para efectuar una actualización incremental. La consulta de procesamiento debe
especificar un filtro sobre un intervalo definido por un límite superior y un límite
inferior igual al límite superior anterior. Debe usarse una sintaxis del tipo SELECT
... FROM tabla WHERE columna > COALESCE(?,-1) AND columna <=?.
Los dos primeros modos sólo pueden usarse con volúmenes de datos pequeños.
Introducción
En el capítulo Crear informes OLAP se expuso la creación de informes de BI con
Reporting Services (SSRS). Este capítulo se centra en la administración del servidor de
informes.
Es habitual poner en producción una aplicación operacional sin que el equipo de desarrollo del
proyecto tenga acceso al entorno de producción. En el caso de los sistemas decisionales esto va a
suponer generalmente una diferencia. En efecto es deseable que un equipo especializado en
herramientas de análisis decisional, y que conozca bien los requisitos de los usuarios, gestione y
administre los servidores de BI para asegurar un buen rendimiento, resolver cualquier descuadre o
cacheo de los datos y observar el uso de los objetos de negocio. Una de las finalidades del BI es la
rapidez de restitución de los datos. Esto puede optimizarse mediante una explotación fina y
adecuada llevada a cabo por equipos especialistas.
Servidor de informes
ShareVideos
1. Despliegue
El manual completo para dominar esta API está disponible en MSDN (véase
http://msdn.microsoft.com/en-us/library/aa 256615(v=SQL.80).aspx, Formatting the
Reporting Services Script File).
Para escribir un script de despliegue, lo más eficaz es estudiar los ejemplos que proporciona
Microsoft en su sitio Web CodePlex (véase http://msftrsprodsamples.codeplex.com,
sección Script Samples).
rs.exe /?
rs -i AddItemSecurity.rss -s http://localhost/reportserver -v
userName="Antonio Machado"...
2. Suscripciones
a. Introducción
Suscribirse a un informe permite programar la ejecución del informe para recibirlo por
correo electrónico o en una carpeta compartida en red, según una planificación definida.
SSRS proporciona dos soluciones de suscripción: las suscripciones, disponibles a partir de
la edición Standard de SSRS, y las suscripciones controladas por datos, disponibles a partir
de la edición Entreprise.
ShareVideos
Con la suscripción Standard, el usuario pide directamente desde el gestor de informes
suscribirse a un informe concreto. En las suscripciones controladas por datos, SSRS lee la
información de distribución de los informes en una tabla relacional.
b. Seguridad
Una funcionalidad esencial del origen de datos SSAS consiste en filtrar los datos devueltos
en función del usuario (por ejemplo para que cada comercial vea únicamente su territorio).
Con la seguridad integrada de Windows definida en el origen de datos es fácil reproducir
este comportamiento en SSRS.
Pero para administrar las suscripciones es preciso usar un modelo de seguridad distinto del
origen de datos. En efecto, en una suscripción es la cuenta de servicio la que ejecuta el
informe... SSRS prohíbe la creación de suscripciones en estas condiciones. Es preciso
modificar el origen de datos. Se trata de una tarea complicada y supone el uso de soluciones
complejas y pesadas para conservar el modelo de seguridad SSAS ligado a los datos. Esta
problemática ha sido sintetizada y resuelta convenientemente por Greg Galloway en su blog
(véase la página
http://www.artisconsulting.com/blogs/greggalloway/Lists/Posts/Post.aspx?ID=18, Using
EffectiveUserName To Impersonate in SSAS).
Como conclusión diremos que para combinar suscripciones SSRS y la seguridad de SSAS
filtrando sobre los datos es preciso desarrollar una solución propia que debería existir de
forma nativa en el producto.
ShareVideos
c. Programaciones
Durante la creación de una suscripción el usuario puede definir una programación propia,
aunque las buenas prácticas aconsejan el uso de una programación compartida, creada de
antemano por parte del administrador.
La programación es un objeto SSRS que se usa en más lugares además de en las suscripciones. Está
accesible generalmente en las opciones del procesamiento y en las opciones de instantánea.
d. Suscripción estándar
Cuando un usuario visualiza un informe puede decidir suscribirse (si tiene los permisos
necesarios, véase el capítulo Crear informes OLAP, sección Administración).
Para ello basta con hacer clic en el gestor de informes, sobre el nombre del informe (justo
debajo de las pestañas de Internet Explorer) para abrir la página de gestión del informe.
ShareVideos
1. Cuando visualice el contenido de una carpeta del servidor de informes en IE
(Internet Explorer), puede mostrarse un menú para cada elemento, gracias a la
flecha que se encuentra a su derecha.
2. Abra este menú y seleccione la opción Administrar.
Existen dos opciones de entrega del informe: por mensajería SMTP o mediante los recursos
compartidos de archivos.
La mensajería SMTP preferentemente tiene que ser configurada (véase el capítulo Crear
informes OLAP, sección Administración - Configuración del servidor).
Usar los recursos compartidos de archivos de Windows requiere que las carpetas
compartidas sean visibles desde el servidor. Necesitan a su vez incluir en la suscripción un
identificador de Windows y su contraseña.
Observe las opciones a marcar, en una suscripción por mensajería, Incluir informe e Incluir vínculo.
La primera le permite empujar (push) el informe, en forma de archivo adjunto, hacia el usuario. La
segunda invita al usuario a visitar (pull) el informe. Cuando desmarcamos ambas opciones el
correo se envía sin archivo adjunto ni vínculo, lo cual no es muy útil.
ShareVideos
e. Suscripción controlada por datos
El uso del modo Render para exportar el informe en un formato dado se explica e ilustra
mediante un ejemplo en esta página: http://msdn.microsoft.com/en-
us/library/microsoft.wssux.reportingserviceswebservice.rsexecutionservice2005.
reportexecutionservice.render(v=SQL.90).aspx (ReportExecutionService.Render Method).
Es posible construir una aplicación .NET dedicada, un script rss para rs.exe, un script en
SSIS, o un script Transact SQL para reemplazar la suscripción controlada por datos. La
solución SSIS es la más atractiva, sobretodo si la alimentación del DW y el procesamiento
de la base SSAS ya están implementados con SSIS.
El informe vinculado es un enlace lógico al informe. Se usa para crear copias lógicas del
informe.
ShareVideos
tiene acceso a la carpeta DepRRHH, y el departamento de compras sólo tiene acceso a la
carpeta COMPRAS, ¿cómo sería posible hacer que un informe esté accesible para ambos
grupos? La solución es el informe vinculado.
Para crear un informe vinculado basta con abrir en el administrador de informes la ventana
de administración del informe y, a continuación, hacer clic en el botón Crear un informe
vinculado.
Es posible desplegar todos los informes construidos por los desarrolladores en una carpeta
invisible a los usuarios, y no darles acceso más que a los informes vinculados. Esto permite
simplificar la administración del catálogo de informes.
El mismo informe estará disponible para varios departamentos sin complicar las reglas de
administración de permisos. Por otro lado, el informe vinculado se comporta en todo
momento como un informe normal en la interfaz de usuario.
El informe vinculado también es práctico para crear una copia de un informe que tenga una
configuración por defecto diferente. En efecto, es posible modificar la configuración por defecto
del informe vinculado.
4. Instantánea (Snapshot)
En ocasiones es útil guardar un informe en una fecha concreta. Esto puede hacerse
mediante una exportación en formato PDF por ejemplo, pero también puede realizarse en el
servidor de informes gracias a las instantáneas.
ShareVideos
Es imposible crear una instantánea si falta un parámetro por defecto.
Las Opciones de instantánea son más ricas. Permiten planificar la creación de instantáneas
gracias a una planificación específica o compartida, y precisar el nombre de las instantáneas
que se quiere conservar en la base de datos.
La configuración por defecto del número de instantáneas que se quiere conservar forma parte de
la Configuración del sitio.
SSRS puede utilizar una instantánea para construir un informe (véase la sección Caché). En
este caso SSRS no lee los datos desde la base de datos de origen sino que usa directamente
el formato intermedio, almacenado en la base de datos SSRS, para producir el informe.
Esto puede configurarse en las Opciones de procesamiento del informe (véase la sección
Caché). Es posible escoger una planificación específica o compartida para la creación de
instantáneas.
5. Caché
Cuando se pide un informe, SSRS pregunta a la base de datos de origen, crea un informe
intermedio y a continuación un informe en el formato específico demandado. Si un minuto
después se solicita el mismo informe, estas operaciones van a tener que reproducirse en el
servidor de informes para producir el mismo resultado. Si la base de datos se actualiza de
forma diaria, seguramente el segundo informe no tiene ningún interés respecto al primero y
supone un uso de recursos inútil en la base de datos de origen y en el servidor de informes.
ShareVideos
Por naturaleza la caché tiene un tiempo de vida limitado. Su parámetro principal es el
momento de expiración, expresado bien por un tiempo de vida en minutos, o bien por una
planificación que iniciará su purgado.
Si la actualización del origen de datos está planificada lo lógico es iniciar el purgado de los datos de
caché después de esta actualización.
En cada pantalla hay que interpretar la Planificación como específica al informe (report-specific
schedule), y no a todos los informes. Una planificación que se comparte entre varios informes es
una planificación compartida.
El tiempo de espera es el ’timeout’ de ejecución del informe. La traducción no es del todo clara.
Antes de la versión SQL Server 2008 no era posible modificar la expiración de la caché. Se
creaban suscripciones para generar cachés, cargar la caché, pero esta solución no era
óptima. SQL Server 2008R2 aporta una novedad: los planes de actualización de caché.
Es habitual cargar la caché al menos para la configuración por defecto del informe, de modo que
se obtenga una visualización inmediata del mismo en IE. A continuación, el usuario cambiará los
parámetros si lo considera necesario.
Hay que distinguir bien entre caché e instantánea. A su vez, es conveniente recordar que ambos
elementos pueden utilizarse a la hora de ejecutar un informe. Por último, recuerde que la caché se
aplica a los informes y a los conjuntos de datos compartidos, gestionando correctamente su
configuración. Sin embargo, la instantánea está limitada a los informes y a su configuración por
defecto.
ShareVideos
Para acelerar la carga de las listas de parámetros en los informes, y evitar tener que
solicitarlos al origen de datos cada vez, cree conjuntos de datos compartidos para
inicializar estos parámetros del informe y programe su caché.
Si, durante su actualización, la base de datos no está disponible, cree una caché que
oculte a los usuarios finales esta interrupción momentánea del servicio.
Desarrollo avanzado
En el capítulo Alimentar el Data Mart se abordaron las principales funciones del ETL, con
el objetivo de alimentar una tabla de hechos y una dimensión. Es preciso presentar otras
funcionalidades avanzadas que pueden utilizarse en un proceso ETL.
En un flujo de datos ciertas transformaciones no funcionan más que con datos de entrada
ordenados. Es el caso de las transformaciones Combinación de mezcla y Fusión. Hay tres
posibilidades para que un flujo esté ordenado: bien el origen está ya ordenado, bien se usa
la transformación SSIS Ordenar, o bien se usa un desarrollo a medida, generalmente un
desarrollo propio.
La ordenación se declara en el camino de acceso del flujo de datos. Las propiedades de este
último se acceden haciendo doble clic en una flecha del flujo de datos entre dos
transformaciones, lo que provoca que se abra el Editor de rutas de flujo de datos. La página
de Metadatos muestra el detalle de los campos del flujo, donde la columna Posición de
criterio de ordenación define el criterio de ordenación. Los campos que contengan el valor
0 no intervienen en el orden. Para los demás, la cifra indicada define la posición del campo
en la clave de ordenación. Los datos se ordenan en primer lugar según la posición 1,
después según la posición 2...
ShareVideos
Por ejemplo, para configurar un origen de datos OLE DB, sobre la base de datos SQL
AdventureWorks, que contenga la siguiente consulta ordenada según tres columnas:
SELECT [StateProvinceID]
,[StateProvinceCode]
,[IsOnlyStateProvinceFlag]
,[StateProvinceName]
,[TerritoryID]
,[CountryRegionCode]
,[CountryRegionName]
FROM [Person].[vStateProvinceCountryRegion]
ORDER BY [StateProvinceID],[TerritoryID],[CountryRegionCode]
1. En el editor del flujo de datos, haga clic con el botón derecho y seleccione Mostrar
editor avanzado.
2. En el Editor avanzado para Origen OLE DB, seleccione la última pestaña
Propiedades de entrada y salida.
3. En la zona Entradas y salidas seleccione Salida de origen OLE DB.
4. Asigne a la Propiedad común llamada IsSorted el valor True.
Tras realizar estas modificaciones usted no habrá modificado la ordenación de los atributos,
simplemente habrá señalado a SSIS que se trata de datos ordenados.
2. Seguimiento de la producción
a. Registro (Logging)
SSIS posee un único sistema de Registro (Logging). Esta opción permite, cuando se lanza
el paquete DTSX en modo batch desde DTEXEC o SQL Agent, tener una traza del
ShareVideos
procesamiento. Esta traza es de categoría sistema, si bien es posible enriquecerla con
mensajes de aplicación.
Hay ocasiones en que el menú SSIS no se muestra completo. Si se diera el caso haga clic en la
superficie del paquete para situarse a nivel de paquete.
¿Justifica la creación de una traza el tener que usar toda esta riqueza funcional? Para facilitarle la
vida SSIS le proporciona en la pestaña Detalles dos botones Cargar y Guardar para cargar o
guardar una configuración.
ShareVideos
El menú SSIS - Registrar eventos permite mostrar en una ventana del estudio de desarrollo
las filas que se emiten al registro de eventos.
Para escribir en el registro mensajes de aplicación, use el elemento Tarea de script. El script
básico creado por defecto en SSIS muestra un ejemplo de cómo usarlo, en C#:
Esta llamada no tendrá ningún efecto siempre que no haya enlazado específicamente la tarea de
script en cuestión con el registro y haya seleccionado trazar el evento ScriptTaskLogEntry...
Esta configuración es un poco compleja para mostrar una simple fila en el registro de log,
es más rápido generar un evento en la tarea de script.
Usar una tarea de script para escribir un simple comentario en la traza es una solución algo
desproporcionada. La comunidad de desarrolladores proporciona una tarea dedicada en el
sitio Web CODEPLEX (véase
http://ssisctc.codeplex.com/wikipage?title=Other%20Tasks%20and%20Components%20av
ailable%20from% 20TheJoyOfCode&referringTitle=Home, Tasks and Components
available from The Joy of Code).
En la misma dirección encontrará una tarea que le permite modificar una variable a lo largo de la
ejecución de un flujo de control.
En el caso de un paquete padre que llama a un paquete hijo los eventos del paquete hijo se
devuelven al paquete padre. Es posible implementar el registro de eventos sólo a nivel del
padre. No obstante, implementarlo también a nivel del paquete hijo permite establecer el
enlace entre el registro y la ejecución del paquete hijo (identificado por la variable de
sistema ExecutionInstanceGuid).
El paquete hijo que implementa un registro de eventos supone un caso algo particular. En
este caso el administrador de configuraciones del registro también debe configurarse. SSIS
presenta una limitación a este respecto: no puede escribir en el registro si éste no ha sido
configurado. La configuración del paquete padre no funciona. Esta situación puede
resolverse usando una configuración XML indirecta para cargar el administrador de
configuraciones del registro. Este tipo de configuración se administra en SSIS.
ShareVideos
Toda la información detallada acerca del Registro está disponible en MDSN (véase
http://msdn.microsoft.com/es-es/library/ms138020.aspx, Implementar inicios de sesión en
paquetes).
En CODEPLEX encontrará una aplicación para analizar los registros generados (véase
http://ssisloganalyzer.codeplex.com/, SSIS Log Analyzer).
b. Auditoría
En la fase de concepción del ETL la auditoría designa la actividad opcional que permite
trazar integralmente los datos en el DW hasta el usuario final. La auditoría generalmente
permite alcanzar los siguientes objetivos:
Datación del dato y posibilidad de reagrupar todos los datos del mismo lote.
Calidad: igual que en un entorno industrial, cada registro que se crea está
identificado por un número de lote, y su recorrido dentro de la cadena de
producción de los registros puede trazarse hasta el origen.
Estadística de rendimiento del proceso de integración, estadísticas en general,
recuento de errores o del número de filas por tablas.
Cuadro de mando de la carga ETL: ¿el procesamiento del día ha terminado con
errores? ¿Por qué?
Detección de problemas: un tiempo de procesamiento que aumenta para un volumen
constante de datos de entrada puede revelarnos la necesidad de corregir algún
índice.
Para ayudar al desarrollador en esta tarea SSIS proporciona una transformación de flujo de
datos llamada Auditoría. Esta transformación no hace más que agregar campos al flujo de
datos, inicializados por variables del sistema SSIS. Los campos disponibles en la tarea
Auditoría son: GUID de instancia de ejecución (ExecutionInstanceGuid), ID del paquete
(PackageID), nombre del paquete (PackageName), ID de versión (VersionGUID), hora de
inicio de la ejecución (StartTime), nombre de la máquina (MachineName), nombre del
usuario (UserName), nombre de la tarea (TaskName) e ID de la tarea (TaskID).
La variable ExecutionInstanceGuid permite establecer el enlace con una traza del registro. A partir
de la auditoría y del registro es posible construir una consola de seguimiento de producción
completa, aunque su desarrollo corre por cuenta propia.
En el caso de una tabla de hechos que contenga varios millones de filas no es factible
agregar información sobre cada fila en el registro. Una solución más elegante consiste en
crear una clave de auditoría, haciendo el enlace entre la tabla y la información de auditoría.
El principio consiste en crear una tabla de auditoría con una clave de tipo entero
autoincrementada, ClaveAuditoria por ejemplo. Cada tabla de hechos (normalmente
alimentada sólo en inserción) agregará un campo nuevo ClaveAuditoria. Se agregan dos
ShareVideos
campos a las demás tablas: ClaveAuditoriaInsercion y ClaveAuditoriaActualizacion. Al
comenzar cada procesamiento ETL se crea una fila nueva en la tabla de auditoría con toda
la información pertinente y útil. Se devuelve el valor de la clave de auditoría, que se usará a
lo largo del procesamiento para informar los campos ClaveAuditoria,
ClaveAuditoriaInsercion y ClaveAuditoriaModificacion. Al finalizar el procesamiento la
fila de la tabla de auditoría se actualiza con el resultado del procesamiento, la estadística del
número de inserciones, de errores, etc.
Este esbozo es un punto de partida y debería enriquecerse con sus propias necesidades al
respecto. Un único registro de auditoría que realice el seguimiento de la alimentación de 10 tablas
de hechos y 50 dimensiones no es suficiente para observar de manera fina el conjunto del sistema
ETL.
a. Transacción
Las transacciones SSIS se basan en el uso de DTC (o MSDTC). Sólo es posible incluir en las
transacciones aquellos servicios que implementen DTC.
SSIS permite definir una transacción a cualquier nivel en el flujo de control: de paquete, a
nivel de tarea o de contenedor de tareas. Cada uno de estos componentes tiene la propiedad
TransactionOption que puede tomar los siguientes valores:
ShareVideos
La configuración de las transacciones no desciende a nivel de flujo de datos. SSIS permite definir la
configuración por flujo de datos, pero no en el interior del flujo de datos, incluso si este último
contiene destinos diferentes.
b. Checkpoint
El checkpoint tiene como objetivo interrumpir parte del flujo de control cuando se devuelve
un error. Puede usarse para hacer frente a incidentes técnicos, como una caída del servidor
FTP en el que se depositan los archivos al finalizar la ejecución, pero también a problemas
de alimentación de los datos.
Es complicado implementar esta funcionalidad para incidentes ligados a los datos. Precisa por un
lado de la corrección del dato erróneo hacia atrás en el flujo y, por otro lado, la gestión coherente
de las transacciones. El checkpoint parece más adecuado para gestionar problemas externos al
flujo de datos como por ejemplo un problema de escritura del archivo porque no se poseen los
permisos necesarios, o porque no hay respuesta por parte del servidor FTP. Si el procesamiento
SSIS ha generado varias decenas de informes y tiene que depositarlos en un servidor FTP es una
lástima tener que relanzar el procesamiento completo por un incidente en la conexión.
Se puede activar esta funcionalidad en las propiedades del paquete SSIS. Para ello la
propiedad SaveCheckpoints debe tomar el valor True. En este caso la propiedad
CheckpointFileName tiene que definir un archivo, aunque puede informarse mediante una
fórmula en la propiedad Expressions.
ShareVideos
Never: el flujo de control se inicia siempre de la misma forma exista o no un
archivo testigo. Es la opción por defecto.
IfExists: toma en cuenta la existencia de un eventual archivo de control, para iniciar
a partir del punto de control indicado en el archivo. Si no existe se ejecuta el
paquete con normalidad.
Always: no inicia si no existe un archivo testigo, y lo hace a partir del punto de
control indicado en él.
Para crear un punto de control, fije a True la propiedad FailPackageOnFailure de una tarea
o de un contenedor.
Crear una transacción sobre un contenedor que contenga un punto de control permite gestionar la
transacción y la recuperación frente a errores para un mismo conjunto de tareas.
4. Eventos
Cada paquete contiene un flujo de control principal. Aun así es posible agregar otros flujos
de control para responder a eventos gracias a la pestaña Controladores de eventos del editor
SSIS en el estudio de desarrollo.
Un posible uso de los eventos consiste en registrar los errores y advertencias en una tabla
de la aplicación, enviar una alerta por correo electrónico en caso de error, o incluso limpiar
la base de datos de destino cuando se interrumpe el procesamiento fuera de una transacción.
5. Formatos internacionales
SSIS gestiona los parámetros regionales a todos los niveles del flujo de control y del flujo
de datos, a excepción de ciertos tipos de origen y de destino. En un mismo paquete pueden
existir varias tareas que usen parámetros regionales distintos. La propiedad que se utiliza
para fijar estos parámetros es LocaleID. Esta propiedad se hereda por defecto del padre.
Para los administradores de conexión, se fija igualmente un CodePage (o Página de
códigos) si no se trata de Unicode.
ShareVideos
La gestión de LocaleID en el estudio de desarrollo SSIS no mantiene coherencia respecto al resto
de propiedades. El LocaleID tiene valor en todo momento, se herede o no del padre. Habría sido
práctico identificar esta herencia mediante un valor especial como es el caso de otras
propiedades. Aparte de los componentes del flujo de datos donde la propiedad IsDefaultLocale
aparece o no en modo de sólo lectura para indicar si el componente hereda o no de su padre, la
tarea del flujo de datos, es imposible saber si el valor ha sido fijado o heredado.
En el momento de leer un origen de tipo archivo de texto es probable que contenga campos
de tipo fecha o valores decimales sensibles a la localización. El diseñador debe adaptar el
valor de la propiedad LocaleID del administrador de conexiones de forma consecuente.
En este caso el nivel más fino es la conexión, y no la columna. Si en un mismo origen de datos
existen dos columnas expresadas en dos formatos internacionales distintos, por ejemplo una fecha
en español y un valor decimal en inglés, uno de los dos campos habrá que convertirlo mediante
una expresión.
En ciertos casos extremos donde las filiales internacionales produzcan los mismos archivos
con sus parámetros regionales diferentes, SSIS permite modificar dinámicamente en tiempo
de ejecución el valor de la propiedad LocaleID, por ejemplo mediante configuración.
Producción
SSIS, contrariamente a MSSQL, SSRS y SSAS, no es un servidor sino un entorno de
ejecución runtime. Su uso y su despliegue necesitan precisar algunos puntos.
1. Arquitectura
Además del estudio de desarrollo, que se usa para la concepción de paquetes, SSIS está
constituido principalmente por dos componentes:
ShareVideos
paquetes registrados en ambos almacenes de paquetes (véase Almacén de paquetes):
la base de datos MSDB y el sistema de archivos. La administración los paquetes se
limita a las siguientes operaciones: cargar en un almacén, ejecutar, renombrar,
suprimir, exportar, actualizar y administrar la seguridad.
2. Almacén de paquetes
En cualquier lugar del sistema de archivos que sea visible por el runtime.
En el almacén de paquetes, administrado por el servicio SSIS, del sistema de
archivos.
En el almacén de paquetes, administrado por el servicio SSIS, de la base de datos
SQL de sistema MSDB.
Las dos soluciones administradas por el servicio SSIS se pueden configurar en el archivo
MsDtsSrvr.ini.xml presente en la carpeta C:\Program Files\Microsoft SQL
Server\100\DTS\Bin (en el caso de una instalación por defecto en el disco C:).
Esta configuración aplica al servicio y no tiene impacto sobre la ejecución del runtime. La única
forma de actuar sobre los paquetes en producción consiste en modificar las propiedades del
interior de los paquetes, generalmente mediante sus configuraciones.
ShareVideos
tener en cuenta las nociones de copia de seguridad y de plan de recuperación frente a fallos
con su DBA para poder escoger.
Esta elección tiene un fuerte impacto en el desarrollo a la hora de invocar a los paquetes hijos. En
un caso la conexión es de tipo archivo con una ruta completa, mientras que en el otro la conexión
es de tipo OLE DB. A la hora de usarlo, OLE DB evita tener que realizar una gestión de la
configuración de la ruta del paquete hijo, aunque en tiempo de desarrollo no se permite trabajar
con la base MSDB. Ninguna solución es del todo perfecta. Esta complejidad en el uso de SSIS nos
impide concentrarnos en el verdadero núcleo del negocio. Si escoge la solución MSDB, la
herramienta BIDS Helper, que puede descargar de CODEPLEX, puede simplificarle la tarea (véase
http://bidshelper.codeplex.com/wikipage?title=Deploy%20SSIS%20Packages&
referringTitle=Home&ProjectName=bidshelper, BIDS Helper). Para desplegar los paquetes en
MSDB antes que su ejecución desde el estudio de desarrollo, use la opción CmdLineArguments de
la página Depurar en las propiedades del proyecto e invoque a la herramienta dtutil.exe (véase
DTUTIL).
3. Runtime
Generalmente los procesos ETL se planifican a horas regulares. SQL Agent permite
planificar una ejecución desde la interfaz de DTEXECUI en una etapa de tipo Package SQL
Server Integraton Services. No obstante, es posible ejecutar un paquete SSIS desde
cualquier herramienta de programación susceptible de ejecutar un archivo de comandos.
Basta con lanzar DTEXECUI, desde el menú Inicio: Inicio - Microsoft SQL Server 2008
R2 - Integration Services - Execute Package Utility, para darse cuenta de la riqueza de
configuración del runtime.
ShareVideos
Las buenas prácticas oficiales se basan en el uso de configuraciones que inicializan las
variables del paquete, ligadas ellas mismas a propiedades basadas en expresiones. Aunque
si no se respeta esta norma DTEXEC y DTEXECUI permiten igualmente:
En el caso de un paquete padre que llama a paquetes hijos la configuración que se pasa en la
llamada desde DTEXEC aplica únicamente al paquete padre. Use las configuraciones de tipo
variable del paquete padre para pasar los parámetros a los paquetes hijos.
Las configuraciones implementadas por DTEXEC son únicamente de tipo XML directo
(véase el capítulo Alimentar el Data Mart). Se cargan después de las configuraciones
definidas en el paquete.
4. Despliegue
a. Utilidad de implementación
El proyecto SSIS puede configurarse en el estudio de desarrollo para generar una Utilidad
de implementación.
ShareVideos
2. Seleccione la página Utilidad de implementación.
3. Establezca la propiedad CreateDeploymentUtility a True para solicitar la creación
de la herramienta.
Esta herramienta se creará tras cada generación del proyecto (menú Generar) en la carpeta
indicada en la propiedad DeploymentOutputPath.
Para desplegar los paquetes, basta con copiar la carpeta de la utilidad en el destino y hacer
doble clic en el archivo manifiesto. Esta acción inicia la ejecución del programa
dtsintall.exe.
Este último propone copiar los paquetes bien en el sistema de archivos o bien en el almacén
MSDB. Los archivos de configuración y las demás dependencias se copian en el sistema de
archivos.
b. DTUTIL
ShareVideos
Devuelve los códigos siguientes:
0: Éxito
1: Error
4: No se ha encontrado el paquete
5: Es imposible cargar el paquete
6: Error de sintaxis
5. Rendimiento
Como no existen propiedades a nivel del servicio, la mejora del rendimiento en la ejecución
de los flujos de datos se hace a nivel de paquete.
El rendimiento depende en gran medida de la plataforma, por lo que es difícil adivinar qué
propiedades es preciso modificar en los programas para mejorar el rendimiento...
Afortunadamente esto puede llevarse a cabo gracias a las configuraciones sin tener que modificar
el código fuente.
La tarea del flujo de datos está concebida para trabajar en memoria. Por este motivo trabaja
con un buffer y carga en memoria un lote completo de registros. En ciertos casos el tamaño
puede ser tal que SSIS se encuentre obligado a escribir estos buffers en el disco duro: trate
de evitar esta situación. Un primer ajuste para su optimización consiste en usar buffers
grandes de modo que SSIS genere la menor cantidad posible, sin empezar a escribir en el
disco.
Antes de tener que llegar a estos ajustes se espera que el paquete haya limpiado todas las
columnas inútiles y que el tipo de las columnas esté configurado de forma ajustada. Por ejemplo,
el buffer no trabaja con cadenas de tamaño variable, sino de tamaño fijo. Así el uso de una cadena
de 500 caracteres en lugar de 5 caracteres tiene consecuencias nefastas en el rendimiento.
Toda la información útil para mejorar el rendimiento de los flujos de datos está disponible
en technet (véase http://technet.microsoft.com/es-es/library/ms141031.aspx, Mejorar el
rendimiento del flujo de datos).
Presentación
ShareVideos
PowerPivot es una solución de Microsoft que permite realizar cálculos OLAP en memoria.
Se basa en una tecnología integrada en el motor SSAS, llamada VertiPaq. Hasta el
momento, el motor SSAS permitía realizar análisis OLAP en formato relacional (ROLAP),
multidimensional (MOLAP) o híbrido (HOLAP). Con la nueva edición de SQL Server el
motor SSAS integra el OLAP en memoria.
Por el contrario, igual que en las anteriores versiones de SSAS, la tecnología VertiPaq está
totalmente soportada por el cliente MS OLAP. Si antes era posible crear y explotar cubos
locales SSAS únicamente con el cliente, ahora es posible construir carpetas PowerPivot. A
diferencia del cubo local, la carpeta PowerPivot contiene la aplicación de BI más los datos,
es decir las tablas y los gráficos dinámicos para leer los datos.
Este libro no considera los cubos locales. El porvenir de esta tecnología no parece muy claro tras la
aparición de PowerPivot, con mejor rendimiento, menos voluminoso y más rico en
funcionalidades.
1. Despliegue
PowerPivot puede utilizarse de forma gratuita siempre que se esté en posesión de una
licencia Excel 2010, descargando el componente completo (véase
http://www.powerpivot.com/). Gracias a esta licencia, el usuario puede construir carpetas
PowerPivot sin mayor limitación que los recursos del puesto local.
Las carpetas PowerPivot con carpetas Excel que contienen además datos OLAP. A este
respecto, pueden difundirse como cualquier otro archivo (de gran tamaño): por carpeta
compartida en red, en un servidor de archivos, en un portal Web como SharePoint. La
compresión de los datos OLAP registrados en PowerPivot es muy eficaz, aunque no parece
apropiado enviar por correo electrónico una carpeta que contenga algunas decenas de miles
de filas.
Hasta aquí, PowerPivot para Excel supone una solución económica para la empresa, incluso
gratuita si los puestos de usuario ya tienen una licencia de Excel 2010.
ShareVideos
La distribución en un portal SharePoint de compartición.
El acceso desde un cliente ligero gracias a SharePoint Excel Services, que permiten
leer los datos sin tener instalado Excel.
El procesamiento regular y la actualización de los datos OLAP incluidos en las
carpetas PowerPivot en el motor SSAS VertiPaq.
La carga de la caché de datos para acelerar las lecturas.
La interfaz de administración completa del conjunto.
La plataforma PowerPivot para SharePoint está compuesta por servidores SQL Server 2008
R2 edición Entreprise o superior, y SharePoint 2010 edición Entreprise. Se ha construido
específicamente para evolucionar fácilmente en cuanto a potencia.
2. El BI en autoservicio
Esta oferta no supone una alternativa respecto a la oferta tradicional, sino que la
complementa. La creación de carpetas PowerPivot se basa en datos preparados. Por un lado
sería ilusorio esperar poder usar esta tecnología directamente sobre una base de datos
OLTP no desnormalizada. Por el contrario, aprovecha la potencia de los Data Marts ya
desnormalizados o de archivos planos. Por otro lado, el equipo decisional podrá usarla para
construir y difundir informes dinámicos que ya forman parte de la oferta de Microsoft.
El informe dinámico se basa generalmente en una capa de presentación que lanza consultas sobre
una base de datos en función de la interacción con el usuario. La solución PowerPivot unifica
ambas, y está disponible en el formato de una hoja de cálculo Excel para los diseñadores o los
puestos portátiles. Se difunde en modo Web en el seno de la empresa.
PowerPivot responde a la problemática de los puestos portátiles que hasta ahora tenían que
usar cubos locales con un cliente pesado, bien Excel o bien una aplicación de terceros.
PowerPivot va mucho más allá que un cubo local puesto que tiene en cuenta no sólo los
datos y su restitución sino también su producción y su difusión.
La cuota de mercado de OLAP en memoria es cada año mayor. Microsoft no podía dejar sin
respuesta esta demanda. El eslogan Self-service Business Intelligence es puro marketing... En la
realidad se trata de proporcionar la capacidad de hacer análisis en memoria en el puesto de
trabajo con la posibilidad de compartir este análisis en un portal corporativo.
ShareVideos
3. Principios de PowerPivot
El diseño de una hoja de cálculo PowerPivot se divide en dos partes: preparar de los datos y
dar formato del informe.
Preparar los datos consiste en cargar los datos y crear un modelo OLAP en memoria.
Dar formato al informe es una actividad dedicada a la creación en una hoja Excel de un
cuadro de mando y las gráficas dinámicas en base a estos datos.
Se añade un conjunto de datos OLAP a la hoja Excel: PowerPivot. Está representado por
una ventana dedicada separada de la hoja de cálculo.
Esta ventana de PowerPivot permite importar tablas a partir de los orígenes de datos.
ShareVideos
Las tablas están constituidas por columnas. La ventana de PowerPivot muestra cada tabla
en una pestaña. Cada tabla es similar a una hoja de cálculo de Excel en modo de sólo
lectura. En cada tabla el usuario puede:
Igual que para el cubo SSAS, es muy importante lograr que el usuario final no se ahogue en una
cantidad demasiado grande de atributos.
Crear una columna calculada: el usuario puede introducir una fórmula DAX a la
derecha de la tabla para generar automáticamente una columna. El lenguaje DAX es
un nuevo lenguaje dedicado a PowerPivot. Es la síntesis entre MDX y las funciones
Excel.
Crear una relación con otra tabla. El predecesor de PowerPivot es la tabla de
referencias cruzadas que funcionaba a partir de una tabla plana completamente
desnormalizada. PowerPivot soporta la creación de relaciones entre tablas, lo que
permite crear modelos en estrella, más complejos. Se crea una relación entre una
tabla y una tabla de búsqueda. No soporta claves de búsqueda compuestas. Si una
relación se basa en varias columnas es preciso crear en ambas tablas una columna
calculada que permita construir una clave de síntesis única.
Para crear una relación, la columna de la tabla de búsqueda no debe contener valores vacíos
(BLANK).
ShareVideos
Trate de cargar en PowerPivot solamente datos útiles. Elimine aquellas columnas que no se
utilicen y filtre las filas.
Una vez se ha realizado este trabajo de preparación de los datos, el cubo está creado en
memoria.
Si bien forma parte del modelo de datos PowerPivot, Microsoft ha considerado más claro situar la
administración de las medidas en la hoja Excel y no en la ventana de PowerPivot.
Es fácil realizar varias iteraciones entre la preparación del formato en la hoja Excel y la preparación
de los datos en la ventana de PowerPivot para afinar el modelo de datos.
Con PowerPivot para Excel, Microsoft pone al fin a disposición de los usuarios una herramienta
verdaderamente sencilla para modelar los informes analíticos. El diseño del modelo en PowerPivot
no tiene nada que ver con el trabajo de creación de la base de datos SSAS o de un informe SSRS en
BIDS. Los conceptos que se explican más arriba son mucho más sencillos.
El informe PowerPivot está constituido por tablas dinámicas (TD), gráficos dinámicos y
segmentos. Estos objetos estándar de Excel, a diferencia de las TD, poseen dos zonas más:
las segmentaciones de datos verticales y las segmentaciones de datos horizontales.
Es igual para los gráficos, que se construyen a partir de TD. Para cada gráfico dinámico que
creemos Excel genera una TD en una pestaña. A menudo se aconseja ocultar estas pestañas.
ShareVideos
Las segmentaciones de datos verticales crean los segmentos a la izquierda, y las
horizontales crean segmentos encima (véase la sección Funcionalidades de Excel).
Libros PowerPivot
A primera vista no hay nada que permita distinguir un libro PowerPivot de un libro Excel
2010 estándar. Se apoya por un lado en funcionalidades estándar de Excel, y por otro en un
complemento dedicado, que se utiliza en la etapa de concepción del modelo de datos.
1. Funcionalidades Excel
Los segmentos (en inglés, slicers): los segmentos son una novedad de Excel 2010,
ligados a la construcción de tablas dinámicas (TD) y de gráficos. El segmento se
comporta como un filtro sobre los datos, aunque su interfaz de usuario es
funcionalmente más rica: se adapta al contexto del conjunto de los datos que filtra.
Un filtro permite escoger aquellos miembros de una columna para filtrar el conjunto
de datos en base a ellos. Cuando hay varios filtros aplicados sobre un mismo
conjunto de datos, el segmento indica visualmente los miembros presentes en la
selección en curso.
ShareVideos
Contrariamente a un filtro de informe, un segmento puede filtrar varios TD y
gráficos.
Las tablas dinámicas (o PivotTable): las TD son muy conocidas entre los usuarios
de datos SSAS.
Los gráficos dinámicos: los gráficos ofrecen una visualización gráfica de la TD.
Como siempre, el gráfico requiere una TD para funcionar, y este sigue siendo el
caso en Excel 2010.
Las fórmulas de cubo: aparecidas en Excel 2007, las fórmulas de cubo permiten
visualizar los datos de un origen de datos SSAS en una celda. Con Excel 2010,
funcionan también con la fuente de datos PowerPivot.
2. Funcionalidades PowerPivot
ShareVideos
Administrar las columnas de las tablas en el menú Columna.
Crear informes Excel usando el menú Vista.
Ejemplo DADS
1. Presentación del ejemplo
El archivo de detalle con el que trabajaremos, DADS 2006 - puestos y salarios -, está
compuesto de un muestreo de datos individuales anonimizados, resultado de la explotación
estadística de las Declaraciones de Renta Anuales en Francia. Estos datos permiten realizar
un análisis de los empleos y los salarios según la naturaleza del empleo (duración, tipo de
contrato, remuneración...), las características del trabajador (sexo, edad, formación...) y del
empresario (sector de actividad, lugar de implantación, tamaño...).
Estos archivos han sido adaptados al castellano y están disponibles para la descarga en los
archivos complementarios de descarga de este libro en este capítulo. Los archivos
originales en formato dBase pueden encontrarse en la página Web del INSEE (véase
http://www.insee.fr/fr/themes/detail.asp?ref_id=fd-dads2006, DADS - puestos y salarios -
2006).
El formato dBase puede abrirse directamente en Excel como un libro. También puede importarse a
través de un origen de datos ODBC.
El conjunto de archivos y de datos está descrito con precisión en el sitio Web de INSEE
(véase http:// www.insee.fr/fr/themes/detail.asp?ref_id=fd-
dads2006&page=fichiers_detail/DADS2006/description. htm, Description des fichiers).
Cree una carpeta para guardar los datos, por ejemplo C:\INSEE.
ShareVideos
Descargue el archivo nacional de puestos de trabajo en Francia para 2006 en
formato dBase (DADS2006_postes06_dbase.zip) de los archivos complementarios
de descarga de este libro.
Descomprima el archivo en la carpeta creada, se crea el subdirectorio
C:\INSEE\DADS2006_postes06_dbase.
postes06.dbf: contiene los registros que describen los puestos de trabajo en 2006.
varlist_postes06.dbf: contiene la lista de variables (columnas) del archivo.
varmod_postes06.dbf: contiene, para cada variable, la descripción de las
modalidades, es decir los valores que puede tomar la variable.
varmod_postes06.xlsx: contiene, para cada variable, los valores que puede tomar,
adaptados al castellano.
Ciertas variables puede que no estén informadas. En este caso el campo se deja vacío. Se define
una modalidad vacía.
En nuestro ejemplo nos interesaremos por las variables siguientes como ejes de análisis:
ShareVideos
Como un archivo no representa más que a la doceava parte de los puestos totales nacionales
se aplica una corrección para crear una medida llamada número de puestos corregido. La
corrección se aplicará sobre el primer nivel de la Nomenclatura económica de síntesis. Para
cada una de las cinco modalidades se aplica un coeficiente corrector que nos permite
ponderar cada puesto ligado a esta modalidad.
Puestos de trabajo
1. La pantalla Seleccionar origen de datos permite crear un origen de datos. Haga clic
en Nuevo.
2. Seleccione el driver dBase Microsoft dBase driver (*.dbf). Haga clic en Siguiente >.
3. Indique el nombre del archivo origen de datos: EjemploDads y haga clic en
Siguiente >.
4. Haga clic en Finalizar.
5. En la ventana Configuración de ODBC dBASE, desmarque la casilla Usar el
directorio actual y Seleccione el directorio que contenga los datos:
C:\insee\DADS2006_postes06_dbase.
ShareVideos
1. Haga clic en Aceptar.
2. Seleccione el origen de datos creado y haga clic en Aceptar dos veces para volver a
la pantalla Propiedades de vínculo de datos.
3. En la zona Escriba el catálogo inicial introduzca de nuevo la ruta de los datos:
C:\insee\DADS2006_postes06_dbase.
Es preciso cargar toda la tabla, y aunque no hemos aplicado ningún filtro sobre sus filas hay no
obstante muchas columnas que son inútiles para nuestro análisis.
ShareVideos
Esta etapa ha sido algo complicada por el hecho de la creación de una conexión a la base de datos
en formato dBase, que requiere cierta configuración de las capas ODBC de Windows. Sin duda le
será más sencillo consultar una fuente de datos SQL Server por ejemplo.
Teóricamente es posible importar estas modalidades en una tabla aplicando el mismo método que
cuando antes hemos aplicado un filtro sobre la variable Sexo. El driver dBase proporcionado por
Windows no es suficiente.
1. Valide haciendo clic en Aceptar. El usuario final no verá más que el campo Sexo.
Falta por enlazar esta tabla con la tabla de hechos mediante una relación.
ShareVideos
1. Valide haciendo clic en el botón Crear.
Para crear una muestra, importaremos los datos en una hoja del libro PowerPivot.
A B C
1 CODIGO NES5 Coeficiente
2 N/A No informado 12
3 ES Agricultura 12
4 ET Industria 12
5 EU Construcción 12
6 EW Comercio 12
7 EX Servicios 12
Para importar esta tabla en PowerPivot, hay que crear una tabla vinculada, de modo que el
usuario pueda modificar los coeficientes y observar el impacto de su modificación.
ShareVideos
1. Aparece la ventana Crear una tabla. Asegúrese que la casilla Mi tabla tiene
encabezados está marcada. Valide haciendo clic en Aceptar.
2. La Ventana de PowerPivot contiene una nueva pestaña Tabla1. Renómbrela por
NES5. Un pequeño icono en la pestaña identifica que se trata de una tabla
vinculada.
Para crear el vínculo con la tabla de hechos, es preciso reemplazar el valor vacío de la tabla
de hechos por el valor N/A. Esta operación se realiza creando una columna calculada.
El coeficiente es útil para calcular el número de puestos corregido, es decir la suma de los
coeficientes. Para ello vamos a incluir este valor en la tabla de hechos.
=RELATED(NES5[Coeficiente])
ShareVideos
Los posibles valores de esta variable están definidos en el archivo varmod_postes06.xlsx.
Si leemos el archivo comprobamos que no existen valores no informados.
PowerPivot gestiona muy bien los valores vacíos en la tabla de hechos siempre y cuando no
haya valores vacíos en la columna de la tabla de búsqueda.
Para crear esta tabla copiaremos sus datos, salvo el valor vacío, y los pegaremos
directamente en la Ventana de PowerPivot.
Repita las operaciones anteriores para NES36 (no posee valores vacíos).
Repita las operaciones anteriores para TREFF (equivalente al tamaño de la empresa, tiene
un valor vacío que no debe copiarse).
Repita las operaciones anteriores para TRBRUTO (equivalente al salario bruto, no posee
valores vacíos).
ShareVideos
Repita las operaciones anteriores para DOMEMPL (tiene un valor vacío que no debe
copiarse).
Repita las operaciones anteriores para FILT (no posee valores vacíos).
Ya hemos creado todas las relaciones del esquema en estrella. Quedaría ocultar las
columnas de relación en la tabla de hechos y preparar los valores.
Ciertas columnas de claves, como CS, son enteros importados en modo texto. Una conversión de
estas columnas en las tablas de hechos y de búsqueda supone una optimización que deberíamos
considerar.
El juego de datos de PowerPivot está listo. Sólo queda agregar las medidas calculadas en la
ventana del libro Excel. Esta operación no puede hacerse mientras no se ha creado un
informe.
ShareVideos
1. Haga clic en Aceptar para crear la medida.
Por último, el Número de horas medio debe tener en cuenta el hecho de que ciertas
categorías no informan esta columna.
El informe que hemos creado está compuesto por un gráfico y una TD. Ambos
componentes son independientes aunque pueden tener columnas en común. Los segmentos
están definidos gracias a las zonas segmentaciones de datos verticales y segmentaciones de
datos horizontales del panel llamado Lista de campos de PowerPivot.
Excel crea automáticamente tres segmentos en la parte izquierda de la hoja. Puede observar
que seleccionando un valor de NES5, NES16 y NES36 se actualizan los datos
automáticamente. Esta relación se efectúa a nivel de la tabla de hechos (que contiene 3
millones de filas).
ShareVideos
En este paso puede verificar el impacto que tiene una modificación del coeficiente en la Hoja1
sobre los datos visualizados.
Los segmentos creados están vinculados a los dos componentes. Es posible modificar esta
configuración para ligar un segmento sólo a un componente, o bien para ligarlo a otros situados
quizá en otras hojas del libro Excel. Para determinar las conexiones de un segmento seleccione
uno de ellos en la hoja Excel y busque la opción: Segmento, Herramientas de Segmentación de
datos, Opciones, conexiones de tabla dinámica.
Observe que el libro pesa algo menos de 8 Mb, tamaño habitual y aceptable para un cubo más un
informe de 2,8 millones de filas.
4. Publicación en SharePoint
Publicación como un documento normal, que los usuarios pueden abrir siempre y
cuando tengan Excel 2010 instalado más el Add-In de PowerPivot para Excel.
Publicación sobre Excel Services y PowerPivot para SharePoint.
Excel Services por sí solo no soporta PowerPivot, necesita el componente PowerPivot para
SharePoint con el motor SSAS VertiPaq (véase http://msdn.microsoft.com/es-
es/library/ee210653.aspx, Componentes y herramientas de PowerPivot).
ShareVideos
3. Seleccione una Ubicación y a continuación haga clic en Guardar como.
4. Seleccione el nombre.
5. Para realizar una publicación basada en Excel Services haga clic en el botón
Opciones de Excel Services. Esta pantalla le permite seleccionar las hojas que
quiere publicar.
Cuando se crea un libro para publicarlo en Excel Services con PowerPivot para Sharepoint,
se aconseja respetar cierto número de puntos (véase http://technet.microsoft.com/es-
es/library/ee835561.aspx, Guardar en SharePoint).
Una vez se ha publicado el libro sobre Excel Services con PowerPivot para Sharepoint,
PowerPivot proporciona las siguientes opciones:
ShareVideos