Lección 5-3: Definir una relación de varios a varios
Se aplica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
Generalmente, cuando se define una dimensión cada hecho se combina con un único miembro de 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 la terminología de la base de datos relacional, esto se conoce como una relación uno a varios. No obstante, algunas veces un único hecho puede combinarse con varios miembros de 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 SQL Server Analysis Services, se define una relación de varios a varios entre una dimensión y un grupo de medida especificando una tabla de hechos intermedia que se combina 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 las tablas de dimensiones de la relación y la dimensión intermedia crean las relaciones de varios a varios entre los miembros de 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 admitir una relación de dimensión de varios a varios, se debe definir una relación de clave externa de clave principal en la vista del 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 pestaña Uso de dimensiones del Diseñador de cubos.
Para obtener más información, consulte Relaciones de dimensióny 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 del origen de datos
Abra la vista del origen de datos Designer para la vista del origen de datos Adventure Works DW 2019.
Haga clic con el botón derecho en cualquier lugar del panel Organizador de diagramas , haga clic en Nuevo diagramay especifique Internet Sales Order Reasons como nombre de este nuevo diagrama.
Arrastre la tabla InternetSales al panel Diagrama desde el panel Tablas .
Haga clic con el botón derecho en cualquier punto del panel Diagrama y luego 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.
Tenga en cuenta que las relaciones de clave externa principal entre las tablas implicadas se establecen automáticamente porque esas relaciones se definen 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 del origen de datos.
En el menú Formato , seleccione Diseño automáticoy haga clic en Diagrama.
En la ventana Propiedades, cambie la propiedad FriendlyName de la tabla DimSalesReason por SalesReasony, a continuación, cambie la propiedad FriendlyName de la tabla FactInternetSalesReason por InternetSalesReason.
En el panel Tablas , expanda InternetSalesReason (dbo.FactInternetSalesReason), haga clic en SalesOrderNumbery 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 InternetSalesReason .
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 derecho 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
Cambie a Cubo Designer para el cubo tutorial de SQL Server Analysis Services y, a continuación, haga clic en la pestaña Estructura del cubo.
Haga clic con el botón derecho en cualquier punto del panel Medidas y, después, haga clic en Nuevo grupo de medida. Para obtener más información, consulte Crear medidas y grupos de medida en modelos multidimensionales.
En el cuadro de diálogo Nuevo grupo de medida , seleccione InternetSalesReason en la lista Seleccione una tabla en la vista del 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, solo 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 como Suma. SQL Server Analysis Services eligió Count porque el tipo de datos subyacente es un tipo de datos de cadena. Las otras dos columnas de la tabla de hechos subyacente no se seleccionaron como medidas porque SQL Server Analysis Services las detectó como claves numéricas en lugar de como medidas reales. Para obtener más información, consulte 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 solo 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 ilustración siguiente se muestran las propiedades de la medida Internet Sales Reason Count .
Definir la dimensión de varios a varios
En el Explorador de soluciones, haga clic con el botón derecho en Dimensionesy, después, haga clic en Nueva dimensión.
En la página Asistente para dimensiones , haga clic en Siguiente.
En la página Seleccionar método de creación , compruebe que la opción Usar una tabla existente está seleccionada y, a continuación, haga clic en Siguiente.
En la página Especificar información de origen, compruebe que la vista del origen de datos Adventure Works DW 2019 está seleccionada.
En la lista Tabla principal , seleccione SalesReason.
En la lista Columnas de clave , compruebe que aparece SalesReasonKey .
En la lista Columna de nombre , seleccione SalesReasonName.
Haga clic en Siguiente.
En la página Seleccionar los atributos de la dimensión , el atributo Sales Reason Key se selecciona automáticamente porque es el atributo clave. Active la casilla situada junto al atributo Sales Reason Reason Type , cambie su nombre por Sales Reason Typey, a continuación, haga clic en Siguiente.
En la página Finalización del asistente , haga clic en Finalizar para crear la dimensión Sales Reason.
En el menú Archivo, haga clic en Guardar todo.
En el panel Atributos del Diseñador de dimensiones para la dimensión Sales Reason , seleccione Sales Reason Keyy, a continuación, cambie la propiedad Nombre de la ventana Propiedades por Sales Reason.
En el panel Jerarquías del Diseñador de dimensiones, cree una jerarquía de usuario denominada 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.
Para agregar la dimensión recién creada al cubo de SQL Server Analysis Services Tutorial como dimensión de cubo, cambie a Cubo Designer. En la pestaña Estructura de cubo , haga clic con el botón derecho en el panel Dimensiones y seleccione Agregar dimensión de cubo.
En el cuadro de diálogo Agregar dimensión de cubo , seleccione Sales Reason y, a continuación, haga clic en Aceptar.
En el menú Archivo, haga clic en Guardar todo.
Definir la relación de varios a varios
Cambie a Cubo Designer para el cubo tutorial de SQL Server Analysis Services y, a continuación, haga clic en la pestaña 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 la celda en la intersección del grupo de medida Internet Sales y la dimensión Sales Reasons y, después, haga clic en el botón Examinar (…).
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 .
de
Haga clic en OK.
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.
Examinar el cubo y la dimensión de varios a varios
En el menú Compilar , haga clic en Tutorial de Implementar Analysis Services.
Cuando la implementación se haya completado correctamente, cambie a la pestaña Explorador del cubo Designer para el cubo tutorial de SQL Server Analysis Services y, a continuación, haga clic en Volver a conectar.
Agregue la medida Internet Sales-Sales Amount al área de datos del panel de datos.
Agregue la jerarquía definida por el usuario Sales Reason de la dimensión Sales Reason al área de filas del panel de datos.
En el panel de metadatos, expanda sucesivamente Customer, Location, Customer Geography, Members, All Customersy Australia, haga clic con el botón derecho en Queenslandy, después, haga clic en Agregar a filtro.
Expanda cada miembro del nivel Sales Reason Type (Tipo de motivo de ventas) para revisar los valores de dólar asociados a cada motivo por el que un cliente de Storage dio por su compra de un producto 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
Consulte también
Trabajar con diagramas en el Diseñador de vistas del origen de datos (Analysis Services)
Relaciones de dimensión
Definir una relación de varios a varios y las propiedades de las relaciones de varios a varios