Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En los modelos tabulares, una relación es una conexión entre dos tablas de datos. La relación establece cómo se deben correlacionar los datos de las dos tablas. Por ejemplo, una tabla Customers y una tabla Orders pueden estar relacionadas con el fin de mostrar el nombre del cliente asociado a cada pedido.
Al usar el Asistente para importación de tablas para importar desde el mismo origen de datos, las relaciones que ya existen en las tablas (en el origen de datos) que elija importar se volverán a crear en el modelo. Puede ver las relaciones que se detectaron y se han vuelto a crear automáticamente mediante el diseñador de modelos en la vista Diagrama o mediante el cuadro de diálogo Administrar relaciones. También puede crear nuevas relaciones entre tablas manualmente mediante el diseñador de modelos en la vista Diagrama o mediante el cuadro de diálogo Crear relación o Administrar relaciones.
Una vez definidas las relaciones entre tablas, ya sea automáticamente durante la importación o creada manualmente, podrá filtrar los datos mediante columnas relacionadas y buscar valores en tablas relacionadas.
Sugerencia
Si el modelo contiene muchas relaciones, la Vista de Diagrama puede ayudarle a visualizar mejor y crear nuevas relaciones entre tablas.
Secciones de este tema:
Ventajas
Una relación es una conexión entre dos tablas de datos, basadas en una o varias columnas de cada tabla. Para ver por qué las relaciones son útiles, imagine que realiza un seguimiento de los datos de los pedidos de los clientes en su empresa. Puede realizar un seguimiento de todos los datos de una sola tabla que tenga una estructura similar a la siguiente:
| ID de Cliente | Nombre | Correo electrónico | Tasa de Descuento | ID de Pedido | Fecha de Pedido | Producto | Cantidad |
|---|---|---|---|---|---|---|---|
| 1 | Ashton | chris.ashton@contoso.com | 0,05 | 256 | 2010-01-07 | Compact Digital | 11 |
| 1 | Ashton | chris.ashton@contoso.com | 0,05 | 255 | 2010-01-03 | Cámara SLR | 15 |
| 2 | Jaworski | michal.jaworski@contoso.com | .10 | 254 | 2010-01-03 | Presupuesto Movie-Maker | 27 |
Este enfoque puede funcionar, pero implica almacenar una gran cantidad de datos redundantes, como la dirección de correo electrónico del cliente para cada pedido. El almacenamiento es barato, pero debe asegurarse de actualizar todas las filas para ese cliente si cambia la dirección de correo electrónico. Una solución a este problema consiste en dividir los datos en varias tablas y definir relaciones entre esas tablas. Este es el enfoque que se usa en bases de datos relacionales como SQL Server. Por ejemplo, una base de datos que importe en un modelo podría representar datos de pedido mediante tres tablas relacionadas:
Clientela
| [CustomerID] | Nombre | Correo Electrónico |
|---|---|---|
| 1 | Ashton | chris.ashton@contoso.com |
| 2 | Jaworski | michal.jaworski@contoso.com |
DescuentosParaClientes
| [CustomerID] | Tasa de Descuento |
|---|---|
| 1 | 0,05 |
| 2 | 0,10 |
Órdenes
| [CustomerID] | ID de Pedido | Fecha de Pedido | Producto | Cantidad |
|---|---|---|---|---|
| 1 | 256 | 2010-01-07 | Compact Digital | 11 |
| 1 | 255 | 2010-01-03 | Cámara SLR | 15 |
| 2 | 254 | 2010-01-03 | Presupuesto Movie-Maker | 27 |
Si importa estas tablas desde la misma base de datos, el Asistente para importación de tablas puede detectar las relaciones entre las tablas basadas en las columnas que están entre [corchetes] y puede reproducir estas relaciones en el diseñador de modelos. Para obtener más información, vea Detección automática e inferencia de relaciones en este tema. Si importa tablas de varios orígenes, puede crear manualmente relaciones como se describe en Crear una relación entre dos tablas (tabular de SSAS).
Columnas y claves
Las relaciones se basan en columnas de cada tabla que contienen los mismos datos. Por ejemplo, las tablas Customers y Orders pueden estar relacionadas entre sí porque ambas contienen una columna que almacena un identificador de cliente. En el ejemplo, los nombres de columna son los mismos, pero no es un requisito. Uno podría ser CustomerID y otro CustomerNumber, siempre y cuando todas las filas de la tabla Orders contengan un identificador que también se almacena en la tabla Customers.
En una base de datos relacional, hay varios tipos de claves, que normalmente son solo columnas con propiedades especiales. Los cuatro tipos de claves siguientes se pueden usar en bases de datos relacionales:
Clave principal: identifica de forma única una fila de una tabla, como CustomerID en la tabla Customers.
Clave alternativa (o clave candidata): una columna distinta de la clave principal que es única. Por ejemplo, una tabla Employees podría almacenar un identificador de empleado y un número de seguro social, ambos únicos.
Clave externa: una columna que hace referencia a una columna única de otra tabla, como CustomerID en la tabla Orders, que hace referencia a CustomerID en la tabla Customers.
Clave compuesta: una clave compuesta por más de una columna. Las claves compuestas no se admiten en modelos tabulares. Para obtener más información, vea "Claves compuestas y columnas de búsqueda" en este tema.
En los modelos tabulares, la clave principal o la clave alternativa se denomina columna de búsqueda relacionada o simplemente columna de búsqueda. Si una tabla tiene tanto una clave principal como una clave alternativa, puede usar cualquiera de las dos como columna de búsqueda. La clave externa se conoce como columna de origen o simplemente columna. En nuestro ejemplo, se definiría una relación entre CustomerID en la tabla Orders (la columna) y CustomerID (la columna de búsqueda) de la tabla Customers. Si importa datos de una base de datos relacional, de forma predeterminada, el diseñador de modelos elige la clave externa de una tabla y la clave principal correspondiente de la otra tabla. Sin embargo, puede usar cualquier columna que tenga valores únicos para la columna de búsqueda.
Tipos de relaciones
La relación entre Clientes y Pedidos es una relación uno a varios. Cada cliente puede tener varios pedidos, pero un pedido no puede tener varios clientes. Los otros tipos de relaciones son uno a uno y varios a varios. La tabla CustomerDiscounts, que define una única tasa de descuento para cada cliente, se encuentra en una relación uno a uno con la tabla Customers. Un ejemplo de una relación de varios a varios es una relación directa entre Productos y Clientes, en el que un cliente puede comprar muchos productos y el mismo producto puede ser comprado por muchos clientes. El diseñador de modelos no admite relaciones de muchos a muchos en la interfaz de usuario. Para obtener más información, consulte "Relaciones de varios a varios" en este tema.
En la tabla siguiente se muestran las relaciones entre las tres tablas:
| Relación | Tipo | columna de búsqueda | Columna |
|---|---|---|---|
| Customers-CustomerDiscounts | uno a uno | Clientes.CustomerID | DescuentosCliente.IDCliente |
| Customers-Orders | uno a varios | Customers.CustomerID | Pedidos.IdentificaciónDelCliente |
Relaciones y rendimiento
Una vez creada cualquier relación, el diseñador de modelos normalmente debe recalcular las fórmulas que usen columnas de las tablas de la relación recién creada. El procesamiento puede tardar algún tiempo en función de la cantidad de datos y de la complejidad de las relaciones.
Requisitos para las relaciones
El diseñador de modelos tiene varios requisitos que se deben seguir al crear relaciones:
Relación activa única entre tablas
Varias relaciones podrían dar lugar a dependencias ambiguas entre tablas. Para crear cálculos precisos, necesita una única ruta de acceso de una tabla a la siguiente. Por lo tanto, solo puede haber una relación activa entre cada par de tablas. Por ejemplo, en AdventureWorks DW 2012, la tabla DimDate contiene una columna, DateKey, que está relacionada con tres columnas diferentes de la tabla, FactInternetSales: OrderDate, DueDate y ShipDate. Si intenta importar estas tablas, la primera relación se crea correctamente, pero recibirá el siguiente error en las relaciones sucesivas que implican la misma columna:
* Relación: table[column 1]-> table[column 2] - Estado: error - Razón: No se puede crear una relación entre las tablas <table 1> y <table 2>. Solo puede existir una relación directa o indirecta entre dos tablas.
Si tiene dos tablas y varias relaciones entre ellas, deberá importar varias copias de la tabla que contiene la columna de búsqueda y crear una relación entre cada par de tablas.
Puede haber muchas relaciones inactivas entre tablas. El cliente de informes especifica la ruta de acceso que se va a usar entre tablas en el momento de la consulta.
Una relación para cada columna de origen
Una columna de origen no puede participar en varias relaciones. Si ya ha usado una columna como columna de origen en una relación, pero quiere usar esa columna para conectarse a otra columna de búsqueda relacionada en otra tabla diferente, puede crear una copia de la columna y usar esa columna para la nueva relación.
Es fácil crear una copia de una columna que tenga los mismos valores exactos mediante una fórmula DAX en una columna calculada. Para obtener más información, vea Crear una columna calculada (SSAS tabular).
Identificador único para cada tabla
Cada tabla debe tener una sola columna que identifique de forma única cada fila de esa tabla. Esta columna se conoce a menudo como clave principal.
Columnas de búsqueda únicas
Los valores de datos de la columna de búsqueda deben ser únicos. En otras palabras, la columna no puede contener duplicados. En los modelos tabulares, los valores NULL y las cadenas vacías son equivalentes a un valor de datos en blanco, que es un valor de datos distinto. Esto significa que no puede tener varios valores NULL en la columna de búsqueda.
Tipos de datos compatibles
Los tipos de datos de la columna de origen y la columna de búsqueda deben ser compatibles. Para obtener más información sobre los tipos de datos, consulte Tipos de datos admitidos (SSAS tabular).
Claves compuestas y columnas de búsqueda
No se pueden usar claves compuestas en un modelo tabular; Siempre debe tener una columna que identifique de forma única cada fila de la tabla. Si intenta importar tablas que tienen una relación existente basada en una clave compuesta, el Asistente para importación de tablas omitirá esa relación porque no se puede crear en el modelo tabular.
Si desea crear una relación entre dos tablas en el diseñador de modelos y hay varias columnas que definen las claves principales y externas, debe combinar los valores para crear una sola columna de clave antes de crear la relación. Puede hacerlo antes de importar los datos o puede hacerlo en el diseñador de modelos mediante la creación de una columna calculada.
Relaciones de muchos a muchos
Los modelos tabulares no admiten relaciones de varios a varios y no se pueden agregar tablas de unión en el diseñador de modelos. Sin embargo, puede usar funciones DAX para modelar relaciones de muchos a muchos.
Self-Joins y bucles
Las combinaciones automáticas no se permiten en tablas de modelos tabulares. Una autocombinación es una relación recursiva entre una tabla y sí misma. Las auto-uniones se usan a menudo para definir jerarquías de padre e hijo. Por ejemplo, podría unir una tabla Employees a sí misma para generar una jerarquía que muestre la cadena de administración en una empresa.
El diseñador de modelos no permite crear bucles entre relaciones en un modelo. En otras palabras, se prohíbe el siguiente conjunto de relaciones.
Tabla 1, columna a a tabla 2, columna f
Tabla 2, columna f a tabla 3, columna n
Tabla 3, columna n hasta Tabla 1, columna a
Si intenta crear una relación que provocaría la creación de un bucle, se genera un error.
Inferencia de relaciones
En algunos casos, las relaciones entre tablas se encadenan automáticamente. Por ejemplo, si crea una relación entre los dos primeros conjuntos de tablas siguientes, se deduce que existe una relación entre las otras dos tablas y se establece automáticamente una relación.
Productos y categoría: creados manualmente
Categoría y subcategoría — creado manualmente
Productos y Subcategoría: la relación entre ellos se infiere.
Para que las relaciones se encadenen automáticamente, las relaciones deben ir en una dirección, como se muestra anteriormente. Si las relaciones iniciales se encontraban entre, por ejemplo, Ventas y Productos y Ventas y Clientes, no se deduce una relación. Esto se debe a que la relación entre Productos y Clientes es una relación de muchos a muchos.
Detección de relaciones al importar datos
Al importar desde una tabla de origen de datos relacional, el Asistente para importación de tablas detecta relaciones existentes en esas tablas de origen en función de los datos del esquema de origen. Si se importan tablas relacionadas, esas relaciones se duplicarán en el modelo.
Crear relaciones manualmente
Aunque la mayoría de las relaciones entre tablas de un único origen de datos relacional se detectarán automáticamente y se crearán en el modelo tabular, también hay muchas instancias en las que debe crear manualmente relaciones entre tablas de modelo.
Si el modelo contiene datos de varios orígenes, es probable que tenga que crear relaciones manualmente. Por ejemplo, puede importar tablas Customers, CustomerDiscounts y Orders desde un origen de datos relacional. Las relaciones existentes entre esas tablas en el origen se crean automáticamente en el modelo. A continuación, puede agregar otra tabla de otro origen, por ejemplo, importar datos de región de una tabla Geography en un libro de Microsoft Excel. A continuación, puede crear manualmente una relación entre una columna de la tabla Customers y una columna de la tabla Geography.
Para crear manualmente relaciones en un modelo tabular, puede usar el diseñador de modelos en la vista Diagrama o mediante el cuadro de diálogo Administrar relaciones. La vista de diagrama muestra tablas, con relaciones entre ellas, en un formato gráfico. Puede hacer clic en una columna de una tabla y arrastrar el cursor a otra tabla para crear fácilmente una relación, en el orden correcto, entre las tablas. El cuadro de diálogo Administrar relaciones muestra las relaciones entre tablas en un formato de tabla simple. Para obtener información sobre cómo crear relaciones manualmente, vea Crear una relación entre dos tablas (SSAS tabular).
Valores duplicados y otros errores
Si elige una columna que no se puede usar en la relación, aparece una X roja junto a la columna. Puede pausar el cursor sobre el icono de error para ver un mensaje que proporcione más información sobre el problema. Los problemas que pueden hacer imposible crear una relación entre las columnas seleccionadas incluyen lo siguiente:
| Problema o mensaje | Resolución |
|---|---|
| No se puede crear la relación porque ambas columnas seleccionadas contienen valores duplicados. | Para crear una relación válida, al menos una columna del par que seleccione debe contener solo valores únicos. Puede editar las columnas para quitar duplicados o invertir el orden de las columnas para que la columna que contenga los valores únicos se use como columna búsqueda relacionada. |
| La columna contiene un valor nulo o vacío. | Las columnas de datos no se pueden unir entre sí en un valor NULL. Para cada fila, debe existir un valor en ambas columnas que se utilizan en una relación. |
Tareas relacionadas
| Tema | Descripción |
|---|---|
| Crear una relación entre dos tablas (SSAS tabular) | Describe cómo crear manualmente una relación entre dos tablas. |
| Eliminar relaciones (SSAS Tabular) | Describe cómo eliminar una relación y las ramificaciones de eliminar relaciones. |
Véase también
Tablas y columnas (SSAS tabular)
Importar Datos (SSAS Tabular)