Lección 5: 3: definir una relación de varios a variosLesson 5-3 - Defining a Many-to-Many Relationship

SE APLICA A:síSQL Server Analysis ServicesnoAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis ServicesAl definir una dimensión, normalmente cada hecho se combina con uno y solo un miembro de dimensión, mientras que un único miembro de dimensión puede asociarse a varios hechos distintos. When you define a dimension, typically each fact joins to one and only one dimension member, whereas a single dimension member can be associated with many different facts. Por ejemplo, cada cliente puede tener varios pedidos, pero cada pedido pertenece a un solo cliente.For example, each customer can have many orders but each order belongs to a single customer. En terminología de bases de datos relacionales, esto se conoce como relación uno a varios.In relational database terminology, this is referred to as a one-to-many relationship. No obstante, algunas veces un único hecho puede combinarse con varios miembros de dimensión.However, sometimes a single fact can join to multiple dimension members. En terminología de bases de datos relacionales, esto se conoce como relación de varios a varios.In relational database terminology, this is referred to as a many-to-many relationship. Por ejemplo, un cliente puede tener varios motivos para realizar una compra, y un motivo de compra puede estar asociado a varias compras.For example, a customer may have multiple reasons for making a purchase, and a purchase reason can be associated with multiple purchases. Para definir los motivos de venta que se relacionan con cada compra, se utiliza una tabla de combinación.A join table is used to define the sales reasons that relate to each purchase. 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.A Sales Reason dimension constructed from such relationships would then have multiple members that relate to a single sales transaction. 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.Many-to-many dimensions expand the dimensional model beyond the classic star schema and support complex analytics when dimensions are not directly related to a fact table.

En Analysis ServicesAnalysis Services, 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.In Analysis ServicesAnalysis Services, you define a many-to-many relationship between a dimension and a measure group by specifying an intermediate fact table that is joined to the dimension table. 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.An intermediate fact table is joined, in turn, to an intermediate dimension table to which the fact table is joined. 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.The many-to-many relationships between the intermediate fact table and both the dimension tables in the relationship and the intermediate dimension creates the many-to-many relationships between members of the primary dimension and measures in the measure group that is specified by the relationship. 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.In order to define a many-to-many relationship between a dimension and a measure group through an intermediate measure group, the intermediate measure group must share one or more dimensions with the original measure group.

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.With a many-to-many dimension, values are distinct summed, which means that they do not aggregate more than once to the All member.

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 del origen de datos entre todas las tablas implicadas.In order to support a many-to-many dimension relationship, a primary key–foreign key relationship must be defined in the data source view between all the tables that are involved. 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.Otherwise, you will not be able to select the correct intermediate measure group when you establish the relationship in the Dimension Usage tab of Cube Designer.

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.For more information, see Dimension Relationships, and Define a Many-to-Many Relationship and Many-to-Many Relationship Properties.

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.In the tasks in this topic, you define the Sales Reasons dimension and the Sales Reasons measure group, and you define a many-to-many relationship between the Sales Reasons dimension and the Internet Sales measure group through the Sales Reasons measure group.

Agregar tablas necesarias a la vista del origen de datosAdding Required Tables to the Data Source View

  1. Abra el Diseñador de vistas del origen de datos para la vista del origen de datos Adventure Works DW 2012 .Open Data Source View Designer for the Adventure Works DW 2012 data source view.

  2. 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.Right-click anywhere in the Diagram Organizer pane, click New Diagram, and specify Internet Sales Order Reasons as the name for this new diagram.

  3. Arrastre la tabla InternetSales al panel Diagrama desde el panel Tablas .Drag the InternetSales table to the Diagram pane from the Tables pane.

  4. Haga clic con el botón derecho en cualquier punto del panel Diagrama y luego haga clic en Agregar o quitar tablas.Right-click anywhere in the Diagram pane, and then click Add/Remove Tables.

  5. 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.In the Add/Remove Tables dialog box, add the DimSalesReason table and the FactInternetSalesReason table to the Included objects list, and then click OK.

    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.Notice that the primary key–foreign key relationships between the tables that are involved are established automatically because those relationships are defined in the underlying relational database. 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.If these relationships were not defined in the underlying relational database, you would have to define them in the data source view.

  6. En el menú Formato , seleccione Diseño automáticoy haga clic en Diagrama.On the Format menu, point to Auto Layout, and then click Diagram.

  7. 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.In the Properties window, change the FriendlyName property of the DimSalesReason table to SalesReason, and then change the FriendlyName property of the FactInternetSalesReason table to InternetSalesReason.

  8. 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.In the Tables pane, expand InternetSalesReason (dbo.FactInternetSalesReason), click SalesOrderNumber, and then review the DataType property for this data column in the Properties window.

    Observe que el tipo de datos para la columna SalesOrderNumber es un tipo de datos de cadena.Notice that the data type for the SalesOrderNumber column is a string data type.

  9. Revise los tipos de datos de las demás columnas de la tabla InternetSalesReason .Review the data types for the other columns in the InternetSalesReason table.

    Observe que los datos de las otras dos columnas de esta tabla son de tipo numérico.Notice that the data types for the other two columns in this table are numeric data types.

  10. En el panel Tablas , haga clic con el botón derecho en InternetSalesReason (dbo.FactInternetSalesReason)y seleccione Explorar datos.In the Tables pane, right-click InternetSalesReason (dbo.FactInternetSalesReason), and then click Explore Data.

    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.Notice that, for each line number within each order, a key value identifies the sales reason for the purchase of that line item, as shown in the following image.

    Valor para identificar el motivo de venta para las compras de la claveKey value to identify sales reason for purchases

Definir el grupo de medida intermedioDefining the Intermediate Measure Group

  1. Cambie al Diseñador de cubos para el cubo Tutorial de Analysis ServicesAnalysis Services y haga clic en la pestaña Estructura de cubo .Switch to Cube Designer for the Analysis ServicesAnalysis Services Tutorial cube, and then click the Cube Structure tab.

  2. Haga clic con el botón derecho en cualquier punto del panel Medidas y, después, haga clic en Nuevo grupo de medida.Right-click anywhere in the Measures pane, and then click New Measure Group. Para obtener más información, consulte Crear medidas y grupos de medida en modelos multidimensionales.For more information, see Create Measures and Measure Groups in Multidimensional Models.

  3. 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.In the New Measure Group dialog box, select InternetSalesReason in the Select a table from the data source view list, and then click OK.

    Observe que el grupo de medida Internet Sales Reason ahora aparece en el panel Medidas .Notice that the Internet Sales Reason measure group now appears in the Measures pane.

  4. Expanda el grupo de medida Internet Sales Reason .Expand the Internet Sales Reason measure group.

    Como puede observar, solo hay una medida definida para este nuevo grupo de medida, la medida Internet Sales Reason Count .Notice that only a single measure is defined for this new measure group, the Internet Sales Reason Count measure.

  5. Seleccione Internet Sales Reason Count y revise las propiedades de esta medida en la ventana Propiedades.Select Internet Sales Reason Count and review the properties of this measure in the Properties window.

    Observe que la propiedad AggregateFunction para esta medida está definida como Recuento en lugar de como Suma.Notice that the AggregateFunction property for this measure is defined as Count instead of Sum. Analysis ServicesAnalysis Services seleccionó Recuento porque el tipo de datos subyacente es un tipo de datos de cadena. chose Count because the underlying data type is a string data type. Las otras dos columnas de la tabla de hechos subyacente no estaban seleccionadas como medias porque Analysis ServicesAnalysis Services las detectó como claves numéricas y no como medidas reales.The other two columns in the underlying fact table were not selected as measures because Analysis ServicesAnalysis Services detected them as numeric keys instead of as actual measures. Para obtener más información, consulte Definir el comportamiento de suma parcial.For more information, see Define Semiadditive Behavior.

  6. En la ventana Propiedades, cambie la propiedad Visible de la medida Internet Sales Reason Count a False.In the Properties window, change the Visible property of the Internet Sales Reason Count measure to False.

    Esta medida solo podrá utilizarse para combinar la dimensión Sales Reason que definirá junto al grupo de medida Internet Sales.This measure will only be used to join the Sales Reason dimension that you will define next to the Internet Sales measure group. Los usuarios no examinarán esta medida directamente.Users will not browse this measure directly.

    En la ilustración siguiente se muestran las propiedades de la medida Internet Sales Reason Count .The following image shows the properties for the Internet Sales Reason Count measure.

    Propiedades de medida Internet Sales Reason CountProperties for Internet Sales Reason Count measure

Definir la dimensión de varios a variosDefining the Many-to-Many Dimension

  1. En el Explorador de soluciones, haga clic con el botón derecho en Dimensionesy, después, haga clic en Nueva dimensión.In Solution Explorer, right-click Dimensions, and then click New Dimension.

  2. En la página Asistente para dimensiones , haga clic en Siguiente.On the Welcome to the Dimension Wizard page, click Next.

  3. 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.On the Select Creation Method page, verify that the Use an existing table option is selected, and then click Next.

  4. En la página Especificar información de origen , compruebe que la vista del origen de datos Adventure WorksAdventure Works DW 2012 está seleccionada.On the Specify Source Information page, verify that the Adventure WorksAdventure Works DW 2012 data source view is selected.

  5. En la lista Tabla principal , seleccione SalesReason.In the Main table list, select SalesReason.

  6. En la lista Columnas de clave , compruebe que aparece SalesReasonKey .In the Key columns list, verify that SalesReasonKey is listed.

  7. En la lista Columna de nombre , seleccione SalesReasonName.In the Name column list, select SalesReasonName.

  8. Haga clic en Siguiente.Click Next.

  9. 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.On the Select Dimension Attributes page, the Sales Reason Key attribute is automatically selected because it is the key attribute. 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.Select the check box beside the Sales Reason Reason Type attribute, change its name to Sales Reason Type, and then click Next.

  10. En la página Finalización del asistente , haga clic en Finalizar para crear la dimensión Sales Reason.On the Completing the Wizard page, click Finish to create the Sales Reason dimension.

  11. En el menú Archivo , haga clic en Guardar todo.On the File menu, click Save All.

  12. 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.In the Attributes pane of the Dimension Designer for the Sales Reason dimension, select Sales Reason Key, and then change the Name property in the Properties window to Sales Reason.

  13. 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.In the Hierarchies pane of the Dimension Designer, create a Sales Reasons user hierarchy that contains the Sales Reason Type level and the Sales Reason level, in that order.

  14. En la ventana Propiedades, defina All Sales Reasons como valor de la propiedad AllMemberName de la jerarquía Sales Reasons.In the Properties window, define All Sales Reasons as the value for the AllMemberName property of the Sales Reasons hierarchy.

  15. Defina All Sales Reasons como valor de la propiedad AttributeAllMemberName de la dimensión Sales Reason.Define All Sales Reasons as the value for AttributeAllMemberName property of the Sales Reason dimension.

  16. Para agregar la dimensión que acaba de crear al cubo Tutorial de Analysis ServicesAnalysis Services como una dimensión de cubo, cambie al Diseñador de cubos.To add the newly created dimension to the Analysis ServicesAnalysis Services Tutorial cube as a cube dimension, switch to Cube 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.On the Cube Structure tab, right-click in the Dimensions pane and select Add Cube Dimension.

  17. En el cuadro de diálogo Agregar dimensión de cubo , seleccione Sales Reason y, a continuación, haga clic en Aceptar.In the Add Cube Dimension dialog box, select Sales Reason and then click OK.

  18. En el menú Archivo , haga clic en Guardar todo.On the File menu, click Save All.

Definir la relación de varios a variosDefining the Many to Many Relationship

  1. Cambie al Diseñador de cubos para el cubo Tutorial de Analysis ServicesAnalysis Services y haga clic en la pestaña Uso de dimensiones .Switch to Cube Designer for the Analysis ServicesAnalysis Services Tutorial cube, and then click the Dimension Usage tab.

    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 .Notice that the Sales Reason dimension has a regular relationship defined with the Internet Sales Reason measure group, but has no relationship defined with the Internet Sales or Reseller Sales measure groups. 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 .Notice also that the Internet Sales Order Details dimension has a regular relationship defined with the Internet Sales Reason dimension, which in turn has a Fact Relationship with the Internet Sales measure group. 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.If this dimension was not present (or another dimension with a relationship with both the Internet Sales Reason and the Internet Sales measure group were not present), you would not be able to define the many-to-many relationship.

  2. 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 ().Click the cell at the intersection of the Internet Sales measure group and the Sales Reason dimension and then click the browse button (...).

  3. En el cuadro de diálogo Definir relación , seleccione Varios a varios en la lista Seleccionar tipo de relación .In the Define Relationship dialog box, select Many-to-Many in the Select relationship type list.

    Debe definir el grupo de medida intermedio que conecta la dimensión Sales Reason al grupo de medida Internet Sales.You have to define the intermediate measure group that connects the Sales Reason dimension to the Internet Sales measure group.

  4. En la lista Grupo de medida intermedio , seleccione Internet Sales Reason.In the Intermediate measure group list, select Internet Sales Reason.

    En la imagen siguiente se muestran los cambios realizados en el cuadro de diálogo Definir relación .The following image shows the changes in the Define Relationship dialog box.

    Cuadro de diálogo Definir relaciónDefine Relationship dialog box

  5. Haga clic en Aceptar.Click 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.Notice the many-to-many icon that represents the relationship between the Sales Reason dimension and the Internet Sales measure group.

Examinar el cubo y la dimensión de varios a variosBrowsing the Cube and the Many-to-Many Dimension

  1. En el menú Compilar , haga clic en Tutorial de Implementar Analysis Services.On the Build menu, click Deploy Analysis Services Tutorial.

  2. Cuando la implementación se haya completado correctamente, cambie a la pestaña Explorador del Diseñador de cubos para el cubo Tutorial de Analysis ServicesAnalysis Services y, a continuación, haga clic en Volver a conectar.When deployment has successfully completed, switch to the Browser tab in Cube Designer for the Analysis ServicesAnalysis Services Tutorial cube, and then click Reconnect.

  3. Agregue la medida Internet Sales-Sales Amount al área de datos del panel de datos.Add the Internet Sales-Sales Amount measure to the data area of the data pane.

  4. Agregue la jerarquía definida por el usuario Sales Reason de la dimensión Sales Reason al área de filas del panel de datos.Add the Sales Reasons user-defined hierarchy from the Sales Reason dimension to the row area of the data pane.

  5. 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.In the metadata pane, expand Customer, expand Location, expand Customer Geography, expand Members, expand All Customers, expand Australia, right-click Queensland, and then click Add to Filter.

  6. Expanda cada miembro del nivel Sales Reason Type para revisar los valores en dólares que están asociados a cada razón que un cliente de Queensland indicó para su compra de un producto de Adventure WorksAdventure Works a través de Internet.Expand each member of the Sales Reason Type level to review the dollar values that are associated with each reason a customer in Queensland gave for their purchase of an Adventure WorksAdventure Works product over the 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.Notice that the totals that are associated with each sales reason add up to more than the total sales. Esto es así porque algunos clientes citaron varios motivos para su compra.This is because some customers cited multiple reasons for their purchase.

    En la imagen siguiente se muestran los paneles Filtro y Datos del Diseñador de cubos.The following image shows the Filter pane and Data pane of Cube Designer.

    Paneles filtro y datos del Diseñador de cubosFilter and Data panes of Cube Designer

Siguiente tarea de la lecciónNext Task in Lesson

Definir la granularidad de las dimensiones en un grupo de medidaDefining Dimension Granularity within a Measure Group

Vea tambiénSee Also

Trabajar con diagramas en el Diseñador de vistas del origen de datos (Analysis Services)Work with Diagrams in Data Source View Designer (Analysis Services)
Relaciones de dimensiónDimension Relationships
Definir una relación de varios a varios y las propiedades de las relaciones de varios a variosDefine a Many-to-Many Relationship and Many-to-Many Relationship Properties