Definir una relación de varios a varios
Generalmente, cuando se define una dimensión cada hecho se combina con un único miembro de la dimensión, mientras que un mismo miembro puede estar asociado a varios hechos distintos. Por ejemplo, cada cliente puede tener varios pedidos, pero cada pedido pertenece a un solo cliente. En terminología de bases de datos relacionales, esto se conoce como relación de uno a varios. No obstante, algunas veces un único hecho puede combinarse con varios miembros de la dimensión. En terminología de bases de datos relacionales, esto se conoce como relación de varios a varios. Por ejemplo, un cliente puede tener varios motivos para realizar una compra, y un motivo de compra puede estar asociado a varias compras. Para definir los motivos de venta que se relacionan con cada compra, se utiliza una tabla de combinación. Una dimensión de motivo de venta creada a partir de relaciones de este tipo tendría varios miembros que estarían relacionados a una única transacción de venta. Las dimensiones de varios a varios amplían el modelo dimensional más allá del esquema de estrella y admiten análisis complejos cuando las dimensiones no están directamente relacionadas con una tabla de hechos.
En Microsoft SQL Server 2005 Analysis Services (SSAS), para definir una relación de varios a varios entre una dimensión y un grupo de medida se especifica una tabla de hechos intermedia que está combinada con la tabla de dimensiones. Una tabla de hechos intermedia, a su vez, se combina con una tabla de dimensiones intermedia con la que la tabla de hechos está combinada. Las relaciones de varios a varios entre la tabla de hechos intermedia y la tabla de dimensiones de la relación y la dimensión intermedia crean las relaciones de varios a varios entre los miembros de la dimensión primaria y las medidas del grupo de medida especificado por la relación. Para definir una relación de varios a varios entre una dimensión y un grupo de medida a través de un grupo de medida intermedio, el grupo de medida intermedio debe compartir una o varias dimensiones con el grupo de medida original.
Con una dimensión de varios a varios, los valores distintos se suman, lo que significa que no se agregan más de una vez al miembro Todos.
[!NOTA] Para poder admitir una relación de dimensiones de varios a varios, debe definir una relación de clave principal a clave externa en la vista de origen de datos entre todas las tablas implicadas. De lo contrario, no podrá seleccionar el grupo de medida intermedio correcto cuando establezca la relación en la ficha Uso de dimensiones del Diseñador de cubos.
Para obtener más información, vea Relaciones de dimensión y Definir una relación de varios a varios y las propiedades de las relaciones de varios a varios.
En las tareas de este tema, debe definir la dimensión Sales Reasons y el grupo de medida Sales Reasons, y definir una relación de varios a varios entre la dimensión Sales Reasons y el grupo de medida Internet Sales a través del grupo de medida Sales Reasons.
Agregar tablas necesarias a la vista de origen de datos
Para agregar tablas necesarias a la vista de origen de datos
Abra el Diseñador de vistas de origen de datos de la vista de origen de datos Adventure Works DW.
Haga clic con el botón secundario en cualquier punto del panel Organizador de diagramas, haga clic en Nuevo diagrama y especifique Sales Order Reasons como nombre de este nuevo diagrama. Para obtener más información, vea Trabajar con diagramas en una vista de origen de datos (Analysis Services).
Se crea un nuevo diagrama sin tablas que aparece en el panel Diagrama.
Arrastre la tabla InternetSales (dbo.FactInternetSales) al panel Diagrama del panel Tablas.
Haga clic con el botón secundario en cualquier punto del panel Diagrama y, a continuación, haga clic en Agregar o quitar tablas.
En el cuadro de diálogo Agregar o quitar tablas, agregue la tabla DimSalesReason y la tabla FactInternetSalesReason a la lista Objetos incluidos y haga clic en Aceptar.
Observe que las relaciones de clave principal a clave externa entre las tablas que están implicadas se establecen automáticamente, ya que dichas relaciones están definidas en la base de datos relacional subyacente. Si dichas relaciones no se hubiesen definido en la base de datos relacional subyacente, tendría que definirlas en la vista de origen de datos.
En el menú Formato, seleccione Diseño automático y haga clic en Diagrama.
En la ventana Propiedades, cambie la propiedad FriendlyName de la tabla DimSalesReason por SalesReason y, a continuación, cambie la propiedad FriendlyName de la tabla FactInternetSalesReason por InternetSalesReason.
En el panel Tablas, expanda InternetSalesReason (dbo.FactInternetSalesReason), haga clic en SalesOrderNumber y, luego, revise la propiedad DataType para esta columna de datos en la ventana Propiedades.
Observe que el tipo de datos para la columna SalesOrderNumber es un tipo de datos de cadena.
Revise los tipos de datos de las demás columnas de la tabla FactInternetSalesReason.
Observe que los datos de las otras dos columnas de esta tabla son de tipo numérico.
En el panel Tablas, haga clic con el botón secundario en InternetSalesReason (dbo.FactInternetSalesReason) y seleccione Explorar datos.
Observe que, para cada número de línea de cada pedido, un valor clave identifica el motivo de venta para la compra del artículo de la línea, como se muestra en la imagen siguiente.
Definir el grupo de medida intermedio
Para definir el grupo de medida intermedio
Cambie al Diseñador de cubos para el cubo Tutorial de Analysis Services y haga clic en la ficha Estructura de cubo.
Haga clic con el botón secundario en cualquier punto del panel Medidas y, después, haga clic en Nuevo grupo de medida. Para obtener más información, vea Definir y configurar un grupo de medida.
En el cuadro de diálogo Nuevo grupo de medida, seleccione InternetSalesReason en la lista Seleccione una tabla en la vista de origen de datos y haga clic en Aceptar.
Observe que el grupo de medida Internet Sales Reason ahora aparece en el panel Medidas.
Expanda el grupo de medida Internet Sales Reason.
Como puede observar, sólo hay una medida definida para este nuevo grupo de medida, la medida Internet Sales Reason Count.
Seleccione Internet Sales Reason Count y revise las propiedades de esta medida en la ventana Propiedades.
Observe que la propiedad AggregateFunction para esta medida está definida como Recuento en lugar de Suma. Analysis Services seleccionó Recuento porque el tipo de datos subyacente era un tipo de datos de cadena. Las otras dos columnas de la tabla de hechos subyacente no estaban seleccionadas como medias porque Analysis Services las detectó como claves numéricas y no como medidas reales. Para obtener más información, vea Definir el comportamiento de suma parcial.
En la ventana Propiedades, cambie la propiedad Visible de la medida Internet Sales Reason Count a False.
Esta medida sólo podrá utilizarse para combinar la dimensión Sales Reason que definirá junto al grupo de medida Internet Sales. Los usuarios no examinarán esta medida directamente.
En la imagen siguiente se muestran las propiedades de la medida Internet Sales Reason Count.
Definir la dimensión de varios a varios
Para definir la dimensión de varios a varios
En la ficha Estructura de cubo del Diseñador de cubos del cubo Tutorial de Analysis Services, haga clic con el botón secundario en cualquier punto del panel Dimensiones y, a continuación, haga clic en Agregar dimensión de cubo.
En el cuadro de diálogo Agregar dimensión de cubo, haga clic en Nueva dimensión.
Se abre el Asistente para dimensiones.
En la página Asistente para dimensiones, haga clic en Siguiente.
En la página Seleccionar vista de origen de datos, haga clic en Siguiente para seleccionar los datos para la dimensión de la vista de origen de datos Adventure Works DW.
En la página Seleccionar el tipo de dimensión, haga clic en Siguiente para especificar que la dimensión será una dimensión estándar.
En la página Seleccionar la tabla de dimensiones principal, seleccione dbo.DimSalesReason en la lista Tabla principal, seleccione SalesReasonName en la lista Columna que contiene el nombre del miembro (opcional) y, luego, haga clic en Siguiente.
En la página Seleccionar los atributos de la dimensión, desactive la casilla de verificación del atributo Sales Reason Alternate Key, cambie el nombre del atributo Sales Reason Reason Type por Sales Reason Type y haga clic en Finalizar.
En la página Finalización del asistente, haga clic en Finalizar para crear la dimensión Sales Reason y, a continuación, haga clic en Aceptar para agregar la dimensión de base de datos que acaba de crear al cubo Tutorial de Analysis Services como una dimensión de cubo.
Abra el Diseñador de dimensiones para la dimensión Sales Reason.
En el panel Jerarquías y niveles, cree una jerarquía Sales Reasons que contenga el nivel Sales Reason Type y el nivel Sales Reason, en este orden.
En la ventana Propiedades, defina All Sales Reasons como valor de la propiedad AllMemberName de la jerarquía Sales Reasons.
Defina All Sales Reasons como valor de la propiedad AttributeAllMemberName de la dimensión Sales Reason.
Definir la relación de varios a varios
Para definir la relación de varios a varios
Pase al Diseñador de cubos para el cubo Tutorial de Analysis Services y haga clic en la ficha Uso de dimensiones.
Observe que la dimensión Sales Reason tiene una relación regular definida con el grupo de medida Internet Sales Reason, pero no tiene ninguna relación definida con los grupos de medida Internet Sales ni Reseller Sales. Observe también que la dimensión Internet Sales Order Details tiene una relación normal definida con la dimensión Internet Sales Reason, que a su vez tiene una relación de hechos con el grupo de medida Internet Sales. Si esta dimensión no estaba presente (u otra dimensión con una relación con Internet Sales Reason y el grupo de medida Internet Sales no estaban presentes), no se podría definir la relación de varios a varios.
Haga clic en el botón de puntos suspensivos (…) de la celda que se encuentra en la intersección entre el grupo de medida Internet Sales y la dimensión Sales Reason.
En el cuadro de diálogo Definir relación, seleccione Varios a varios en la lista Seleccionar tipo de relación.
Debe definir el grupo de medida intermedio que conecta la dimensión Sales Reason al grupo de medida Internet Sales.
En la lista Grupo de medida intermedio, seleccione Internet Sales Reason.
En la imagen siguiente se muestran los cambios realizados en el cuadro de diálogo Definir relación.
Haga clic en Aceptar.
Observe el icono de varios a varios que representa la relación existente entre la dimensión Sales Reason y el grupo de medida Internet Sales, como se muestra en la imagen siguiente.
Examinar el cubo y la dimensión de varios a varios
Para examinar el cubo y la dimensión de varios a varios
En el menú Generar, haga clic en Implementar Analysis Services Tutorial.
Cuando la implementación haya finalizado correctamente, pase a la ficha Examinador del Diseñador de cubos para el cubo Tutorial de Analysis Services y luego haga clic en Volver a conectar.
Elimine cada nivel de la jerarquía de usuario Internet Sales Orders del área de filas del panel Datos y sustitúyalo por la jerarquía de usuario Sales Reasons de la dimensión Sales Reason.
Compruebe que la medida Internet Sales-Sales Amount sigue apareciendo en el área de datos del panel Datos y que el miembro Adam Powell de la dimensión Customer aparece en el panel Filtro. Si no es así, agregue la medida Internet Sales-Sales Amount al área de datos y agregue el miembro Adam Powell de la jerarquía definida por el usuario Customer Geography al área del subcubo (Australia-Queensland-Brisbane-4000).
En el panel Filtro, que es el panel superior del centro del área de diseño, cambie la Expresión de filtro por Queensland, desactivando la casilla de verificación de Adam Powell y activando la casilla de verificación de Queensland en la lista Expresión de filtro.
Expanda cada miembro del nivel Sales Reason Type para revisar los valores en dólares que están asociados a cada motivo que un cliente de Queensland indicó para su compra de un producto de Adventure Works a través de Internet.
Observe que los totales que están asociados con cada motivo de ventas se suman y dan lugar a un valor superior a las ventas totales. Esto es así porque algunos clientes citaron varios motivos para su compra.
En la imagen siguiente se muestran los paneles Filtro y Datos del Diseñador de cubos.
Siguiente tarea de la lección
Definir la granularidad de las dimensiones en un grupo de medida
Vea también
Otros recursos
Relaciones de dimensión
Definir una relación de varios a varios y las propiedades de las relaciones de varios a varios