Manual 2016-I 05 Inteligencia de Negocios Lab (0561) PDF
Manual 2016-I 05 Inteligencia de Negocios Lab (0561) PDF
Manual 2016-I 05 Inteligencia de Negocios Lab (0561) PDF
Negocios
(Laboratorio)
INTELIGENCIA DE NEGOCIOS 2
Índice
Presentación 5
Red de contenidos 7
Unidad de Aprendizaje 1
APLICACIONES MICROSOFT DE BUSINESS INTELLIGENCE 8
1.1 Tema 1 : Introducción 9
1.1.1 : SQL Server como herramienta de diseño en soluciones BI 9
1.1.2 : Revisión de los servicios SSAS, SSIS, SSRS y SQL Server
: Agent 11
1.1.3 : Revisión del DW AdventureWorks 2014 16
Unidad de Aprendizaje 2
IMPLEMENTACIÓN DE SOLUCIONES OLAP CON MICROSOFT SQL
SERVER 2014 37
2.1 Tema 3 : Definición de estructura de Dimensiones 38
2.1.1 : Creando Dimensiones 38
2.1.2 : Definiendo tipos de Dimensiones 40
2.1.3 : Definiendo jerarquías 49
2.1.4 : Creando dimensión de tiempo 65
2.1.5 Agrupando miembros de un atributo 70
Unidad de Aprendizaje 4
GENERANDO REPORTES Y CONSULTAS MDX 208
4.1 Tema 9 : MDX 209
4.1.1 : Introducción a MDX 209
4.1.2 : Consulta de cubos a través de MDX 209
4.1.3 : Concepto de tuplas y sets 213
4.1.4 : Funciones en MDX 214
4.1.5 : Filtra y ordena resultados 227
Presentación
Este material esta unidades de aprendizaje. Cada unidad tiene objetivos, contenidos y
actividades que permitirán afianzar el logro de los objetivos.
Las unidades de aprendizaje han sido elaboradas, también, sobre la base de diversos
textos sobre el tema y publicaciones en Internet que aparecen en la bibliografía del
curso. Estos resúmenes, en algunos casos, contienen copias literales de fragmentos
de estas fuentes, los cuales han sido complementados con comentarios del autor para
un mejor entendimiento del tema.
Red de contenidos
DATA WAREHOUSING
INDICADORES
ARQUITECTURA
CONSTRUCCIÓN
ANÁLISIS DE ACCESO AL
REQUERIMIENTO DATA
Y FUENTES WAREHOUSE
METODOLOGÍA
METADATOS
MODELAMIENTO CONSULTAS
Y OLAP MINERIA
DISEÑO DE DATOS
BIG DATA
POBLANDO EL HADOOP
DATA MACHINE
WAREHOUSE LEARNING
UNIDAD
1
APLICACIONES MICROSOFT DE
INTELIGENCIA DE NEGOCIOS
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno conocerá de forma preliminar las
herramientas de Business Intelligence de Microsoft.
TEMARIO
1.1 Tema 1 : Introducción
1.1.1 : SQL Server como herramienta de diseño de soluciones de BI
1.1.2 : Revisión de los servicios SSAS, SSIS, SSRS y SQL Server Agent
1.1.3 : Revisión del Data Warehouse AdventureWors 2014
ACTIVIDADES PROPUESTAS
INTRODUCCIÓN
1.1.1. SQL Server como herramienta de soluciones BI
Herramienta Enterprise Reporting que satisface los 3 niveles del ciclo de vida de
reportes empresariales: Creación, Administración y Envío.
SQL Server Reporting Services ofrece una gama completa de herramientas y servicios
para crear, implementar y administrar informes para el negocio. Reporting Services
incluye características de programación que permite ampliar y personalizar la
funcionalidad de informes.
Servicio de maestro de datos que consolida las tablas principales en un solo servidor.
Master Data Services (MDS) es la solución de SQL Server para la gestión de datos
maestros. Gestión de datos maestros (MDM) describe los esfuerzos realizados por
una organización para descubrir y definir listas no transaccionales de datos, con el
objetivo de compilar listas maestras mantenibles. Un proyecto de MDM generalmente
incluye una evaluación y reestructuración de los procesos de negocio internos junto
con la implementación de la tecnología MDM. El resultado de una exitosa solución
MDM es de datos fiables y centralizados que puede ser analizada, lo que resulta en
mejores decisiones para el negocio.
Power BI.-
1.1.2. Revisión de los servicios SSAS, SSIS, SSRS, SQL Server Agent
Para trabajar con las herramientas Business Intelligence de Microsoft se debe tener
activado los servicios:
Hacer click en Inicio, todos los programas, Microsoft SQL Server 2014, Herramientas
de Configuración, Administración de configuración SQL Server 2014.
Aparecerá una ventana donde se verificará que los servicios estén iniciados o
ejecutándose.
En una instancia de SQL Server que incluya el Motor de base de datos, Analysis
Services y Reporting Services, cada componente tiene un conjunto completo de datos
y de archivos ejecutables, así como de archivos comunes compartidos por todos los
componentes.
Los archivos comunes que usan todas las instancias en un único equipo se instalan en
la carpeta <unidad>:\Archivos de programa\Microsoft SQL Server\120\, donde
<unidad> es la letra de unidad donde están instalados los componentes. La unidad
predeterminada es normalmente la C.
La ruta de instalación solo aparece para las características cuya carpeta de destino
puede configurar el usuario:
Ruta de acceso
Componente Ruta de acceso predeterminada
configurable o fija
Componentes de
\Archivos de programa\Microsoft SQL
servidor de Motor Configurable
Server\MSSQL12.InstanceID<>\
de base de datos
Archivos de datos
\Archivos de programa\Microsoft SQL
de Motor de base Configurable
Server\MSSQL12.InstanceID<>\
de datos
Servidor Analysis \Archivos de programa\Microsoft SQL
Configurable
Services Server\MSSQL12.InstanceID<>\
Archivos de datos
\Archivos de programa\Microsoft SQL
de Analysis Configurable
Server\MSSQL12.InstanceID<>\
Services
Servidor de \Archivos de programa\Microsoft SQL
informes de Server\MSRS12.<InstanceID>\Reporting Configurable
Reporting Services Services\ReportServer\Bin\
Administrador de \Archivos de programa\Microsoft SQL
informes de Server\MSRS12.<InstanceID>\Reporting Ruta de acceso fija
Reporting Services Services\ReportManager\
Integration Services <Directorio de instalación>\120\DTS\ Configurable
Componentes
cliente (excepto
<Directorio de instalación>\120\Tools\ Configurable
bcp.exe y
sqlcmd.exe)
Componentes
<Directorio de instalación>\Client
cliente (bcp.exe y Ruta de acceso fija
SDK\ODBC\110\Tools\Binn
sqlcmd.exe)
Objetos COM del <unidad>:\Archivos de
servidor y la programa\Microsoft SQL Server\120\ Ruta de acceso fija
replicación COM\5
DLL de
componentes de
Integration Services
del motor en tiempo
de ejecución de
<unidad>:\Archivos de
transformación de
programa\Microsoft SQL Server\120\ Ruta de acceso fija
datos, el motor de
DTS\Binn
canalización de
transformación de
datos y la utilidad
de símbolo del
sistemadtexec
DLL que
proporcionan <unidad>:\Archivos de
compatibilidad con programa\Microsoft SQL Server\120\ Ruta de acceso fija
la conexión DTS\Connections
administrada para
Integration Services
Finanzas
Resumen de ventas
Contiene una vista de resumen de los datos de venta a distribuidor y de ventas
por Internet.
Ha reducido dimensionalidad en comparación con los esquemas de venta a
distribuidor y de ventas por Internet.
Ventas por Internet
Contiene cliente, las ventas individuales por internet y datos al detalle.
Contiene órdenes solamente enviados.
Contiene datos en USD y moneda de origen.
Cuota de Ventas
Contiene datos de cuota de ventas de los representantes de ventas.
Soporta el grupo de medida Sales Quota.
Las tablas de ventas por Internet han tenido una tendencia a apoyar escenarios de
minería de datos, mientras que las otras mesas se han tendido a apoyar escenarios
OLAP.
Una vez que la información ha sido consolidada y transferida al Data Mart (donde
reside el esquema STAR o SNOWFLAKE), puede ser enviada a repositorios
multidimensionales. SQL Server 2014 implementa el almacenamiento multidimensional
a través de los Servicios de Análisis (SQL Server Analysis Services, o SSAS).
Un cubo se define a partir de una tabla de hechos y una o varias tablas de dimensión.
Las medidas (measures) de la tabla de hechos se convertirán en las medidas del
cubo. Las dimensiones del cubo se definen a partir de las tablas de dimensión. Por
ejemplo, un cubo de ventas puede tener las medidas Precio_Producto y
Costo_Producto, provenientes de la tabla de hechos Sales_Fact. Estas medidas se
cruzan con las dimensiones Almacén,
Veamos la ilustración:
Cada dimensión en un cubo tiene uno o varios niveles (levels). Los niveles
representan agrupaciones jerárquicas al interior de una dimensión; por ejemplo, la
Los componentes básicos de un cubo son las dimensiones (dimensions), los miembros
(members), (estos dos componentes provienen de las tablas dimensionales) y las
celdas (cells) (que provienen de la tabla de hechos).
Dimensiones (dimensions)
Cada dimensión en un cubo representa una perspectiva desde la cual los usuarios
consultan y analizan los datos. Desde un punto de vista gráfico, se puede afirmar que
las dimensiones corresponden con los ejes del cubo. Por ejemplo, se desea un reporte
que nos muestre las ventas por Producto, Tiempo y Ubicación, ellas representan las
dimensiones de un cubo. En la figura superior, podemos ver la representación gráfica
de las dimensiones Productos (en el eje vertical), Tiempo (en el eje horizontal) y
Ubicación (en el eje que atraviesa perpendicularmente esta página).
Niveles (levels)
Los niveles representan los grados de sumarización de una dimensión. Por ejemplo, la
dimensión Tiempo puede contener los niveles Año, Mes y Día.
Miembros (members)
Cada ocurrencia particular en una dimensión está representada por un miembro. Por
ejemplo, en la figura los miembros de la dimensión Productos son Uvas, Fresas,
Melones, Manzanas y Peras. Los miembros de la dimensión Ubicación son Loreto,
Lima y Cuzco.
Celdas (cells)
Una celda está definida por una intersección de las dimensiones del cubo. En la figura,
la celda de color blanco representa la intersección de los miembros T4 (Tiempo),
Fresas (Productos) y Cuzco (Ubicación).
SQL Server 2014 introduce muchas mejoras respecto de las características existentes
en Analysis Services 2000. A continuación se enumeran algunas de estas mejoras:
Utilización de UDM: Los cubos de SQL Server 2012 son, en realidad, definiciones
escritas a través del Unified Dimensional Modeling (UDM). El UDM permite
especificar la estructura del cubo (dimensiones y medidas) en un archivo XML que
contiene tanto la data del cubo como su metadata. (Estructura).
Mejoras en Data Mining. Contra los dos modelos de data mining soportados en la
versión 2000, SSAS 2014 presenta siete modelos de data mining. Esto permite a
las empresas llegar a un grado muy alto de compresión de la información del
negocio. Por otro lado, SSAS incluye el lenguaje de consulta DMX (Data Mining
Expressions), para consultar la información de los modelos de Data Mining.
Con el entorno de desarrollo SQL Server Data Tools, se crean proyectos de Analisys
Services, a través de los cuales se define la estructura de los cubos en una solución
de
Business Intelligence.
Para definir cubos en el SQL Server Data Tools, se debe crear un proyecto de tipo
Analysis Services Project.
Los Data Source Views (vistas de orígenes de datos) son objetos que contienen el
esquema (estructura) de las tablas que conforman el STAR o SNOWFLAKE. Se crean
a partir de los data sources. Una data source view almacena:
La estructura de las tablas de conforman el STAR o SNOWFLAKE.
Las relaciones entre las tablas. En un data source view, dichas relaciones se
obtienen automáticamente a partir de las claves foráneas existentes en las
tablas. Sin embargo, el desarrollador puede definir nuevas relaciones
directamente en el data source view.
Nombre amigables para las tablas y sus columnas.
Nuevas definiciones de columnas, escritas por el desarrollador a partir de
expresiones de cálculo.
1. Desde el botón Start > All Programs > Microsoft SQL Server 2012 inicie el SQL
Server Data Tools.
9. Pulse el botón Next. En la ventana final del asistente, establezca el nombre del
nuevo data source a “AWDataMart”. Pulse el botón Finish para finalizar el
asistente.
10. En el Solution Explorer, seleccione el nodo Data Source Views. Haga un clic
derecho, y seleccione la opción New Data Source View.
13. La siguiente ventana mostrará las tablas y vistas disponibles en el data source
“AWDataMart”. Se deben seleccionar aquellas tablas y vistas que conformarán
el data source view. Seleccione las siguientes tablas con el botón >.
FactResellerSales
FactInternetSales
DimTime
DimSalesTerritory
DimReseller
DimPromotion
DimProductCategory
DimProductSubCategory
DimProduct
DimGeography
DimEmployee
DimCustomer
DimCurrency
14. Pulse el botón Next. Aparecerá la ventana final del asistente. Establezca el
nombre del nuevo data source view a “AWDataMart_DSView”. Pulse el botón
Finish.
15. Observe el entorno de diseño. Todas las definiciones de las tablas han sido
copiadas al Data Source View, y se muestran de forma gráfica:
Build the cube using a data source: Esta opción obtiene las definiciones del
cubo a partir de la estructura existente en una base de datos, donde reside un
esquema STAR o SNOWFLAKE. Si se selecciona la opción Auto build, el
asistente analizará la estructura de las tablas, y detectará automáticamente las
tablas de hechos y tablas de dimensión. Además, el asistente podrá determinar
cuáles serán los niveles que se agregarán a las dimensiones. Si la opción Auto
build no se selecciona, el desarrollador definirá manualmente la estructura del
cubo.
Build the cube without using a data source: Esta opción permite que el
desarrollador defina la estructura del cubo sin necesidad de elegir un data
source view. Posteriormente, a partir de la estructura propuesta por el
desarrollador, SSAS generará las definiciones del STAR o SNOWFLAKE.
SSAS provee dos plantillas de diseño: una de ellas es compatible con las
características de la versión Enterprise Edition, y la otra con las opciones
disponibles en la versión Standard Edition.
4. La siguiente ventana permite elegir el data source view que se utilizará para
definir la estructura del cubo. Asimismo permite elegir las tablas que contienen
las medidas de nuestro datamart. Presione el botón Suggest para que el
asistente nos sugiera las tablas de hechos. Observe que la tabla “DimReseller”
ha sido identificada como tabla de hechos. Para corregir esto, desmarque el
checkbox. Luego pulse el botón Next.
5. La siguiente ventana permite determinar cuáles son las medidas que tendrá el
cubo. En SSAS, las medidas se agrupan en Measure Groups (grupos de
medidas). Existe un measure group por cada tabla de hechos del cubo.
Observe que, en el cubo que está construyendo, existen dos measure groups:
uno para la tabla “FactResellerSales” y otro para la tabla “FactInternetSales”.
Cada columna numérica de las tablas de hechos es reconocida como
potenciales medidas del cubo. Desmarque todos los checkboxes de la ventana.
Bajo el measure group “Fact Reseller Sales”, seleccione las medidas “Order
Quantity”, “Discount Amount”, “Sales Amount”, “Tax Amt” y “Freight”. Bajo el
measure group “Fact Internet Sales”, seleccione las medidas “Order Quantity –
Fact Internet Sales”, “Discount Amount – Fact Internet Sales”, “Sales Amount –
Fact Internet Sales”, “Tax Amt – Fact Internet Sales” y “Freight – Fact Internet
Sales”.
Pulse el botón Next. Aparecerá la ventana final del asistente. Establezca el nombre del
nuevo cubo a “Ventas”.
El diseñador de cubos
El diseñador de cubos permite establecer las propiedades del cubo y sus dimensiones.
Provee una interfaz gráfica de fácil utilización, a través de la cual se puede
personalizar el diseño de cada cubo en la solución de análisis. Este diseñador posee
las siguientes pestañas, visibles en la parte superior de la pantalla:
Una vez finalizado el diseño del cubo, se debe crear físicamente el cubo en un
servidor de análisis. Este proceso, conocido como deployment, consiste en la
generación de un script que se enviará a un servidor de análisis, y que generará el
cubo y sus dimensiones. A continuación, se efectuará el procesamiento del cubo.
Durante la fase de procesamiento, el servidor de análisis se conecta con el data
source donde residen las tablas de hechos y las tablas de dimensión, y extrae su
información para poblar el cubo.
UNIDAD
2
IMPLEMENTANDO SOLUCIONES
OLAP CON MICROSOFT SQL
SERVER
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno implementa cubos de análisis definiendo
medidas, personalizando dimensiones e indicadores de rendimiento, utilizando
MS SQL Server Analysis Services.
TEMARIO
2.1 Tema 3 : Definición de estructura de Dimensiones
2.1.1 : Creando Dimensiones
2.1.2 : Definiendo tipo de Dimensiones
2.1.3 : Definiendo Jerarquías
2.1.4 : Creando Dimensión Tiempo
2.1.5 : Documentación de los elementos de diseño
2.1.6 : Agrupando Miembros de un atributo
ACTIVIDADES PROPUESTAS
Las dimensiones son definidas a partir de los criterios utilizados por los usuarios para
consultar la información. Por ejemplo, si los usuarios desean obtener las ventas por
producto, región y trimestre, esto indica que se deben definir las dimensiones
Producto, UbiGeo y Tiempo.
Jerarquías y niveles
jerarquía llamada Ubicación, cuyos niveles son País y Ciudad. Las jerarquías se
denotan con la notación nombre_de_dimensión.nombre_de_jerarquía. Por ejemplo, la
jerarquía Ubicación de la dimensión Ubigeo tendría la siguiente representación:
Ubigeo.Ubicación
▪ País
▪▪ Ciudad
Este diseño especifica que cada país contiene varias ciudades, y cada ciudad se
encuentra en un solo país.
Una dimensión puede contener varias jerarquías. Cada jerarquía definirá una forma
distinta de agrupar y sumarizar la información de una dimensión. Existen entidades de
negocio que no tienen un único criterio de agrupación; por ejemplo, los clientes
pueden ser disgregados por su ubicación geográfica (país, región y ciudad) y también
por su género (masculino o femenino).
Ejemplo
Empleado.Región
▪ Región
▪▪ Ciudad
▪▪▪ Empleado
Empleado.División
▪ División
▪▪ Empleado
Existen ciertas relaciones de parentesco entre los miembros de una dimensión. Dichas
relaciones se basan en la posición relativa de los miembros.
Dimensiones Estándar
El tipo más sencillo de dimensión está constituido por las dimensiones estándar. En
estas dimensiones, cada nivel está representado por una columna en la tabla de
dimensión.
Los atributos tienen propiedades que pueden ser configuradas a través del editor de
dimensiones. A continuación se explicarán algunas de estas propiedades:
Name: Establece el nombre del atributo.
Usage: Establece el propósito que el atributo debe cumplir en la estructura de
la dimensión. Existen tres tipos de uso y los siguientes:
o Key: El atributo se utiliza para identificar de manera única a cada
miembro de la dimensión, y se utilizará para relacionar a la dimensión
con las tablas de hechos. Sólo puede existir un atributo de tipo Key en
una dimensión, y toda dimensión debe tener un atributo Key.
o Parent: El atributo se utiliza para definir una dimensión Parent – Child.
o Regular: El atributo se utiliza sólo para mostrar información.
Propiedad KeyColumns: Establece el identificador único de los miembros de un
atributo. Dicho identificador puede estar compuesto por una o varias columnas
de la tabla de dimensión. Por ejemplo, el identificador del atributo Mes de la
dimensión Tiempo puede estar compuesto por las columnas “Año” y
“NumeroMes” de la tabla de dimensión.
Propiedad NameColumn: Esta propiedad determina la columna de la tabla de
dimensión a partir de la cual se obtiene el valor que mostrarán los miembros de
un atributo. Por ejemplo, en de la dimensión Tiempo, la propiedad
NameColumn del atributo Mes puede apuntar hacia la columna “NombreMes”
de la tabla de dimensión.
Ejercicio 1
6. Pulse el botón Next. La siguiente ventana permite elegir el data source view a partir
del cual se construirá la dimensión. Seleccione el data source view
“AWDataMart_DSView”. Adicionalmente esta ventana también permitirá definir las
propiedades KeyColumns y NameColumns. En la propiedad Main Table, elija la
tabla “DimPromotion”. En la propiedad Key Columns, seleccione la columna
PromotionKey. En la propiedad Column containing the member name, seleccione la
columna EnglishPromotionName.
7. Pulse el botón Next. La siguiente ventana permite definir atributos adicionales para
la dimensión. Seleccione las columnas “Discount Pct”, “English Promotion Type” y
“English Promotion Category”.
15. Repita los pasos anteriores para crear una nueva dimensión llamada “Currency”
(Moneda) con las siguientes configuraciones:
Por otro lado, toda dimensión tiene un miembro predeterminado. Si una consulta de
datos no especifica en forma explícita cuál es el miembro utilizado para obtener la
información asociada con una dimensión, el servidor de análisis utilizará el miembro
predeterminado para efectuar la consulta. Por defecto, el miembro predeterminado es
el miembro “All”. Sin embargo, puede cambiarse a través de la propiedad
DefaultMember presente en cada atributo de la dimensión.
10. Repita el paso (9) con la dimensión “Currency” para observar su data. Puede
observarse que no existe un miembro “All” en esta dimensión, debido a la
configuración efectuada sobre la propiedad IsAggregatable.
Dimensiones Snowflake
Las dimensiones SnowFlake son generadas por más de una tabla de dimensión. En la
figura superior se muestran las tablas de dimensión Category_Dim y Product_Dim.
Éstas están enlazadas entre sí a través de una relación. Sólo la tabla Product_Dim se
enlaza con la tabla de hechos Ventas_Fact.
Ejercicio:
CASE
WHEN MaritalStatus = ‘M’ THEN ‘Married’
WHEN MaritalStatus = ‘S’ THEN ‘Single’
ELSE ‘Not defined’
END
CASE
WHEN Gender = ‘M’ THEN ‘Male’
WHEN Gender = ‘F’ THEN ‘Female’
END
CASE
WHEN MaritalStatus = ‘M’ THEN ‘Married’
WHEN MaritalStatus = ‘S’ THEN ‘Single’
ELSE ‘Not defined’
END
IEST PRIVADO CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA
INTELIGENCIA DE NEGOCIOS 56
CASE
WHEN Gender = ‘M’ THEN ‘Male’
WHEN Gender = ‘F’ THEN ‘Female’
END
Las dimensiones padre – hijo constituyen un caso especial en el que los niveles se
basan en relaciones recursivas de tipo foreign – key existentes en una misma tabla de
dimensión.
La figura superior muestra la tabla DimEmployee. Esta tabla posee una relación
recursiva, en la cual participan las columnas EmployeeKey y ParentEmployeeKey.
Una jerarquía se compone de varios niveles. Los miembros del último nivel de una
jerarquía se denominan leaf members (miembros de hoja).
En una dimensión estándar, sólo los miembros del último nivel de una jerarquía, es
decir, los leaf members, tienen datos en la tabla de hechos. Sean, por ejemplo, una
tabla de hechos de ventas y la jerarquía Ubigeo que contiene los niveles País y
Ciudad. En la tabla de hechos, los registros estarán asociados únicamente con los
miembros del último nivel; es decir, la tabla de hechos contendrá ventas para las
ciudades. De esta manera, se encontrarán registros de ventas para Lima, Trujillo,
Bogotá, etc. El cubo obtendrá las ventas para cada país con base en la suma de las
ventas para las ciudades.
Las jerarquías de tipo Padre – Hijo tienen una propiedad llamada Members with data,
que determina el tratamiento que se dará a la información de la tabla de hechos que
corresponde con miembros de niveles superiores. Esta propiedad puede tomar uno de
los siguientes valores:
▪ Department Name
▪▪ Title
▪▪▪ Full Name
10. Guarde los cambios y efectúe un deployment del proyecto. Observe los datos
de la jerarquía “Dependency” de la dimensión “Employee”:
Los atributos de una dimensión pueden relacionarse entre sí. Dichas relaciones se
definen a través de los attribute relationships. Cuando una dimensión es utilizada por
un cubo, los attribute relationships sirven para conectar cada atributo con la tabla de
hechos.
Por defecto, el atributo clave de una dimensión (el atributo cuya propiedad Usage está
establecida a “Key”) contiene relaciones hacia todos los demás atributos de la
dimensión. De hecho, todo atributo debe estar relacionado con el atributo clave,
directa o indirectamente.
El criterio fundamental para definir attribute relationships es que la relación entre los
atributos sea uno – muchos. Por ejemplo, para relacionar los atributos “Ciudad” y
“País”, es necesario que cada ciudad esté contenida en un solo país. Esta relación
puede representarse de la siguiente forma:
Ciudad
País
Ejercicio:
16. Seleccione el atributo “Sales Territory Region” y como siguiente paso cree una
relación con el atributo “Sales Territory Country”.
17. Seleccione el atributo “Sales Territory Country” y a continuación cree una
relación con el atributo “Sales Territory Group”.
18. Grabe los cambios. Las relaciones creadas hasta este momento tienen como
objetivo optimizar el funcionamiento de las jerarquías definidas en las
dimensiones. A continuación, se mostrará la creación de una relación para
configurar el ordenamiento de un atributo.
19. El atributo “FullName” de la dimensión “Employee” está formado por la
concatenación del nombre y apellidos del empleado. Es deseable que los
miembros del atributo “FullName” no estén ordenados con base en el nombre,
sino en el apellido del empleado. En primer lugar, en el panel de origen de
datos, seleccione la columna “LastName” de la tabla “DimEmployee”, y
arrástrela bajo la dimensión “Employee” en el panel de atributos. De esta
manera, se agregará el atributo “Last Name” a la dimensión. Al finalizar, la
estructura de la dimensión “Employee” debe quedar de la siguiente manera:
Dimensión Time
Ejercicio:
▪ Year
▪▪ Semester
▪▪▪ Trimester
▪▪▪▪ Month
Observe que los meses están ordenados de forma alfabética, lo cual constituye un
error.
11. Cada atributo adicional que se agrega a una dimensión eleva el tiempo de
procesamiento y el espacio en disco. Sin embargo, el atributo “Month Number
Of Year” no se utilizará directamente en las consultas; su única finalidad es
servir como criterio de ordenación para el atributo “Month”. Por tanto, se debe
eshabilitar el uso del atributo “Month Number Of Year” en las consultas. Para
esto, en el panel de atributos seleccione el atributo “Month Number Of Year”, y
en la ventana de propiedades, establezca su propiedad
AttributeHierarchyEnabled a “False”.
12. A continuación, se debe crear una relación entre el atributo “Month” y el atributo
“Month Number Of Year”. Para esto, dirijase a la pestaña Attribute
Relationships y cree la relación. Al final, la estructura debe quedar de la
siguiente manera:
Equal Areas: Examina los valores del atributo, y crea grupos que tienen igual
número de valores.
Clusters: Utiliza el algoritmo K – Means para obtener los grupos a través de
distribuciones de Gauss. Sólo puede usarse con valores numéricos.
Equal Ranges: Cada grupo obtenido corresponde con un rango de valores. Por
ejemplo, si se tienen valores entre 0 y 100, y la propiedad
DiscretizationBucketCout está establecida a 4, se generarán cuatro grupos:
(0 – 25, 26 – 50, 51 – 75, 76 – 100).
muestreo de los datos del atributo. Sin embargo, si se desea controlar el número de
grupos generados, puede establecerse esta propiedad a un número mayor que 0.
Debe tenerse en cuenta que es posible que, aun así, el algoritmo no produzca
exactamente el número de grupos deseado, pues esto depende de la distribución
estadística de la data.
Ejercicio:
Observe que los miembros del atributo “Dealer Price” son todos los valores que toma
esta columna en la tabla de dimensión. Por supuesto, sería más conveniente que
SSAS generase rangos significativos con estos valores. Los siguientes pasos
configurarán este comportamiento.
Cubos
Una medida (measure) representa un valor obtenido a partir de una columna numérica
de la tabla de hechos. La definición de las medidas constituye el paso central en el
análisis de soluciones de inteligencia de negocios, pues constituyen la información que
los usuarios finales desean visualizar.
Las medidas se agrupan en grupos de medidas (measure groups). Cada measure
group corresponde con una tabla de hechos. Un cubo de SSAS 2012 puede contener
varios measure groups.
Ejercicio
5. La siguiente ventana muestra los measure groups y las medidas que pueden
definirse a partir de las columnas en las tablas de hechos. Sólo deben estar
seleccionadas las columnas siguientes:
En el measure group Fact Reseller Sales
Order Quantity
Discount Amount
Sales Amount
Tax Amt
Freight
En el measure group Fact Internet Sales
Order Quantity – Fact Internet Sales
Discount Amount – Fact Internet Sales
Sales Amount – Fact Internet Sales
Tax Amt – Fact Internet Sales
Freight – Fact Internet Sales
7. Pulse el botón Next. En la ventana final del asistente, establezca el nombre del
nuevo cubo a “Sales”:
13. Pulse el botón OK para aceptar. Se habrá creado una nueva medida llamada
“Reseller Sales Count” en el measure group “Reseller Sales”. Esta medida
efectúa un conteo de las filas de la tabla de hechos FactResellerSales.
14. A continuación, repita el paso (13) para crear una nueva medida llamada
“Internet Sales Count” en el measure group “Internet Sales”. Esta medida debe
ser de tipo “Count of rows”. Al finalizar, la estructura de las medidas del cubo
“Sales” debe quedar de la siguiente manera:
En un cubo, las dimensiones deben estar relacionadas con los measure groups.
Comúnmente, estas relaciones se efectúan a través de columnas comunes en las
tablas de dimensión y las tablas de hechos.
SSAS 2014 soporta los siguientes tipos de relaciones entre las dimensiones y los
measure groups:
Relación regular.
Relación referenciada.
Relación “fact”.
Relación many – to – many.
El tipo de relación entre las dimensiones y los measure groups se determina a través
del tab Dimension Usage en el diseñador de cubos.
Relación regular
Las relaciones regulares constituyen el tipo más frecuente de relación. En una relación
regular, la tabla de dimensión se encuentra directamente relacionada a través de una
relación de tipo primary key – foreign key. La siguiente figura muestra una relación de
este tipo entre “DimPromotion” y “FactInternetSales”:
Una tabla de hechos puede contener tres columnas que lo enlacen con la
dimensión de tiempo: una columna para almacenar la fecha de facturación, otra
para almacenar la fecha de remisión, y otra para almacenar la fecha de
entrega.
Una tabla de hechos puede contener dos columnas enlazadas con la
dimensión de empleados: una columna para representar al empleado que
efectuó la venta, y otra para representar al empleado que efectuó el despacho.
En SQL Server 2000, este tipo de requerimiento sólo podía satisfacerse duplicando las
tablas de dimensión, o creando vistas a partir de la tabla de dimensión (en los
ejemplos anteriores, la solución hubiera consistido en crear tres tablas de dimensión
para el tiempo y dos tablas de dimensión para los empleados; o en crear tres vistas a
partir de la tabla de dimensión de tiempo y dos vistas a partir de la tabla de
empleados).
En cambio, SSAS 2014 provee soporte natural a las situaciones de “Role Playing”. En
SSAS 2014, la misma dimensión puede participar múltiples veces en el mismo cubo.
Por ejemplo, la dimensión “Empleado” puede participar dos veces en el cubo “Ventas”,
con los nombres “Empleado vendedor” y “Empleado despachador”.
Ejercicio
Obsérvese que cada tabla de hechos tiene tres relaciones con la tabla de dimensión
“DimDate”. Estas relaciones están definidas en tres columnas distintas de cada tabla
de hechos: las columnas “OrderDateKey” (fecha de emisión de orden), “DueDateKey”
(fecha esperada) y “ShipDateKey” (fecha de embarque de la orden). Esto significa que
la dimensión “Time” juega tres roles distintos con cada tabla de hechos.
2. En el Solution Explorer, haga doble clic sobre el cubo “Sales” para abrir el
diseñador de cubos.
3. En la parte superior del diseñador de cubos, seleccione el tab Dimension
Usage (es el segundo tab, inmediatamente después del tab Cube Structure).
Este tab muestra las relaciones existentes entre las tablas de hechos del cubo
y las dimensiones.
Obsérvese que cada measure group está relacionado con cada dimensión a través de
un atributo que los “une”. Por ejemplo, la dimensión “Sales Territory” y el measure
group “Reseller Sales” están relacionados por el atributo “Sales Territory Region”.
4. Note la presencia de las tres relaciones con la dimensión “Time”: “Time (Due
Date)”, “Time (Ship Date)” y “Time (Order Date)”. Seleccione la intersección
entre “Time (Due Date)” y “Reseller Sales”. Pulse el botón . Aparecerá una
ventana que muestra los detalles de la relación existente entre la dimensión
“Time” y el measure group “Reseller Sales”:
Obsérvese que, en este caso, la relación entre la dimensión “Time” y el measure group
“Reseller Sales” se produce a través de la columna “DueDateKey”, de la tabla de
hechos “FactResellerSales”. Pulse el botón Cancel.
Obsérvese que, en este caso, la relación entre la dimensión “Time” y el measure group
“Reseller Sales” se produce a través de la columna “ShipDateKey”, de la tabla de
hechos “FactResellerSales”. Pulse el botón Cancel.
Obsérvese que, en este caso, la relación entre la dimensión “Time” y el measure group
“Reseller Sales” se produce a través de la columna “OrderDateKey”, de la tabla de
hechos “FactResellerSales”. Pulse el botón Cancel.
7. Repita los pasos anteriores para visualizar las relaciones existentes entre la
dimensión “Time” y el measure group “Internet Sales”.
Puede construirse una dimensión de tipo Snowflake con atributos provenientes de las
tablas “DimGeography” y “DimReseller”. Esta dimensión podrá conectarse sin
problemas con la tabla de hechos “FactResellerSales”. Sin embargo, no podrá
relacionarse con la tabla de hechos “FactInternetSales”, pues, como puede verse en la
siguiente figura, no existe ninguna relación entre “DimReseller” y “FactInternetSales”:
Una solución alternativa (y más flexible) consiste en crear dos dimensiones distintas:
una dimensión “Geography” basada en la tabla “DimGeography”, y una dimensión
“Reseller” basada en la tabla “DimReseller”. Luego, puede usarse una relación
referenciada para relacionar la dimensión “Geography” con la tabla de hechos
“FactResellerSales”.
Por otro lado, la siguiente figura, muestra que la tabla “FactInternetSales” también se
relaciona indirectamente con “DimGeography” a través de la tabla “DimCustomer”. Por
tanto, se puede usar otra relación referenciada para relacionar la dimensión
“Geography” con la tabla de hechos “FactInternetSales”, a través de la dimensión
“Customer”. Este grado de flexibilidad no hubiese podido alcanzarse si se hubiese
implementado la solución a través de dimensiones Snowflake.
Ejercicio
Obsérvese que no existe una relación directa entre las tablas “DimGeography” y
“FactResellerSales”, sino que están relacionadas a través de una dimensión
intermedia: la tabla “DimReseller”. La columna que relaciona a “DimReseller” y
“DimGeography” es la columna “GeographyKey”.
Atributos adicionales
Jerarquías
Jerarquías Niveles
Geographic Location ▪ Country Region Name
▪▪ State Province Name
▪▪▪ City
3. En el Solution Explorer, haga doble clic sobre el cubo “Sales” para abrir el
diseñador de cubos.
4. En el panel de dimensiones, haga clic derecho sobre el cubo “Sales”.
Seleccione la opción “Add Cube Dimension”.
11. Pulse el botón OK para aceptar. Observe que se ha creado una relación entre
la dimensión “Geography” y la tabla de hechos “Reseller Sales”, representada
por el símbolo .
12. La siguiente figura muestra las relaciones existentes entre las tablas
“DimGeography”, “DimCustomer” y “FactInternetSales”:
Relación “Fact”
En estas situaciones, puede resultar muy útil definir una dimensión a partir de la tabla
de hechos. A este tipo de dimensiones se les denomina “dimensiones degeneradas”.
Ejercicio:
Observe que la clave primaria está formada por las columnas “SalesOrderNumber” y
“SalesOrderLineNumber”. La columna “SalesOrderNumber” almacena el número del
documento de orden de venta. Este es un caso de “dimensión degenerada”; es decir,
en la tabla de hechos existe información que no corresponde con medidas ni tampoco
con claves foráneas provenientes de tablas de dimensión.
Observe que se ha generado de manera automática una relación de tipo Fact. Pulse el
botón Cancel.
En las relaciones estudiadas hasta este momento, se asume que una dimensión tiene
una relación uno – muchos con las tablas de hechos. Por ejemplo, un cliente (un
registro en “DimCustomer”) puede tener muchas ventas (varios registros en
“FactResellerSales”); pero cada venta corresponde con un solo cliente.
Sin embargo, existen situaciones en las cuales las dimensiones tienen relaciones de
tipo muchos – muchos con las tablas de dimensión. Por ejemplo, véase la imagen
superior.
SSAS 2014 provee un tipo especial de relación que permite implementar relaciones de
muchos a muchos entre las tablas de hechos y las tablas de dimensión. Véase la
siguiente figura:
Las tablas Fact Table, Regular Dimension e Intermediate Fact Table deben estar
relacionadas en el data source view. De lo contrario, no se podrá definir la relación
muchos – muchos.
Ejercicio:
NameColumn: SalesReasonName
Atributo clave: Renombrarlo como “Reason”.
Atributos adicionales
Atributo Columna origen
Type DimSalesReason.SalesReasonReasonType
Jerarquías
Jerarquías Niveles
Sales Reasons ▪ Type
▪▪ Reason
7. Pulse el botón OK para aceptar. Este measure group tendrá como único
objetivo relacionar al measure group “Internet Sales” (basado en la tabla
“FactInternetSales”) con la dimensión “Sales Reason” (basado en la tabla
“DimSalesReason”).
12. Pulse el botón OK. Observe que se ha creado una relación de tipo many – to –
many entre la dimensión “Sales Reason” y el measure group “Internet Sales”,
representada por el símbolo :
Los miembros calculados son muy útiles para definir nuevas medidas con funciones
personalizadas de cálculo. En estos casos, los miembros calculados deben asignarse
a la dimensión Measures. Por ejemplo, puede utilizarse la siguiente expresión MDX en
la definición del miembro calculado Valor Descontado en la dimensión Measures.
Ejercicios
([Measures].[Sales Amount],
parallelperiod([Order Date].[Calendar].currentmember.level, 1,
[Order Date].[Calendar].currentmember))
CASE
WHEN ISEMPTY(Measures.[Sales Last Period]) THEN 1
ELSE (Measures.[Sales Amount] - Measures.[Sales Last Period])/
Measures.[Sales Last Period]
END
Al igual que los miembros calculados, las celdas calculadas (calculated cells) obtienen
su valor en tiempo de ejecución, a través de una fórmula MDX. Los miembros
calculados aplican su fórmula de cálculo a todas las celdas del cubo. En cambio, las
celdas calculadas pueden aplicar su fórmula a un subconjunto específico del cubo, un
determinado rango de celdas, o incluso a una celda específica. Al igual que los
miembros calculados, las celdas calculadas pueden definirse también sobre cubos
virtuales.
En este ejercicio, se creará una celda calculada en el cubo “Sales” para modificar el
comportamiento de la medida “Discount Amount”. En el tab Browser, verifique el valor
de esta medida para el año 2004, y los miembros de los niveles “Country Region
Name” y “State Province Name” como se muestra en la figura siguiente:
Observe que existen varias celdas para las cuales el valor de “Discount Amount” es 0.
Se desea modificar esta medida de acuerdo a la siguiente regla de negocio: si el valor
de “Discount Amount” para algún miembro de la jerarquía “Geography.Geographic
location” en el año 2004 es 0, su valor cambiará automáticamente para ser el 10% del
valor de la medida “Sales Amount”.
SCOPE(ROOT());
SCOPE([Measures].[Discount Amount],[Order Date].[Calendar].[Year].&[2004],
[Geography].[Geographic location].MEMBERS,
[Currency].[Currency Name].MEMBERS);
THIS=CASE
WHEN [Measures].[Discount Amount] = 0 THEN [Measures].[Sales Amount]*0.1
ELSE [Measures].[Discount Amount]
END;
END SCOPE;
La sentencia SCOPE(ROOT()) tiene como objetivo fijar el ámbito al “root” del cubo; es
decir, a todos los miembros “All” o miembros por defecto en el caso de dimensiones no
agregables (por ejemplo, “Currency”). La segunda sentencia SCOPE expresa un
subcubo, es decir, un subconjunto del cubo. Este subcubo está formado por la
intersección de la medida “Discount Amount”, el miembro “2004” de la jerarquía “Order
Date.Calendar”, todos los miembros de la jerarquía “Geography.Geographic location” y
todos los miembros de la jerarquía “Currency.Currency Name”. La expresión que
sigue:
THIS=CASE
WHEN [Measures].[Discount Amount] = 0 THEN [Measures].[Sales Amount]*0.1
ELSE [Measures].[Discount Amount]
END;
Los Key Performance Indicators (KPIs) son utilizados para medir el grado de
cumplimiento de los objetivos de la empresa, a través de la comparación de las
principales métricas del negocio con las metas establecidas. Por ejemplo, para evaluar
el rendimiento del equipo de ventas, es necesario comparar los montos vendidos con
las cuotas de ventas.
Típicamente, los KPIs son utilizados para construir tableros de control, a través de los
cuales los usuarios pueden visualizar semáforos de control e información de tendencia
sobre los aspectos críticos del negocio. Todo KPI se basa en la comparación entre un
valor actual y un valor objetivo. El grado de diferencia entre el valor actual y el valor
objetivo determina si los objetivos trazados se están cumpliendo o no.
SSAS 2014 posee un visor de KPIs, integrado con el SQL Server Data Tools. Sin
embargo, debe tenerse en cuenta que la capacidad de los usuarios finales para
visualizar los KPIs depende de la herramienta de consulta que estén utilizando. Por
ejemplo, sólo a partir de la versión 2007 de Office, las herramientas de oficina de
Microsoft pueden mostrar visualmente los KPIs creados con SSAS 2014.
Ejercicio:
2. Se abrirá el editor de KPIs. En la propiedad Name del nuevo KPI, escriba “KPI
Ventas Internet USA”. En la propiedad Value Expression, escriba la siguiente
expresión MDX para obtener el valor de “Internet Sales Amount” en los Estados
Unidos:
0.5*([Measures].[Sales Amount],
[Geography].[Geographic location].[Country Region Name].[United States])
case
when KPIVALUE("KPI Ventas Internet USA") >= KPIGOAL("KPI Ventas
Internet USA") then 1
when KPIVALUE("KPI Ventas Internet USA") >= 0.9 * KPIGOAL("KPI Ventas
Internet USA") then 0.75
when KPIVALUE("KPI Ventas Internet USA") >= 0.7 * KPIGOAL("KPI Ventas
Internet USA") then 0.5
when KPIVALUE("KPI Ventas Internet USA") >= 0.5 * KPIGOAL("KPI Ventas
Internet USA") then 0
else -1
end
6. Repita los pasos anteriores para crear un nuevo KPI con nombre “KPI Ventas
Internet Francia”. En la propiedad Value Expression, escriba la siguiente
expresión MDX para obtener el valor de “Internet Sales Amount” en Francia:
0.5*([Measures].[Sales Amount],
[Geography].[Geographic location].[Country Region Name].[France])
case
when KPIVALUE("KPI Ventas Internet Francia") >= KPIGOAL("KPI Ventas
Internet Francia") then 1
when KPIVALUE("KPI Ventas Internet Francia") >= 0.9 * KPIGOAL("KPI
Ventas Internet Francia") then 0.75
when KPIVALUE("KPI Ventas Internet Francia") >= 0.7 * KPIGOAL("KPI
Ventas Internet Francia") then 0.5
when KPIVALUE("KPI Ventas Internet Francia") >= 0.5 * KPIGOAL("KPI
Ventas Internet Francia") then 0
else -1
end
10. Cree un nuevo KPI llamado “KPI Ventas Internet”. En la propiedad Value
Expression, escriba la siguiente expresión MDX para obtener la suma de los
valores de los KPIs creados en los pasos anteriores:
case
when KPIVALUE("KPI Ventas Internet") >= KPIGOAL("KPI Ventas Internet")
then 1
when KPIVALUE("KPI Ventas Internet") >= 0.9 * KPIGOAL("KPI Ventas
Internet")
then 0.75
when KPIVALUE("KPI Ventas Internet") >= 0.7 * KPIGOAL("KPI Ventas
Internet")
then 0.5
when KPIVALUE("KPI Ventas Internet") >= 0.5 * KPIGOAL("KPI Ventas
Internet")
then 0
else -1
end
14. En el lado izquierdo del editor de KPIs se encuentra el panel del KPI Organizer.
Seleccione el ítem “KPI Ventas Internet USA” y, en el editor, expanda el cuadro
Additional Properties. En la propiedad Parent KPI, seleccione “KPI Ventas
Internet”.
Observe que en USA el indicador de status muestra que los objetivos de crecimiento
de ventas por Internet están lejos de cumplirse. Sin embargo, esto muestra
información evaluada sobre la totalidad del cubo “Sales”. En la parte superior, en el
grid de selección de criterios, sobre la etiqueta <Select dimension> seleccione la
dimensión “Order Date”.
En la columna Hierarchy, seleccione la jerarquía “Calendar”. En la columna Operator,
seleccione el operador “Equal”, y en la columna Filter Expression, seleccione el año
2004. Luego, haga un clic sobre el gráfico que muestra los KPIs. Los valores
cambiarán de la siguiente forma:
Observe que la información de status mostrada por los KPIs muestra una clara mejora
en el año 2004, respecto de los objetivos trazados para las ventas por Internet.
El servidor de Analysis Services detecta el lenguaje utilizado por el cliente que efectúa
la consulta. Acto seguido, define los valores que se mostrarán a dicho cliente con base
en las traducciones definidas en la solución. Por ejemplo, si un cliente se conecta
desde una PC configurada para el idioma español, visualizará los nombres de cubos,
medidas, dimensiones, etc. traducidos al español, de acuerdo con las equivalencias
definidas en las traducciones creadas en el proyecto de análisis.
Ejercicio:
3. En el toolbar del tab Translations, pulse el botón para iniciar la creación de una
nueva traducción.
Se abrirá una ventana que permitirá seleccionar el idioma de la traducción.
Seleccione el idioma “Spanish (Peru)”.
4. Pulse el botón OK. Observe que se ha creado una traducción llamada “Spanish
(Peru)”.
10. Consulte el cubo “Sales” a través del tab Browser. En la propiedad Language,
seleccione el idioma “Spanish (Peru)” como se muestra en la siguiente figura:
11. Observe los cambios en los nombres del cubo, las medidas y las dimensiones.
Un cubo de SQL Server Analysis Services 2012 puede ser definido a partir de
múltiples tablas de hechos y tablas de dimensión. Como resultado, se pueden
construir cubos de alta complejidad que combinen un gran número de medidas y
dimensiones. En estos casos, los usuarios finales pueden encontrar difícil navegar a
través de la información del cubo. SSAS 2014 provee la capacidad de definir
perspectivas (perspectives) para facilitar esta interacción.
Dimensiones
Atributos
Jerarquías
Grupos de medidas
Medidas
KPIs
Miembros calculados (calculated members) y sets con nombre (named sets)
Las perspectivas sirven para mejorar la interacción del usuario final. No constituyen un
mecanismo de seguridad.
Ejercicio:
En este ejercicio, se creará una perspectiva que contendrá únicamente a las medidas
y dimensiones que están relacionadas con las ventas a través de Internet.
Efectúe los siguientes pasos:
8. Guarde los cambios y despliegue la solución. Consulte el cubo a través del tab
Browser.
9. En la lista de cubos, observe que se encuentran las perspectivas “Ventas”
(correspondiente con la totalidad del cubo) y “Internet Sales Perspective”.
Seleccione la perspectiva “Internet Sales Perspective”.
10. Observe que sólo están presentes las medidas y dimensiones que fueron
marcadas como pertenecientes a la perspectiva “Internet Sales Perspective”.
Acciones
Las acciones (actions) son comandos que pueden ser ejecutados para presentar
información adicional a los usuarios mientras navegan en un cubo. Permiten
profundizar el nivel de análisis de la información. Por ejemplo, un usuario puede
observar un valor bajo en una medida de ventas al consultar el cubo. Para encontrar la
causa de esto, puede disparar una acción que muestre el detalle de las facturas que
están detrás de dicha cifra, o un reporte que muestre información detallada sobre la
evolución de las ventas.
Ejercicio:
En este ejercicio, se creará una acción en el cubo “Sales” que permitirá ver las
órdenes relacionadas con la medida “Internet Sales Amount”. Cuando el usuario
navegue a través de la data del cubo “Sales”, podrá disparar la acción haciendo click
derecho sobre cualquier celda que contenga valores de la medida “Internet Sales
Amount”.
3. En el toolbar del tab Actions, pulse el botón para iniciar la creación de una
nueva acción de tipo Drillthrough.
4. Establezca las siguientes propiedades a la acción que acaba de crear:
Propiedad Valor
Name View Internet Orders
Measure group members Seleccione el grupo de medidas “Internet Sales”
En la columna Dimensions, seleccione la
dimensión "Internet Sales". En la columna
Drillthrough Columns
Returns Columns, seleccione el atributo "Internet
Order Number"
8. Si a continuación nos muestra una venta de Microsoft Excel Security, haga clic
en Enable.
9. Luego del panel derecho de datos, seleccione del grupo de medidas Ventas
por Internet, la medida: Monto por Internet.
10. Haga clic derecho, Addiontal Actions y elija la acción creada View Internet
Orders.
11. Luego, mostrará el detalle de todas las órdenes que corresponden a esa
medida.
UNIDAD
3
POBLANDO DATA WAREHOUSE
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno puebla un datawarehouse utilizando SQL
Server Integration Services.
TEMARIO
3.1 Tema 7 : Herramienta ETL
3.1.1 : SQL Data Tools y el diseñador de paquetes
3.1.2 : Elementos de SSIS
3.1.2.1 : Conexiones y tipos
3.1.2.2 : Tasks
3.1.2.3 : Control Flow
3.1.2.4 : Containers
3.1.2.5 : Package
ACTIVIDADES PROPUESTAS
SSIS está constituido por varios elementos que permiten construir aplicaciones de
carga y transformación de datos altamente complejos y flexibles. A continuación se
presentan los elementos básicos de SSIS:
Conexiones y Transformaciones
Los Connection Manager son conexiones privadas o compartidas que usan los
paquetes SSIS. Las privadas las encontramos en el connection manager del paquete y
las compartidas son definidas en el proyecto.
En el siguiente ejercicio, se creará un proyecto SSIS que transferirá las filas de un join
entre las tablas Product y ProductSubCategory en la base de datos AdventureWorks,
hacia una tabla llamada ResumenProductos, ubicada en la base de datos
AWorks_MartDemo. Para esto, se utilizará la transformación Data Flow Task.
Ejercicio:
https://msftdbprodsamples.codeplex.com/releases/view/125550
3. En el menú Inicio, seleccione All Programs > Microsoft SQL Server 2014 > SQL
Server Data Tools. Se abrirá el entorno de desarrollo de .Net.
4. En el menú File, seleccione New y luego Project. Aparecerán los distintos tipos de
proyecto que se pueden crear.
Escoja la plantilla Integration Services Project. En la casilla Location, elija la ruta donde
desea crear el proyecto. En la casilla Name, escriba “AdventureWorks_SSIS_Demo1”.
La ventana debe quedar como se muestra en la figura anterior. Presione el botón OK
para crear el proyecto.
14. Repita los pasos del (6) al (11) para crear un nuevo Connection Manager llamado
AWorksMartDemo, dirigido hacia la base de datos AWorksMartDemo. Para este
data source, elija el tipo OLEDB.
22. En el toolbox, seleccione la tarea Data Flow Task y arrástrela hacia la ventana de
diseño del paquete (en la parte central del entorno de desarrollo). Se creará una
tarea llamada Data Flow Task. El entorno de desarrollo quedará de la siguiente
manera:
24. Cada tarea de flujo de datos consiste en varias transferencias de información entre
orígenes de datos. A continuación, se definirán los flujos de información al interior
de la tarea “Copiar productos”. Para iniciar el proceso, haga un doble clic sobre la
tarea “Copiar productos”. Se abrirá en el entorno de desarrollo la pestaña “Data
Flow”.
25. En el Toolbox, expanda la pestaña Other Sources, seleccione el ítem ADO Net
Source y arrástrelo sobre la ventana de diseño. Se creará un nuevo origen de
registros llamado “ADO NET Source”. Selecciónelo y, en la ventana de
propiedades, cambie su propiedad Name a “Consulta Adventure Works”. La
pantalla debe quedar de la siguiente manera:
26. Haga doble clic sobre el origen “Consulta Adventure Works”. Aparecerá el editor de
propiedades del ADO.NET Source. En la opción ADO.NET connection managers,
seleccione el data source Adventure Works2012, como muestra la figura.
27. En la opción Data Access mode seleccione SQL command como muestra la figura.
29. Al lado izquierdo del panel, seleccione la pestaña Columns, observe que las
columnas de la consulta han sido detectadas:
30. Pulse el botón “OK”. Con estos pasos, se ha completado la creación de un origen
de registros, basado en una consulta SQL.
31. En el Toolbox, expanda la pestaña Other Destinations, elija el ítem OLE DB
Destination y arrástrelo sobre la ventana de diseño. Se creará un nuevo destino de
registros llamado “OLE DB Destination”. Selecciónelo y, en la ventana de
propiedades, cambie su propiedad Name a “Destino AWorks MartDemo”. La
pantalla debe quedar de la siguiente manera:
32. Seleccione el origen “Consulta Adventure Works”. Observe que aparece una flecha
azul y una flecha roja saliendo del origen de registros. La flecha verde representa
el flujo de datos que se produce en caso de que la lectura de registros transcurra
sin problemas; la flecha roja representa el flujo que tendrá lugar ante un error en la
lectura de los registros del origen.
33. Presione la flecha verde que sale de “Consulta Adventure Works”, y arrástrela con
el mouse sobre el destino “Destino AWorks MartDemo”. Esta acción define el flujo
de los datos entre el origen y el destino de registros. Al finalizar, la ventana debe
mostrarse de la siguiente forma:
34. Haga doble clic sobre el destino “Destino AWorks MartDemo”. Se abrirá el editor
de propiedades del destino de registros. La ventana debe quedar de la siguiente
manera:
37. Pulse el botón OK para aceptar los cambios y finalizar la configuración del destino
de registros.
38. Para depurar el paquete, haga clic en el botón en la barra de herramientas del
entorno de desarrollo, o seleccione la opción Start Debugging en el menú Debug.
Al finalizar la ejecución, el entorno de desarrollo mostrará la transferencia de datos
de la siguiente forma:
3.1.2.2. Tasks
Definir Precedencias
En el ejercicio anterior, se creó una tarea de flujo de datos para transferir datos hacia
la tabla ResumenProductos. Es posible que, antes de efectuar la transferencia de los
registros, se desee limpiar esta tabla a través de una sentencia DELETE o
TRUNCATE. Para ello, SSIS tiene una tarea llamada Execute SQL Task, a través de
la cual se puede ejecutar un batch SQL. Bastará con agregar esta tarea al paquete, y
escribir en ella la sentencia SQL que elimine la información de la tabla
ResumenProductos.
SSIS permite conectar dos tareas a través de una precedencia. De esta forma, se
garantiza que la segunda tarea se efectuará después de la primera. A través de las
precedencias, se puede determinar el orden en que se efectuarán las
transformaciones y tareas. Los principales tipos de precedencia son los siguientes:
Es posible, también, configurar una precedencia para evaluar una expresión, a través
de la cual se verifique el valor de una variable. De esta manera, si la expresión
devuelve True, la tarea destino se efectuará.
Ejercicio:
En el siguiente ejercicio, se implementará una tarea Execute SQL Task que limpiará la
tabla Resumen Productos y además, estableceremos precedencias con el Data Flow
Task “Copiar productos”.
Ejercicio:
1. Abra el paquete CopiaProductos.dtsx. Agregue una nueva tarea de tipo Data Flow
Task, y asígnele el nombre “Copiar territorios”. A continuación, haga un doble clic
sobre la tarea “Copiar territorios” para definir el detalle del flujo de datos.
2. En la pestaña Connection managers, agregue una nueva conexión de tipo Flat
File. Para esto, haga un doble clic sobre cualquier lugar de la ventana Connection
Managers y seleccione la opción New Flat File Connection.
Se abrirá la ventana Flat File Connection Manager Editor. Establezca los siguientes
valores para las opciones de esta ventana:
Opción Valor
Connection manager name Archivo de territorios
Descripción Información de territorios en formato de texto plano
File name Utilice el botón Browse para ubicar el archivo Territorios.txt
Format Delimited
Text qualifier (comillas dobles)
Column names in the first data row Desmarcado
7. Haga doble clic sobre “Archivo de territorios”. Se abrirá la ventana Flat File Source
Editor. En la propiedad Flat file connection manager, seleccione “Archivo de
territorios”.
9. Pulse el botón OK para finalizar la configuración del origen del Flat File Source.
10. En el ToolBox, expanda la pestaña Common Transformations. Seleccione el ítem
Script Component y arrástrelo sobre la ventana de diseño. Se abrirá una ventana
que permite determinar el tipo de componente que se desea crear. Elija la opción
Transformation.
12. A continuación, haga doble clic sobre “Transformación de regiones” para abrir su
ventana de propiedades.
13. En la opción Input Columns del lado izquierdo de la ventana de propiedades,
marque los checkboxes que señalan las columnas “Column 0”, “Column 1” y
“Column 2” (estas columnas representan los inputs provenientes del origen
“Territorios”).
14. Seleccione la opción Inputs and Outputs del lado izquierdo de la ventana de
propiedades. Expanda Output 0. Expanda Output Columns. Presione el botón
Add Column para agregar un nuevo Output a la transformación. Establezca las
siguientes propiedades para el output:
Opción Valor
Name Región
Data Type Seleccione STRING [DT_STR]
Length 10
15. Seleccione la opción Script del lado izquierdo de la ventana de propiedades; luego
en la opción ScriptLanguage, seleccionar Microsoft Visual Basic 2010 y presione
el botón Design Script.
16. Se abrirá el entorno de desarrollo de .Net para scripts de SSIS. Escriba el siguiente
código para definir la transformación en la función Input0_ProcessInputRow:
19. Haga doble clic sobre el destino “Tabla de territorios” para abrir su ventana de
propiedades. Seleccione la opción Connection Manager del lado izquierdo de la
pantalla, y establezca los siguientes valores para las propiedades:
Opción Valor
OLE DB Connection Manager Seleccione AWorks MartDemo
Data Access Mode Table or view – Fast load
Name of the table or the view Pulse el botón New para crear una nueva tabla. Escriba
la siguiente sentencia SQL:
CREATE TABLE Territorios
(ZipCode char(5),
Territorio varchar(50),
Region varchar(10))
20. Seleccione la opción Mappings del lado izquierdo de la pantalla. Establezca los
siguientes mapeos entre las columnas definidas en “Transformación de regiones” y
el destino “Tabla de territorios”:
Column 0 ZipCode
Column 1 Territorio
Region Region
3.1.2.4 Container
Containers (Contenedores)
Los contenedores permiten agrupar tareas relacionadas. El uso de contenedores hace
más sencillo definir el flujo de las tareas al interior de un paquete. La siguiente figura
muestra un ejemplo de la definición de tareas agrupadas en contenedores:
Variables
A menudo, es necesario que los paquetes SSIS utilicen valores que deben calcularse
en tiempo de ejecución. Por ejemplo, una variable en un paquete SSIS puede ser
utilizada para almacenar el nombre de un servidor de base de datos. De esta manera,
si una base de datos cambia de servidor, no sería necesario actualizar los connection
managers o data sources en el proyecto SSIS.
Las propiedades de los objetos de SSIS (data sources, connection managers, tasks,
containers, etc.) pueden ser obtenidas desde variables. El uso de variables resulta
particularmente útil cuando se utilizan Script Components o Script Tasks.
Una variable en SSIS tiene siempre el ámbito o alcance del container donde fue
declarada.
Por ejemplo, si se declara una variable en el paquete SSIS, dicha variable será visible
desde cualquier lugar del paquete. Si la variable es declarada en un contenedor For
Each Loop, será visible sólo en las tareas que se encuentren en dicho contenedor.
Ejercicios:
Propiedad Valor
Name varTerritoryFile
Scope CopiaProductos
Data Type String
Value
3. Abra el Toolbox, seleccione del grupo Containers el ítem Foreach Loop Container,
y arrástrelo sobre la ventana de diseño del paquete. Renombre el elemento
creado como “Archivos de despachos de planta”, y agréguele una precedencia
con origen en la tarea “Borrar datos”. El entorno de diseño debe quedar de la
siguiente manera:
Propiedad Valor
Enumerator Foreach File Enumerator
Folder Seleccione la carpeta donde se encuentran los archivos
“DespachosPlantaLima.txt” y “DespachosPlantaTrujillo.txt”
Files DespachosPlanta*.txt
Retrieve file name Seleccione la opción Fully Qualified
6. A continuación, se configurará el bucle para que, por cada vez que encuentre un
archivo, almacene su nombre en la variable varTerritoryFile. En el lado izquierdo de
la ventana de propiedades, seleccione la opción Variable Mappings. En la columna
Variables, seleccione la variable varTerritoryFile, y asígnela al elemento de posición
0 de la colección de archivos (el bucle Foreach recorre colecciones, y las
colecciones tienen filas y columnas; en el caso de una colección que recorre una
lista de archivos, sólo hay una columna que corresponde con la posición 0 de la
colección).
Propiedad Valor
Connection manager name Despachos de planta
File name Seleccione el archivo “DespachosPlantaLima.txt”
Format Delimited
Text qualifier (comillas dobles)
Column names in the first data
Seleccionado
row
14. Haga doble clic sobre la tarea “Copiar Despachos” para diseñar el flujo de datos.
Realice los siguientes pasos:
Desde el Toolbox, agregue un Flat File Source y renómbrelo como
“Despachos”. Asócielo con el connection manager “Despachos de planta”.
Desde el Toolbox, agregue un OLE DB Destination y renómbrelo como
“Tabla de Despachos”. A continuación, una “Despachos” con “Tabla de
Despachos”.
Edite las siguientes propiedades del destino “Tabla de despachos”:
Propiedad Valor
OLE DB Connection Manager AWorks MartDemo
Data access mode Table or view – fast load
Name of the table or the view Presione el botón New para crear una tabla, con la
siguiente sentencia SQL:
CREATE TABLE [Despachos](
[IdPlanta] int,
[IdProducto] int,
[IdCliente] char(11),
[Cantidad] smallint
)
15. Regrese al Control Flow, y edite la tarea “Borrar Datos” para efectuar un
DELETE sobre la tabla “Despachos” al inicio de la ejecución del paquete.
16. Grabe los cambios y pruebe el paquete
Lookup
En el ejercicio previo al anterior, se utilizó un Script Component para traducir los
códigos numéricos a nombres de regiones. En dicho ejemplo, debido a que sólo
existen cuatro regiones, basta conescribir una sentencia SELECT CASE en el código
.Net del Script Component. Sin embargo, si la transformación involucra una cantidad
grande de valores distintos (por ejemplo, los códigos de los distritos de un país), el
script puede hacerse muy extenso y difícil de escribir.
Data Conversion
Los procesos ETL deben leer información de múltiples tipos de fuentes, y transferirla a
diversos destinos. Es muy posible, por tanto, que sea necesario efectuar conversiones
de datos. SSIS incorpora una transformación llamada Data Conversion, cuya labor es
efectuar conversiones de tipos de datos. De esta forma, es posible convertir
información de texto de un formato a otro (por ejemplo, convertir cadenas de formato
UNICODE a no-UNICODE), convertir tipos de datos de fecha, o establecer la precisión
de información numérica.
Ejercicio:
USE AWorks_MartDemo
GO
2. A través del SQL Server Management Studio, ingrese los siguientes registros
en la tabla Ciudades:
IdCiudad Descripción
AN ANCASH
AQ AREQUIPA
CJ CAJAMARCA
CZ CUZCO
HU HUANUCO
LI LIMA
Observe que la columna “Ciudad” contiene códigos de ciudades (“LI”, “CJ”, etc.).
6. Dentro del Data Flow Task “Copiar clientes”, agregue un nuevo OLE DB Source
estableciendo las siguientes propiedades:
10. Haga doble clic sobre “Lookup Ciudades” para editar sus propiedades. Se
abrirá la ventana del Lookup Transformation Editor. En la parte izquierda del editor,
seleccione Connection, la propiedad OLE DB Connection Manager debe apuntar al
connection manager “AWorks MartDemo”. La tabla de referencia debe ser
“dbo.Ciudades”.
De esta manera, la transformación Lookup efectúa una operación de join con la tabla
dbo.Ciudades, basada en la igualdad de las columnas “IdCiudad” y “Ciudad-noUNC”.
El
join efectuado permite obtener, para cada registro en la tabla “ClientesPeru” del
archivo
Access de origen, el valor de la columna “Descripcion” que le corresponde en la tabla
dbo.Ciudades.
14. Haga doble clic sobre el destino “Tabla clientes” para abrir su ventana de
propiedades. Seleccione la opción Connection Manager del lado izquierdo de la
pantalla y establezca los siguientes valores para las propiedades:
Propiedad Valor
OLE DB Connection Manager Seleccione AWorks MartDemo
Data Access Mode Table or view – Fast load
Name of the table or the view Pulse el botón New para crear una nueva tabla. Escriba
la siguiente sentencia SQL:
CREATE TABLE Clientes
(IdCliente integer,
NombreCliente varchar(50),
TelefonoCliente varchar(10),
CiudadCliente varchar(20))
15. Seleccione la opción Mappings del lado izquierdo de la pantalla. Establezca los
siguientes mapeos entre las columnas de “Lookup Ciudades” y el destino
“Clientes”:
idCliente idCliente
NomCliente-noUNC NombreCliente
TelCliente-noUNC TelefonoCliente
Descripcion CiudadCliente
3.1.2.5 Package
Package Configurations
Ejercicio:
Propiedad Valor
Name varPaqueteActivo
Scope CopiaProductos
Data Type Boolean
Value True
2. Haga un clic sobre la pestaña Control Flow en el entorno de diseño. Y luego en las
propiedades del paquete, ubique la propiedad Configurations y haga clic en la
elipse.
8. Pulse el botón Finish para finalizar el asistente. Pulse el botón Close para cerrar el
Package Configurations Organizer.
9. Observe que se ha creado un archivo XML llamado “Configuraciones.dstConfig” en
la ruta seleccionada durante la ejecución del asistente. Abra el archivo utilizando el
Internet Explorer. Observe la existencia de un elemento Configuration, de tipo
booleano, establecido a -1 (true).
10. Desde el Toolbox, agregue al paquete una tarea de tipo Script Task, y renómbrela
como “Verificar activación”. A continuación, agregue a la tarea “Borrar datos” una
precedencia con origen en “Verificar activación”.
11. Haga doble clic en la tarea “Verificar Activación”. Se abrirá la ventana del Script
Task Editor. En la parte izquierda de la ventana, seleccione la opción Script. En la
propiedad ScriptLanguage seleccione Microsoft Visual Basic 2013, luego en la
propiedad ReadOnlyVariables, escriba “varPaqueteActivo”. Esto indica que el script
tiene acceso de sólo lectura sobre la variable varPaqueteActivo.
12. Pulse el botón Edit Script para escribir el código .Net que define el comportamiento
de la tarea. Escriba el siguiente código en el método Main() de la clase ScriptMain:
13. Guarde el script y cierre la ventana de .Net. En la ventana del Script Task Editor,
pulse el botón OK.
14. Guarde el paquete y ejecútelo. Observe que, como el valor de la variable
“varPaqueteActivo” es True, el script task finaliza notificando éxito, y da paso a la
ejecución de las tareas siguientes.
15. Abra el archivo “Configuraciones.dtsConfig” utilizando el Notepad. Modifíquelo,
para establecer el valor de la configuración para la variable “varPaqueteActivo” a 0
(False). Al finalizar, el archivo debe quedar de la siguiente manera:
Derived Column
La transformación Derived Column se utiliza para generar nuevas columnas, con base
en las columnas de input ya existentes. Esto se hace a través de expresiones, es
decir, fórmulas que se aplican a las columnas de input para generar un nuevo valor de
output.
El lenguaje de expresiones de SSIS posee un vasto conjunto de funciones y
operadores que permite efectuar transformaciones avanzadas en la información de
una fila.
El Derived Column es muy útil para situaciones en las cuales se debe efectuar
concatenaciones, extraer una porción de una cadena, obtener partes de una fecha,
aplicar funciones matemáticas, etc.
Ejercicio
2. En el data flow “Copiar Contactos”, agregue un ADO NET Source con las
siguientes propiedades:
Propiedad Valor
Name Contactos
ADO.NET Connection Manager Adventure Works2014
Data access mode SQL command
SQL command text Select BusinessEntityID,
FirstName, LastName
From Person.Person
4. Haga doble clic sobre la transformación “Derived Column” para editar sus
propiedades. Aparecerá la ventana del Derived Column Transformation Editor. En
el grid de la parte inferior, agregue nueva columna derivada con las siguientes
propiedades:
Propiedad Valor
Derived Column Name NombreCompleto
Derived Column <add as new column>
Expression [LastName] + “, ” + [FirstName]
Data Type Unicode string [DT_WSTR]
Propiedad Valor
OLE DB Connection Manager AWorks MartDemo
Data access mode Table or view – fast load
Name of the table or the view Presione el botón New para crear una tabla, con la
siguiente sentencia SQL:
CREATE TABLE [ResumenContactos](
BusinessEntityID Integer,
NombreCompleto Nvarchar(150)
)
Fuzzy Lookup
Al igual que el Lookup, la transformación Fuzzy Lookup compara los datos de entrada
con una tabla de equivalencias. Sin embargo, en Fuzzy Lookup no es necesario que
las equivalencias sean exactas; basta con que exista cierta similitud para que
Integration Services decida que existe una correspondencia.
Ejercicio:
IdCliente NombreCliente
----------- --------------------------------------------------
2 Karina Palacios Ramos
3 Jessica Linares Hidalgo
Cliente, Ventas
Karina Palasios Ramos, 124500
Jesica Linares Hidalgo, 89076
Propiedad Valor
Name Ventas Sucio
Archivo Seleccione el archivo “Ventas-sucio.txt”
Text Qualifier Ninguno
Column names in the first Sí
data row
3. En el paquete, cree una tarea de tipo Data Flow Task. Asígnele el nombre “Limpiar
Datos de Ventas”.
4. Dentro de la tarea “Limpiar Datos de Ventas”, agregue un Flat File Source con las
siguientes propiedades:
Propiedad Valor
Name Archivo de Ventas
Flat File Connection Seleccione el connection manager “Ventas Sucio”
Manager
7. Seleccione la pestaña Columns. Observe que se muestran dos tablas: una llamada
“Available Input Columns” que corresponde con el archivo de texto “Ventas-
Sucio.txt”; y otra llamada “Available Lookup Columns” que corresponde con la tabla
“Clientes”. Realice los siguientes pasos:
10. Configure las propiedades del destino “Ventas a clientes” de la siguiente manera:
Propiedad Valor
OLE DB Connection Manager AWorks MartDemo
Data access mode Table or view – fast load
Name of the table or the view Presione el botón New para crear una tabla, con la
siguiente sentencia SQL:
CREATE TABLE [VentasClientes] (
[Ventas] VARCHAR(50),
[IdCliente] INTEGER,
[NombreCliente] VARCHAR(50),
[_Similarity] REAL,
[_Confidence] REAL,
[_Similarity_Cliente] REAL
)
Agregate y Sort
Al igual que el Lookup, la transformación Fuzzy Lookup compara los datos de entrada
con una tabla de equivalencias. Sin embargo, en Fuzzy Lookup no es necesario que
las equivalencias sean exactas; basta con que exista cierta similitud para que
Integration Services decida que existe una correspondencia.
Para las filas restantes, el administrador tomará la decisión final”. Una necesidad
común durante las extracciones de datos consiste en efectuar agregaciones (sumas,
promedios, etc.), y ordenar la información. Este tipo de operación puede efectuarse
desde la misma consulta de datos (usando operadores como ORDER BY, GROUP BY
y SUM). Sin embargo, existen varias circunstancias en las cuales se necesitará
efectuar estas operaciones durante el proceso de transferencia de datos y no en la
consulta de origen.
Ejercicio:
En este ejercicio, se efectuará una agregación sobre un archivo de texto que contiene
información como la siguiente:
Obsérvese que cada cliente tiene información en dos plantas (1 y 4). Se desea obtener
el total de la columna “Cantidad” para cada cliente. Por ejemplo, el total de “Cantidad”
para el primer cliente sería 13 (la suma de 4 y 9). La salida de datos estará ordenada
descendentemente por cantidad.
Propiedad Valor
Name Despachos Detallados
Archivo Seleccione el archivo “Detalle Despachos.txt”
Text Qualifier “ (comilla doble)
Column names in the first Sí
data row
Propiedad Valor
IdPlanta DataType: four-byte signed integer [DT_I4]
IdProducto DataType: four-byte signed integer [DT_I4]
IdCliente DataType: string [DT_STR]
OutputColumnWidth: 11
Cantidad DataType: decimal [DT_DECIMAL]
6. Dentro de la tarea “Agrupar y ordenar despachos por clientes”, agregue un Flat File
Source con las siguientes propiedades:
Propiedad Valor
Name Archivo de despachos
Flat File Connection Seleccione el connection manager “Despachos
Manager Detallados”
7. Dentro de la tarea “Agrupar y ordenar despachos por clientes”, agregue una
transformación de tipo Aggregate, y establezca su nombre a “Agrupar cantidades”.
Luego, seleccione el origen “Archivo de despachos” creado en el paso anterior, y
conecte su flecha de salida con la transformación “Agrupar cantidades”.
8. Haga doble clic sobre la transformación “Agrupar cantidades” para editar sus
propiedades. En la tabla Available Input Columns, active la casilla de verificación
de las columnas “IdCliente” y “Cantidad”. En la parte inferior del editor, establezca
el valor de Operation para la columna “IdCliente” a Group by. Establezca también
el valor de Operation para la columna “Cantidad” a Sum. Esto significa que la
transformación obtendrá la suma de la columna “Cantidad”, agrupada por cada
cliente. Al finalizar, el editor debe tener la apariencia que se muestra a
continuación:
14. Haga doble clic sobre el destino “Archivo ordenado” para editar sus propiedades.
En el editor, pulse el botón New para crear un nuevo connection manager. En la
ventana Flat File Format, seleccione la opción Delimited. Pulse el botón OK.
15. En la ventana de edición del nuevo connection manager, establezca las siguientes
propiedades:
Propiedad Valor
Connection Manager Name Despachos ordenados
File Name Seleccione una ruta cualquiera. Establezca el
nombre del archivo a “DespachosOrdenados.txt”
Column Names in the First Sí
data row
17. Pulse el botón OK. Guarde el paquete y ejecútelo. El paquete generará un archivo
de texto llamado “DespachosOrdenados.txt” donde la información estará
sumarizada por cantidad y agrupada por cliente. Verifique los resultados.
Merge Join
1, 67000
2, 78000
IdCliente NombreCliente
1 Jorge Gonzáles Barrera
2 María Flores Herrera
A través de la transformación Merge Join, las filas provenientes del archivo de texto
pueden combinarse con las filas de la tabla con base en los valores de las columnas
que contienen el ID del cliente para producir un único conjunto de resultados con la
siguiente estructura:
En este caso, las columnas “IdCliente” del archivo de texto y la tabla reciben el nombre
de Join Keys debido a que son usadas para definir la regla de combinación.
Las columnas que cumplen el papel de Join Keys deben tener el mismo tipo de
datos.
Las filas que ingresan a la transformación Merge Join deben estar ordenadas
con base en los valores de las columnas que cumplen el papel de Join Keys.
Ejercicio
En este ejercicio, se leerán las filas existentes en un archivo de texto que contiene
información como la siguiente:
IdSubCategoria, Ventas
1, 879765
2, 678596
3, 987432
ProductSubCategoryID Name
1 Mountain Bikes
2 Road Bikes
3 Touring Bikes
Propiedad Valor
Provider NATIVE OLE DB\SQL Native Client 11.0
Server Name Localhost
Database Name AdventureWorks2014
Name Adventure Works2014 – OLE DB
Propiedad Valor
Name Archivo de Ventas
Archivo Seleccione el archivo “VentasSubCategoria.txt”
Text Qualifier Ninguno
Column names in the first Sí
data row
Columna Valor
IdSubCategoria DataType: four-byte signed integer [DT_I4]
Ventas DataType: decimal [DT_DECIMAL]
Propiedad Valor
Name Ventas por Subcategoria
Flat File Connection Seleccione el connection manager “Archivo de
Manager Ventas”
Propiedad Valor
Name Subcategorias
Seleccione el connection manager
OLE DB Connection Manager “AdventureWorks - OLEDB”
Data Access Mode Table or view
Name of the table or the view [Production].[ProductSubCategory]
Columns Marque únicamente las columnas
“ProductSubCategoryID” y “Name”.
12. Haga doble clic sobre la transformación “Merge Join”. Observe que la condición de
join consiste en el enlace entre la columna “IdSubCategoria” (proveniente del
archivo de texto) y la columna “ProductSubCategoryID” (proveniente de la tabla
ProductSubCategory). Este enlace se ha creado automáticamente, debido a que
estas son las dos únicas columnas que tienen el mismo tipo de dato (Integer). Sin
embargo, esta relación puede ser cambiada por el desarrollador, si es necesario.
Propiedad Valor
OLE DB Connection Manager Seleccione AWorks MartDemo
Data Access Mode Table or view – Fast load
Name of the table or the view Pulse el botón New, y cree una nueva tabla con la
siguiente definición:
CREATE TABLE [VentasSubcategoria] (
[ProductSubcategoryID] INTEGER,
[Name] NVARCHAR(50),
[Ventas] DECIMAL
)
15. Una vez finalizada la edición del destino “Ventas”, el diseñador debe tener la
siguiente apariencia:
Mediante herramientas y técnicas de ETL extraemos los datos de las distintas fuentes
en los que pudieran estar alojados (ERP, CRM, bases de datos tradicionales, planillas
Excel, etc) para posteriormente depuramos, consolidamos y cargarlos en un almacén
de datos.
Cualquier componente de SSIS que colocamos en nuestros SSIS tiene al menos dos
“caminos” posibles durante su ejecución: correcta e incorrecta. SSIS representa esto
mediante dos “flechas” que nos servirán de conectores para el siguiente paso del
SSIS.
Por ejemplo en este caso mientras que la lectura de los datos en “Ole DB Source” sea
correcta, se ejecutará la transformación Sort. En caso contrario el SSIS fallará y no
realizará nada.
Esto se puede cambiar si por ejemplo, añadimos un componente “Flat File Destination”
y arrastramos la “flecha roja” sobre este nuevo elemento.
Al conectar estos dos elementos nos aparece una pantalla de propiedades donde se
podrá configurar qué queremos que haga SSIS en caso de producirse un error en este
punto.
Ahora sólo nos falta especificar el formato del fichero de logs. Para hacemos doble clic
sobre el componente “Flat File Destination”.
En este tema se describe cómo limpiar los datos mediante un proyecto de calidad de
datos de Data Quality Services (DQS).La limpieza de datos se realiza en los datos de
origen utilizando una base de conocimiento generada en DQS a partir de un conjunto
de datos de alta calidad.Para obtener más información, vea Crear una base de
conocimiento.
Requisitos previos
Permisos
Normal (Regular). Relaciona directamente una tabla de hechos con una tabla
de dimensiones, a través de una o más columnas. Es el caso más habitual.
Refenciada (Referenced). Una dimensión se relaciona con un grupo de
medidas a través de otra dimensión. Se suele utilizar cuando modelamos en
copo de nieve (snowflake).
Varios a Varios (Many-to-Many). La tabla de dimensiones se combina con una
tabla de hechos intermedia, y ésta a su vez se combina con una tabla de
dimensiones intermedia con la que la tabla de hechos está combinada.
Hecho (Fact). Se basan en la propia tabla de hechos, y el atributo clave de la
dimensión será una columna de la tabla de hechos. Por ejemplo, si en la tabla
de hechos tenemos el número de factura y queremos una dimensión Factura.
Utilice una tarea que permita mover los archivos de texto utilizados en el
presente o directorio.
Desarrolle un ejemplo usando el componente DataProfiling utilizando la base
de datos AdventureWorks2012, vista Sales.vSalesPerson.
Restaure las bases de datos Northwind, Northwind_Stage, Northwind_Mart y
cree toda la solución de carga al Datawarehouse.
Carga al STAGE:
Carga DATAMART:
UNIDAD
4
GENERANDO REPORTES Y
CONSULTAS MDX
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al término de la unidad, el alumno genera consultas MDX y reportes a partir de
fuentes de datos transaccionales y analíticas utilizando SQL Server Reporting
Services.
TEMARIO
4.1 Tema 9 : MDX
4.1.1 : Introducción a MDX
4.1.2 : Consulta de cubos a través de MDX
4.1.3 : Concepto de Tuplas y Sets.
4.1.4 : Funciones de MDX
4.1.5 : Filtra y ordena resultados
ACTIVIDADES PROPUESTAS
4.1 MDX
MDX emplea las cláusulas SELECT, FROM y WHERE para extraer información de un
cubo. También provee un conjunto de funciones para manipular y recuperar datos.
Funciones MDX
Analysis Services provee alrededor de 100 funciones MDX para definir manipular la
información almacenada en un cubo. Estas funciones pueden utilizarse para construir
miembros calculados (calculated members) en los cubos. Las funciones MDX están
categorizadas de la siguiente manera:
Funciones de Array
Funciones de Dimensión
Funciones de Jerarquías
Funciones de Levels
Funciones Lógicas
Funciones Member
Funciones Numéricas
Funciones de Set
Funciones de cadenas
Funciones de Tuplas
Pueden efectuarse consultas MDX dirigidas a los cubos de SSAS 2014 a través del
SQL Server Management Studio. Para iniciarlo, en el menú Start del sistema
operativo, seleccione All Programs Microsoft SQL Server 2014 SQL Server
Management Studio. Aparecerá una ventana en la cual se debe ingresar la
información de autenticación. En la lista Server type, seleccione “Analysis Services”.
En la lista Server name, escriba “localhost”.
Pulse el botón Connect. El SQL Server Management Studio mostrará la lista de bases
de datos de análisis en el Object Explorer (si no puede visualizar esta ventana,
seleccione el menú View y la opción Object Explorer).
Para escribir una nueva consulta MDX, pulse el botón situado en el toolbox del
SQL
Server Management Studio:
Cada vez que se cree una nueva consulta MDX, se abrirá nuevamente la ventana de
autenticación. Se deben aceptar los valores por defecto y pulsar el botón Connect. En
la lista de la parte superior del toolbox, seleccione la base de datos
“AdventureWorksDataMart”:
Donde especificación_eje es una expresión de set que representa los miembros que
se utilizarán en las consultas. Esta consulta utiliza dos ejes representados por las
expresiones ON COLUMNS y ON ROWS. Las consultas MDX admiten hasta 128 ejes.
Los cinco primeros ejes pueden ser expresados a través de ON COLUMNS, ON
ROWS, ON PAGES, ON CHAPTERS y ON SECTIONS. Los ejes restantes se
expresan a través de ON AXIS (índice_del_eje). La especificación del filtro WHERE es
opcional.
La siguiente consulta contiene una expresión de set en el eje ROWS. Esto permite
seleccionar algunos miembros específicos para la consulta. Obsérvese el uso de las
llaves ({}):
En este ejemplo, se consultará el valor de todas las medidas del cubo, para todos los
miembros hijos de las categorías de promoción Customer y Reseller, según la
jerarquía Promotion Categories:
El resultado es el siguiente:
El nombre completo de los miembros debe ser utilizado en los casos en que existan
varios miembros con el mismo nombre en una consulta. Por ejemplo, en una
dimensión geográfica puede haber dos ciudades llamadas Birmingham, una en
Inglaterra y otra en USA. Utilizar el nombre completo evita la ambigüedad.
Las medidas de un cubo son tratadas como una dimensión privada denominada
Measures. Por ejemplo, en la figura anterior, la celda encerrada en la elipse puede
identificarse a través de la siguiente Tupla:
La Tupla mostrada identifica únicamente a una celda del cubo. La siguiente Tupla
identifica a todas las celdas que corresponden al miembro Eastern Hemisphere de la
dimensión Route:
(Route.[Eastern Hemisphere])
Estas secciones parciales del cubo se denominan slicers. Cada slicer contiene una o
más celdas.
Un set es una colección de T – uplas. Los sets se escriben utilizando llaves al inicio y
al final de la expresión de set. Por ejemplo:
La función DESCENDANTS devuelve un set que contiene son todos los hijos de un
miembro determinado, en un nivel determinado. Su sintaxis es la siguiente:
La siguiente consulta obtiene los valores de todas las medidas del cubo Sales, para el
miembro United States de la dimensión Geography, y para todos sus descendientes
en el nivel City según la jerarquía Geographic location:
La cláusula WHERE
La cláusula WHERE se utiliza para limitar el conjunto de celdas que se totalizan para
dar origen a la información de la consulta. La cláusula WHERE define un slicer
conformado por dimensiones y miembros específicos, que restringen el universo de la
consulta.
Por ejemplo, la siguiente sentencia muestra la medida Internet Order Quantity, para
todos los años de la jerarquía Calendar en la dimensión Order Date, y para todos los
miembros en el nivel Country Region Name de la jerarquía Geographic location:
El resultado es el siguiente:
Cada celda muestra el valor de Internet Order Quantity para todas las categorías de
productos. Si se desea restringir más la consulta para que sólo considere la categoría
“Bikes”, se puede utilizar la siguiente expresión slicer:
El resultado es el siguiente:
2003]'
MEMBER [Order Date].[Calendar].[2003].[Bimestre 2 - 2003] AS
'[Order Date].[Calendar].[March 2003] + [Order Date].[Calendar].[April 2003]'
select {[Order Date].[Calendar].[Bimestre 1 - 2003],
[Order Date].[Calendar].[Bimestre 2 - 2003]} ON COLUMNS,
[Geography].[Geographic location].[Country Region Name].MEMBERS ON
ROWS
FROM SALES
WHERE (Measures.[Sales Amount])
Un set con nombre (named set) permiten crear sets en tiempo de ejecución y
utilizarlos en consultas MDX. La sintaxis para definir sets con nombre es la siguiente:
Por ejemplo, se puede crear un set llamado Norteamerica que contenga a los
miembros Canada y United States de la dimensión Geography como se muestra a
continuación:
El resultado es el siguiente:
A través de estas funciones se puede escribir, por ejemplo, una expresión de cálculo
que divida las ventas de un de producto entre las ventas totales de su subcategoría.
La siguiente sentencia obtiene el valor de la medida Sales Amount para cada
producto, y lo divide entre el valor de Sales Amount para su miembro padre, es decir,
la subcategoría a la que pertenece:
El resultado es el siguiente:
Nota:
La expresión del numerador:
Obtiene el valor de la medida Sales Amount para el padre del miembro actual de la
dimensión Product.
Si se desea comparar las ventas de cada producto con las ventas de su respectiva
categoría de producto, se puede modificar la expresión anterior de la siguiente
manera:
En este caso, se ha escrito la función PARENT dos veces para llegar hasta la
categoría del producto. Una alternativa es utilizar la función ANCESTOR que devuelve
para un miembro determinad, a su ancestro ubicado en un nivel específico.
Si se desea mostrar en las filas de una consulta todas las categorías de productos
(nivel Product Category Name de la jerarquía Product Categories), excluyendo a los
miembros Clothing y Unknown se puede utilizar la función EXCEPT para efectuar esta
exclusión.
Esta función devuelve todos los miembros de set1, eliminando a los miembros de set2.
Además, si en set1 hay elementos duplicados, quita las repeticiones. Si se desea
retener las repeticiones, se debe especificar la cláusula ALL.
Si se desea comparar las ventas actuales contra las ventas del siguiente mes, se debe
utilizar la función NEXTMEMBER.
La función GENERATE
Esta función aplica el set2 a cada miembro de set1 y retorna el set generado por esta
operación. Por ejemplo, la siguiente cláusula:
Funciones TIME
A C
CROSSJOIN
MDX soporta el empleo de la función CROSSJOIN. Esta función produce todas las
combinaciones de dos sets. Por ejemplo, la siguiente sentencia muestra, por cada
miembro del nivel Promotion Category de la dimensión Promotion, a todos los
miembros del nivel Product Category Name de la dimensión Product.
Los filtros en MDX reducen el número de miembros sobre los cuales se evalúa y
calcula la información.
Un método sencillo para filtrar los miembros vacíos consiste en utilizar la cláusula
NON
EMPTY. Por ejemplo, la siguiente sentencia elimina a los miembros del crossjoin que
tienen valores vacíos para las medidas Sales Amount y Order Quantity:
FILTER(set1, condición_de_búsqueda)
Esta función aplica al set1 todos los miembros que cumplan el criterio de búsqueda.
Por ejemplo, si se desea observar las ciudades cuyas unidades vendidas exceden a
25000, se puede escribir la siguiente sentencia:
SELECT {Measures.[Sales Amount], Measures.[Order Quantity]} ON
COLUMNS,
FILTER([Geography].[Geographic location].[State Province Name].MEMBERS,
Measures.[Sales Amount] > 25000) ON ROWS
FROM Sales
Observe que el resultado no se visualiza con un orden alfabético estricto. Esto se debe
a que el parámetro ASC de la función ORDER ordena a los miembros del nivel State
Province Name dentro de cada miembro padre en el nivel Country Region Name. Es
decir, primero ordena alfabéticamente a New South Wales, Queensland, South
Australia, Tasmania y Victoria, que son hijos de la región Australia. Luego, repite
nuevamente la ordenación para los hijos de Canadá, y así sucesivamente. Si se desea
evitar este comportamiento, debe especificarse el parámetro BASC:
Report Server (Servidor de Reportes): Su papel es administrar las conexiones con los
orígenes de datos, procesar los reportes y enviarlos hacia los clientes. Es el
componente principal en la arquitectura de Reporting Services.
Data Sources: Definen los orígenes de datos del reporte. Un reporte puede
conectarse con múltiples orígenes de datos.
Datasets: Contienen vistas de datos, obtenidos a partir de los data sources. Un
reporte puede obtener su información desde múltiples datasets.
Fields: Contienen las definiciones de las columnas de los datasets. Permiten
diseñar gráficamente los reportes.
Regiones de datos: Una región de datos define un formato de visualización.
Reporting Services cuenta con tablas, matrices, listas, subreportes, etc.
Ejercicio:
5. Agregue un nuevo origen de datos al proyecto. Para esto, haga un clic derecho
sobre el fólder Shared Data Sources en el explorador de soluciones, y seleccione
la opción Add New Data Source:
9. Para crear un nuevo reporte, haga un clic derecho sobre el fólder Reports en el
explorador de la solución, y seleccione la opción Add New Item (observe la
siguiente figura):
11. Presione el botón Add. Aparecerá el diseñador de reportes. Este diseñador consta
de un panel Report Data y dos tabs: Design y Preview. El panel Report Data
permite configurar los datasets que utilizará el reporte. La pestaña Design permite
diseñar gráficamente el reporte. La pestaña Preview ejecuta el reporte y
proporciona una vista preliminar de éste (ver la siguiente figura).
12. En la pestaña Report Data, seleccione la lista New y haga clic sobre la opción
Dataset:
14. En la siguiente pantalla, en la opción Use Shared data source reference, elija
AdventureWorksDW y luego el botón Ok:
16. A continuación, aparecerá la pantalla del Query Designer, elija el cubo Ventas
(Sales).
17. Desde el panel de metadata, arrastre las medidas Monto por Distribuidor (“Sales
Amount”) y Monto por Internet (“Internet Sales Amount”), y el atributo Categoría de
Producto (“Product Category Name”) de la dimensión Producto (“Product”) sobre el
panel de resultados. Las columnas elegidas y sus resultados aparecerán sobre el
panel de resultados.
18. Haga dos veces clic en el botón Ok. Observe que se muestra la lista de campos
del dataset con las columnas seleccionadas para la consulta. Las consultas MDX
experimentan un proceso de “aplanamiento” (flatening), que permite tratar los
miembros y niveles referenciados por la consulta como si fueran campos de una
tabla relacional.
20. Aparecerá una tabla con dos filas y tres columnas. Para agregar una nueva
columna a la tabla, haga un clic derecho sobre la cabecera de la tercera columna,
y seleccione la opción Insert Column y Right:
21. Escriba sobre las cabeceras de las dos últimas columnas, como se muestra en la
siguiente figura:
22. Seleccione el menú View y elija la opción Report Data para abrir la ventana de
datasets. Seleccione el campo Categoría de Producto y arrástrelo sobre la
segunda fila de la tabla, en la segunda celda. Esto hará que el reporte cargue la
lista de categorías de productos, en la segunda columna de cada fila. Renombre la
cabecera de la columna a “Categorías de productos” si fuera necesario. Al finalizar,
la ventana de diseño tendrá la siguiente apariencia:
23. Debajo de la columna Ventas, seleccione el ícono y elija el campo Monto por
Distribuidor (Sales_Amount); igualmente debajo de la columna Ventas por Internet
seleccione el campo Monto por Internet (Internet_Sales_Amount). Al finalizar, el
entorno de desarrollo tendrá la siguiente apariencia:
24. Seleccione la pestaña Preview para obtener una vista preliminar del reporte:
25. A continuación, se modificará la apariencia del reporte, para que los encabezados
de columna aparezcan con fondo gris. Para esto, regrese al tab Design y
seleccione las cuatro celdas de la primera fila. En la ventana de propiedades,
cambie el valor de la propiedad BackgroundColor de la siguiente manera:
26. Para que los encabezados de columna aparezcan en negrita, seleccione la primera
fila del reporte. En la ventana de propiedades, expanda la propiedad Font, y
cambie el valor de la propiedad FontWeight a Bold:
27. Para colocar bordes en la tabla de color negro, seleccione todas las celdas de la
tabla utilizando el mouse. A continuación, en la ventana de propiedades expanda
la propiedad BorderColor, y cambie el valor de la propiedad Default a Black:
28. Seleccione la pestaña Preview para obtener la vista preliminar del reporte:
Al incluir parámetros para las fechas de inicio y de finalización en una consulta del
informe, se puede especificar un intervalo de fechas que limite los datos recuperados
del origen de datos. Se pueden crear parámetros adicionales para filtrar los datos
recuperados del origen de datos.
Haga clic en Inicio, seleccione Todos los programas, seleccione Microsoft SQL
Server 2014 y, a continuación, haga clic en SQL Server Data Tools.
En el menú Archivo, seleccione Abrir y haga clic en Proyecto o solución.
Haga clic en Tutorial y, a continuación, elija Tutorial.sln. Este es el tutorial que
se creó en Tutorial: Crear un informe de tabla básico.
(https://technet.microsoft.com/es-es/library/ms167305(v=sql.105).aspx )
Haga clic en Aceptar para abrir el proyecto. El proyecto Tutorial se muestra en
el Explorador de soluciones con un informe denominado Sales Orders.rdl.
Nota
Si no ve el panel Datos de informe, en el menú Ver, haga clic en Datos de informe.
SELECT
soh.OrderDate AS [Date],
soh.SalesOrderNumber AS [Order],
pps.Name AS Subcat, pp.Name as Product,
SUM(sd.OrderQty) AS Qty,
SUM(sd.LineTotal) AS LineTotal
FROM Sales.SalesPerson sp
INNER JOIN Sales.SalesOrderHeader AS soh
ON sp.BusinessEntityID = soh.SalesPersonID
INNER JOIN Sales.SalesOrderDetail AS sd
ON sd.SalesOrderID = soh.SalesOrderID
INNER JOIN Production.Product AS pp
ON sd.ProductID = pp.ProductID
INNER JOIN Production.ProductSubcategory AS pps
ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
INNER JOIN Production.ProductCategory AS ppc
ON ppc.ProductCategoryID = pps.ProductCategoryID
GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber,
pps.Name, pp.Name, soh.SalesPersonID
HAVING (ppc.Name = 'Clothing'
AND (soh.OrderDate BETWEEN (@StartDate) AND (@EndDate)))
Una vez que haya creado los parámetros para el informe, podrá agregar valores
predeterminados para dichos parámetros. Los parámetros predeterminados permiten
que el informe se ejecute automáticamente; en caso contrario, será el usuario quien
deba especificar los valores de los parámetros para ejecutar el informe.
SELECT
soh.OrderDate AS [Date], DATENAME(weekday, soh.OrderDate) as Weekday,
soh.SalesOrderNumber AS [Order],
pps.Name AS Subcat, pp.Name as Product,
SUM(sd.OrderQty) AS Qty,
SUM(sd.LineTotal) AS LineTotal
FROM Sales.SalesPerson sp
INNER JOIN Sales.SalesOrderHeader AS soh
ON sp.BusinessEntityID = soh.SalesPersonID
INNER JOIN Sales.SalesOrderDetail AS sd
ON sd.SalesOrderID = soh.SalesOrderID
INNER JOIN Production.Product AS pp
ON sd.ProductID = pp.ProductID
INNER JOIN Production.ProductSubcategory AS pps
ON pp.ProductSubcategoryID = pps.ProductSubcategoryID
INNER JOIN Production.ProductCategory AS ppc
ON ppc.ProductCategoryID = pps.ProductCategoryID
GROUP BY ppc.Name, soh.OrderDate, soh.SalesOrderNumber,
pps.Name, pp.Name, soh.SalesPersonID
HAVING (ppc.Name = 'Clothing' AND (soh.OrderDate BETWEEN (@StartDate) AND
(@EndDate)))
Si desea resumir datos y presentarlos con un formato visual, use la región de datos de
gráfico. Los gráficos le permiten visualizar de forma rápida grandes volúmenes de
información agregada. Es importante que prepare cuidadosamente los datos y que los
comprenda antes de crear los gráficos; esto le ayudará a diseñarlos de manera rápida
y eficaz.
Puede publicar gráficos por separado de un informe como elementos de informe. Los
elementos de informe son elementos de informe independientes que se almacenan en
el servidor de informes y se pueden incluir en otros informes. Use el Generador de
informes para examinar y seleccionar elementos de la Galería de elementos de
informe para agregarlos a los informes. Use el Diseñador de informes o el Generador
de informes para guardar los elementos de informe en la galería de elementos de
informe.
En los gráficos con ejes, como los gráficos de barras y de columnas, es posible
que el eje de categorías no muestre todas las etiquetas de categoría.
Medidores
Tipos de medidor
Las diferencias principales entre los dos tipos son la forma del medidor y los punteros
de medidor disponibles. Los medidores radiales son circulares, o partes de un círculo,
y se parecen a los indicadores de velocidad. Los punteros del medidor suelen ser
agujas, pero pueden ser marcadores o barras.
Aparte de estas diferencias, los dos tipos de medidor son intercambiables. Sin
embargo, si tiene que utilizar un medidor simple en su informe, podría interesarle
utilizar un indicador en lugar de un medidor.
Medidor radial
Las opciones de medidor radial: Radial, Radial con medidor mini, Dos escalas, 90
grados Noreste, 90 grados Noroeste, 90 grados Suroeste, 90 grados Sureste, 180
grados Norte, 180 grados Sur, 180 grados Oeste, 180 grados Este e Indicador.
Medidor lineal
Las opciones de medidor lineal: Horizontal, Vertical, Varios punteros de barra, Dos
escalas, Rango de tres colores, Logarítmico, Termómetro, Termómetro
fahrenheit/celsius y Gráfico de viñetas.
Una vez que haya agregado un medidor a la superficie de diseño, arrastre un campo
de conjunto de datos hasta el panel de datos del medidor. De forma predeterminada,
el medidor agrega los valores del campo en un valor que se muestra en el medidor.
Ese valor se adjunta al puntero utilizando la propiedad Value. Dependiendo del tipo de
datos del campo, el medidor utiliza el agregado SUM o COUNT. Al usar datos
numéricos, indicados para agregar, el medidor usa la función SUM. De lo contrario,
usa el agregado COUNT. El valor del puntero puede utilizar otro agregado distinto o
ninguno.
Puede agregar agrupación al medidor para ver grupos individuales o filas individuales
en el mismo. Cuando se aplican la agrupación y el filtrado, el medidor usa el valor del
puntero para mostrar el último grupo o la última fila del conjunto de datos devuelto.
Puede agregar varios valores a un mismo medidor agregando otro puntero. Este
puntero puede pertenecer a la misma escala o puede agregar otra escala y, a
continuación, asociar el puntero a la misma.
A diferencia de los tipos de gráficos del cuadro de diálogo Seleccionar tipo de gráfico,
los tipos de medidores del cuadro de diálogo Seleccionar tipo de medidor se crean
mediante una combinación de propiedades de medidor. Por tanto, no se puede
cambiar de tipo de medidor de la misma manera que se cambia de tipo de gráfico.
Para cambiar el tipo de medidor, primero debe quitar el medidor y, a continuación,
debe volver a agregarlo a la superficie de diseño. Un medidor tiene al menos una
escala y un puntero.
Si desea tener varias escalas, haga clic con el botón secundario en el medidor y, a
continuación, seleccione Agregar escala. De forma predeterminada, se crea una
escala más pequeña que se sitúa dentro de la primera escala. La escala muestra
etiquetas y marcas de graduación. Hay dos conjuntos de marcas de graduación:
secundarias y principales.
Si desea tener varios punteros, haga clic con el botón secundario en el medidor y, a
continuación, seleccione Agregar puntero. Se crea otro puntero en la misma escala,
pero si tiene varias escalas, puede asociar un puntero a cualquiera de ellas en el
medidor.
Al igual que todas las demás regiones de datos, la región de datos de medidor solo se
puede enlazar a un conjunto de datos. Si tiene varios conjuntos de datos, considere la
posibilidad de usar JOIN o UNION para crear un conjunto de datos o use medidores
independientes para cada conjunto de datos.
Los tipos de datos numéricos se agregan con la función SUM. Los tipos de datos no
numéricos se agregan con la función COUNT, que cuenta el número de instancias
para un valor o campo determinado perteneciente al conjunto de datos o al grupo.
Una vez agregados los datos, al hacer clic con el botón secundario en el puntero,
obtendrá las opciones Borrar valor de puntero y Eliminar puntero. La opción Borrar
valor de puntero quita el campo adjuntado al medidor, pero el puntero seguirá
apareciendo en el medidor. La opción Eliminar puntero quita el campo del medidor y
hace que el puntero deje de verse. Si vuelve a agregar un campo al medidor,
reaparece el puntero predeterminado. Después de haber agregado el campo al
medidor, debe establecer los valores máximo y mínimo en la escala correspondiente
para dar contexto al valor en el medidor. También puede establecer los valores mínimo
y máximo en un intervalo, que muestra un área crítica en la escala. El medidor no
establecerá automáticamente los valores mínimo o máximo en la escala o el intervalo
porque no puede determinar cómo se debería percibir el valor.
Nota
Este método no es aplicable cuando no hay ningún puntero en el medidor o el
informe contiene más de un conjunto de datos y el panel de medidores no está
asociado a un conjunto de datos.
contienen números con formato. Puede usar una expresión de Visual Basic para
convertir los valores de cadena en un tipo de datos numérico usando la constante
CDbl o CInt. Por ejemplo, la expresión siguiente convierte un campo de cadena
llamado MyField en valores numéricos.
Es posible que desee agregar un grupo al medidor si, por ejemplo, está mostrando
varios medidores en una tabla o una lista y desea mostrar datos agregados por grupo.
Un subinforme es un elemento de informe que muestra otro informe dentro del cuerpo
del informe principal. Como concepto, un subinforme de un informe es como un marco
en una página web. Se utiliza para incrustar un informe dentro de un informe.
Cualquier informe puede utilizarse como subinforme. El informe que se muestra como
el subinforme se almacena en un servidor de informes, normalmente en la misma
carpeta que el informe primario. Es posible diseñar el informe primario para que pase
sus parámetros al subinforme. Este tipo de informe puede repetirse dentro de las
regiones de datos mediante un parámetro que filtre los datos de cada instancia del
subinforme.
También puede crear una dirección URL a un informe que invalide la presentación del
mapa del documento, lo que le permite ejecutar el informe sin mostrar el mapa del
documento y, a continuación, hacer clic en el botón Mostrar u ocultar mapa de
documento de la barra de herramientas del visor de informes para alternar la
presentación.
En SQL Server Data Tools (SSDT) se usa el término implementación, en lugar del
término publicación. Las dos condiciones son intercambiables. Para poder publicar un
informe, debe tener permiso para hacerlo. El permiso se determina a través de la
seguridad basada en roles que define el administrador del servidor de informes.
Además de utilizar las configuraciones que SQL Server Data Tools (SSDT)
proporciona, puede crear otras adicionales.