Crear y administrar relaciones en Power BI Desktop
Al tener varias tablas, lo más probable es que vaya a realizar un análisis con los datos de todas ellas. Las relaciones entre esas tablas son necesarias para calcular los resultados de forma precisa y mostrar la información correcta en los informes. En la mayoría de los casos no tendrá que hacer nada. La característica de detección automática lo hace automáticamente. Aunque es posible que, en ocasiones, tenga que crear relaciones o realizar cambios en una relación. En cualquier caso, es importante entender las relaciones en Power BI Desktop y cómo crearlas y editarlas.
Detección automática durante la carga
Si consulta dos o más tablas al mismo tiempo, cuando se carguen los datos, Power BI Desktop intenta buscar y crear relaciones automáticamente. Las opciones de relación Cardinalidad, Dirección de filtro cruzado y Activar esta relación se establecen automáticamente. Power BI Desktop examina los nombres de columna en las tablas que se consultan para determinar si hay posibles relaciones. Si las hay, esas relaciones se crean automáticamente. Si Power BI Desktop no puede determinar con un alto nivel de confianza que hay una coincidencia, no crea automáticamente la relación. Sin embargo, puede usar el cuadro de diálogo Administrar relaciones para crear o modificar manualmente las relaciones.
Creación de una relación con detección automática
En la pestaña Modelado, haga clic en Administrar relaciones>Detección automática.
Crear una relación de forma manual
En la pestaña Modelado, haga clic en Administrar relaciones>Nuevo.
En el cuadro de diálogo Crear relación, en la primera lista desplegable de tablas, seleccione una tabla. Seleccione la columna que quiera usar en la relación.
En la segunda lista desplegable de tablas, seleccione la otra tabla que quiera incluir en la relación. Seleccione la otra columna que quiera usar y seleccione Aceptar.
De forma predeterminada, Power BI Desktop configura automáticamente las opciones Cardinalidad (dirección), Dirección de filtro cruzado y Activar esta relación en la nueva relación. Sin embargo, puede cambiar esta configuración si es necesario. Para obtener más información, consulte Descripción de las opciones adicionales.
Si ninguna de las tablas seleccionadas para la relación tiene valores únicos, verá el siguiente error: Una de las columnas debe tener valores únicos. Al menos una tabla de una relación debe tener una lista distinta y única de valores de clave, que es un requisito común para todas las tecnologías de bases de datos relacionales.
Si detecta ese error, hay un par de formas de corregir el problema:
- Usar Quitar filas duplicadas para crear una columna con valores únicos. El inconveniente de este enfoque es que podría perder información al quitar filas duplicadas. A menudo, una clave (fila) se duplica por un buen motivo.
- Agregar una tabla intermedia hecha de la lista de valores de claves distintos en el modelo, que luego se vincula a ambas columnas originales de la relación.
Para más información, consulte esta entrada de blog.
Como alternativa, en los diseños del diagrama de vista Modelo, puede arrastrar y colocar una columna de una tabla a una columna de otra tabla para crear una relación.
Editar una relación
Hay dos maneras de editar una relación en Power BI.
El primer método para editar una relación es usar las relaciones de edición en el panel Propiedades de lavista Modelo, donde puede seleccionar cualquier línea entre dos tablas para ver las opciones de relación en el panel Propiedades. Asegúrese de expandir el panel Propiedades para ver las opciones de relación.
También puede ver una demostración en vídeo de edición de relaciones en el panel Propiedades.
El otro método de edición de una relación es usar el cuadro de diálogo Editor de relaciones, que puede abrir muchas maneras desde dentro de Power BI Desktop. En la lista siguiente se muestran diferentes formas de abrir el cuadro de diálogo Editor de relaciones:
En la vista Informe, realice cualquiera de las acciones siguientes:
- Seleccione la cinta Modelado, >Administrar relaciones y, a continuación seleccione la relación y seleccione Editar.
- Seleccione una tabla en la lista Campos y, a continuación, seleccione la cinta Herramientas de tabla, >Administrar relaciones, luego seleccione la relación y a continuación seleccione Editar.
En la vista Datos, seleccione la cinta Herramientas de tabla, >Administrar relaciones, luego seleccione la relación y, a continuación, elija Editar.
En la vista Modelo, realice cualquiera de las acciones siguientes:
- Seleccione la cinta Inicio, >Administrar relaciones, luego elija la relación y, a continuación, seleccione Editar.
- Haga doble clic en cualquier línea entre dos tablas.
- Haga clic con el botón derecho en cualquier línea entre dos tablas y, a continuación, elija Propiedades.
- Seleccione cualquier línea entre dos tablas y, a continuación, elija Abrir editor de relaciones en el panel Propiedades.
Por último, también puede editar una relación desde cualquier vista, hacer clic con el botón derecho o seleccionar los puntos suspensivos para llegar al menú contextual de cualquier tabla, seleccionar Administrar relaciones, seleccionar la relación y, después, Editar
En la imagen siguiente se muestra una captura de pantalla de la ventana Editar relación.
Edición de relaciones mediante diferentes métodos
Utilizar elcuadro de diálogo Editar relaciones es una experiencia más guiada para editar relaciones en Power BI y actualmente está en versión preliminar. Puede ver una vista previa de los datos en cada tabla. A medida que selecciona columnas diferentes, la ventana valida automáticamente la relación y ofrece las selecciones de cardinalidad y filtro cruzado adecuadas.
La edición de relaciones en el panel Propiedades es un enfoque simplificado para editar relaciones en Power BI. Solo verá los nombres y columnas de tabla desde las que puede elegir, no se le presentará una vista previa de datos y las opciones de relación que realice solo se validan al seleccionar Aplicar cambios. El uso del panel Propiedades y su enfoque simplificado reduce el número de consultas generadas al editar una relación, lo que puede ser importante para escenarios de macrodatos, especialmente cuando se usan conexiones de DirectQuery. Las relaciones creadas con el panel Propiedades también pueden ser más avanzadas que las relaciones permitidas para crearse en el cuadro de diálogo Editar relaciones.
También puede seleccionar varias relaciones en los diseños del diagrama de vista Modelo presionando la tecla Ctrl y seleccionando más de una línea para elegir varias relaciones. Las propiedades comunes se pueden editar en el panel Propiedades y Aplicar cambios procesa los cambios en una sola transacción.
También se pueden eliminar relaciones únicas o seleccionadas presionando Eliminar en el teclado. No se puede deshacer la acción de eliminación, por lo que un cuadro de diálogo le pide que confirme la eliminación de las relaciones.
Importante
La edición de relaciones en la característica del panel de propiedades está actualmente en versión preliminar. Mientras se encuentre en versión preliminar, es probable que la funcionalidad y la documentación cambien. Para habilitar esta característica en Power BI Desktop, vaya a Opciones de archivo > y configuración > Opciones Características > de vista previa y, a continuación, en la sección GLOBAL, active la casilla situada junto al panel Relación.
Configuración de más opciones
Al crear o editar una relación, puede configurar más opciones. De forma predeterminada, Power BI Desktop configura automáticamente más opciones en función de una mejor aproximación, que puede ser diferente para cada relación según los datos de las columnas.
Cardinalidad
La opción Cardinalidad puede tener una de las siguientes opciones:
Varios a uno (*:1): una relación de varios a uno es el tipo más común de relación predeterminada. Significa que la columna de una tabla concreta puede tener más de una instancia de un valor y que la otra tabla relacionada, a menudo conocida como tabla de búsqueda, solo tiene una instancia de un valor.
Uno a uno (1:1) : en una relación uno a uno, la columna de una tabla solo tiene una instancia de un valor determinado y la otra tabla relacionada solo tiene una instancia de un valor determinado.
Uno a varios (1:*) : en una relación uno a varios, la columna de una tabla solo tiene una instancia de un valor y la otra tabla relacionada puede tener más de una instancia de un valor.
Varios a varios (*:*): con los modelos compuestos, puede establecer relaciones de varios a varios entre tablas, lo que elimina los requisitos de los valores únicos de las tablas. También permite descartar las soluciones alternativas anteriores, como el hecho de presentar nuevas tablas solo para establecer relaciones. Para obtener más información, consulte Relaciones con una cardinalidad de varios a varios.
Para obtener más información sobre cuándo cambiar la cardinalidad, consulte Descripción de las opciones adicionales.
Dirección de filtro cruzado
La opción Dirección de filtro cruzado puede tener una de las siguientes opciones:
Ambos: indica que, a efectos de filtrado, ambas tablas se tratan como si fueran una sola tabla. La opción Ambos funciona bien con una única tabla que tenga muchas tablas de búsqueda a su alrededor. Un ejemplo es una tabla de datos reales de ventas con una tabla de búsqueda del departamento. Esta configuración suele denominarse configuración de esquema de estrella (una tabla central con varias tablas de búsqueda). Aunque, si tiene dos o más tablas que también tengan tablas de búsqueda (con algo en común), no querrá usar la opción Ambos. Para continuar con el ejemplo anterior, en este caso, también dispone de una tabla de ventas de presupuesto que registra el presupuesto de destino para cada departamento. Además, la tabla de departamento está conectada a la tabla de presupuesto y de ventas. Evite la opción Ambos para este tipo de configuración.
Único: dirección predeterminada más común, que significa que las opciones de filtrado en tablas conectadas trabajan sobre la tabla donde se agregan los valores. Si importa un modelo de datos de Power Pivot o anterior en Excel 2013, todas las relaciones tienen una dirección única.
Para obtener más información sobre cuándo cambiar la dirección de filtro cruzado, consulte Descripción de las opciones adicionales.
Activar esta relación
Si se activa, significa que la relación actúa como la relación predeterminada y activa. En casos donde hay más de una relación entre dos tablas, la relación activa proporciona una manera para que Power BI Desktop cree automáticamente visualizaciones que incluyan las dos tablas.
Consulte Descripción de las opciones adicionales para obtener más información sobre cuándo activar determinada relación.
Descripción de las relaciones
Una vez ha conectado juntas dos tablas con una relación, puede trabajar con los datos en ambas tablas como si fueran una sola tabla. A continuación, no tiene que preocuparse por los detalles de la relación o aplanar esas tablas en una sola tabla antes de importarlas. En muchas situaciones, Power BI Desktop puede crear automáticamente relaciones por usted. Sin embargo, si Power BI Desktop no puede determinar con un grado alto de certeza que deba existir una relación entre dos tablas, no creará la relación automáticamente. En ese caso, deberá hacerlo usted.
Vamos a hacer un breve tutorial para mostrarle mejor cómo funcionan las relaciones en Power BI Desktop.
Sugerencia
Puede completar esta lección por su cuenta:
- Copie la siguiente tabla ProjectHours en una hoja de cálculo de Excel (sin incluir el título), seleccione todas las celdas y elija Insertar>Tabla.
- En el cuadro de diálogo Crear tabla, seleccione Aceptar.
- Seleccione cualquier celda de la tabla, seleccione Diseño de tabla>Nombre de tabla y especifique ProjectHours.
- Haga lo mismo para la tabla CompanyProject.
- Importe los datos mediante Obtener datos en Power BI Desktop. Seleccione ambas tablas como origen de datos y, luego, Cargar.
Esta primera tabla, ProjectHours, es un registro de los vales de trabajo que registran el número de horas que una persona ha trabajado en determinado proyecto.
ProjectHours
Ticket | SubmittedBy | Hours | Project | DateSubmit |
---|---|---|---|---|
1001 | Brewer, Alan | 22 | Azul | 1/1/2013 |
1002 | Brewer, Alan | 26 | Rojo | 2/1/2013 |
1003 | Ito, Shu | 34 | Amarillo | 12/4/2012 |
1004 | Brewer, Alan | 13 | Naranja | 1/2/2012 |
1005 | Bowen, Eli | 29 | Púrpura | 1/10/2013 |
1006 | Bento, Nuno | 35 | Verde | 2/1/2013 |
1007 | Hamilton, David | 10 | Amarillo | 1/10/2013 |
1008 | Han, Mu | 28 | Naranja | 1/2/2012 |
1009 | Ito, Shu | 22 | Púrpura | 2/1/2013 |
1010 | Bowen, Eli | 28 | Verde | 10/1/2013 |
1011 | Bowen, Eli | 9 | Azul | 10/15/2013 |
Esta segunda tabla, CompanyProject, es una lista de proyectos con una prioridad asignada: A, B o C.
CompanyProject
ProjName | Priority |
---|---|
Azul | A |
Rojo | B |
Verde | C |
Amarillo | C |
Púrpura | B |
Naranja | C |
Observe que cada tabla tenga una columna de proyecto. Cada una tiene un nombre ligeramente distinto, pero los valores parecen iguales. Esta diferencia es importante y volveremos a abordarla en breve.
Ahora que tenemos nuestras dos tablas importadas en un modelo, vamos a crear un informe. Lo primero que queremos obtener es el número de horas presentadas por prioridad del proyecto, así que seleccionamos Priority y Hours en el panel Campos.
Si observamos nuestra tabla en el lienzo del informe, verá que el número de horas es de 256 para cada proyecto, que es también el total. Claramente este número no es correcto. ¿Por qué? Esto se debe a que no se puede calcular una suma total de valores de una tabla (Hours en la tabla Project), segmentada por valores en otra tabla (Priority en la tabla CompanyProject) sin establecer una relación entre estas dos tablas.
Por lo tanto, vamos a crear una relación entre estas dos tablas.
¿Recuerda las columnas que vimos en ambas tablas, con un nombre de proyecto, pero con valores similares? Utilizaremos estas dos columnas para crear una relación entre las tablas.
¿Por qué estas columnas? Bueno, si miramos la columna Project de la tabla ProjectHours, veremos valores como Azul, Rojo, Amarillo, Naranja, etc. De hecho, veremos varias filas que tienen el mismo valor. En efecto, tenemos muchos valores de color para Project.
Si miramos la columna ProjName de la tabla CompanyProject, veremos que solo hay uno de cada uno de los valores de color para el nombre de proyecto. El valor de cada color en esta tabla es único y eso es importante, porque podemos crear una relación entre estas dos tablas. En este caso, una relación varios a uno. En una relación de varios a uno, al menos una columna en una de las tablas debe contener valores únicos. Hay algunas opciones más para ciertas relaciones, que veremos más adelante. Por ahora, vamos a crear una relación entre las columnas del proyecto en cada una de nuestras dos tablas.
Para crear la nueva relación
En la pestaña Modelado, haga clic en Administrar relaciones.
En Administrar relaciones, seleccione Nuevo para abrir el cuadro de diálogo Crear relación, donde se pueden seleccionar las tablas, las columnas y cualquier otra opción que queramos para nuestra relación.
En la primera lista desplegable, seleccione ProjectHours como primera tabla y, luego, elija la columna Project. Se trata del lado *varios de nuestra relación.
En la segunda lista desplegable, CompanyProject está preseleccionada como segunda tabla. Seleccione la columna ProjName. Se trata del lado uno de nuestra relación.
Conserve los valores predeterminados para las opciones de relación y seleccione Aceptar.
En el cuadro de diálogo Administrar relaciones, seleccione Cerrar.
En aras de una divulgación completa, acaba de crear esta relación por las malas. Podría haber seleccionado Detección automática en el cuadro de diálogo Administrar relaciones. De hecho, la detección automática habría creado automáticamente la relación por usted al cargar los datos si las dos columnas tuvieran el mismo nombre.
Ahora, echemos un vistazo en la tabla del lienzo del informe una vez más.
Ahora se ve mucho mejor, ¿verdad?
Cuando se suman horas por Priority, Power BI Desktop busca todas las instancias de los valores de color únicos en la tabla de búsqueda CompanyProject, busca todas las instancias de cada uno de esos valores en la tabla ProjectHours y calcula una suma total para cada valor único.
Con la detección automática, puede que ni siquiera tuviera que hacer tanto.
Descripción de las opciones adicionales
Cuando se crea una relación, ya sea con detección automática o de forma manual, Power BI Desktop configura automáticamente las opciones adicionales según los datos de las tablas. Estas propiedades de relación adicionales se encuentran en la parte inferior de los cuadros de diálogo Crear relación y Editar relación.
Power BI establece típicamente estas opciones automáticamente y no tendrá que ajustarlas. Si bien hay varias situaciones en las que podría querer configurar estas opciones por su cuenta.
Actualización de relaciones automáticas
Puede administrar cómo Power BI trata y ajusta automáticamente las relaciones en los informes y modelos. Para especificar cómo Power BI controla las opciones de relaciones, seleccione Archivo>Opciones y configuración>Opciones en Power BI Desktop y elija Carga de datos en el panel izquierdo. Aparecerán las opciones para Relaciones.
Hay tres opciones que se pueden seleccionar y habilitar:
Importar relaciones de orígenes de datos en la primera carga: Esta opción está activada de forma predeterminada. Si se selecciona, Power BI comprobará las relaciones definidas en el origen de datos, tales como las relaciones entre la clave externa y la clave principal en el almacenamiento de datos. Si existen dichas relaciones, se reflejarán en el modelo de datos de Power BI al cargar los datos por primera vez. Esta opción permite empezar a trabajar rápidamente con el modelo, sin necesidad de tener que buscar o definir esas relaciones por su cuenta.
Actualizar o eliminar las relaciones al actualizar los datos: Esta opción está desactivada de forma predeterminada. Si lo selecciona, Power BI comprueba los cambios en las relaciones de las fuentes de datos cuando se actualiza el modelo semántico. Si dichas relaciones cambian o se quitan, Power BI refleja esos cambios en su propio modelo de datos, y las actualiza o elimina para que coincidan.
Advertencia
No se recomienda seleccionar esta opción si utiliza la seguridad de nivel de fila basada en las relaciones definidas. Si se quita una relación de la que depende la configuración de RLS, el modelo puede resultar menos seguro.
Detectar automáticamente nuevas relaciones después de cargar los datos: Esta opción se describe en Detección automática durante la carga.
Las futuras actualizaciones de datos requieren una cardinalidad diferente
Normalmente, Power BI Desktop puede determinar automáticamente la mejor cardinalidad para la relación. Si tiene que reemplazar la configuración automática, porque sabe que los datos cambiarán en el futuro, puede cambiarla en el control Cardinalidad. Veamos un ejemplo donde se debe seleccionar una cardinalidad diferente.
La tabla CompanyProjectPriority es una lista de todos los proyectos de la empresa y su prioridad. La tabla ProjectBudget es el conjunto de proyectos para los que se ha aprobado presupuesto.
CompanyProjectPriority
ProjName | Priority |
---|---|
Azul | A |
Rojo | B |
Verde | C |
Amarillo | C |
Púrpura | B |
Naranja | C |
Tabla ProjectBudget
Proyectos aprobados | BudgetAllocation | AllocationDate |
---|---|---|
Azul | 40,000 | 12/1/2012 |
Rojo | 100,000 | 12/1/2012 |
Verde | 50 000 | 12/1/2012 |
Si creamos una relación entre la columna ApprovedProjects de la tabla ProjectBudget y la columna ProjectName de la tabla CompanyProjectPriority, Power BI establece automáticamente Cardinalidad en Uno a uno (1:1) y Dirección de filtro cruzado en Ambos.
El motivo por el que Power BI crea esta configuración es porque, para Power BI Desktop, la mejor combinación de las dos tablas es la siguiente:
ProjName | Priority | BudgetAllocation | AllocationDate |
---|---|---|---|
Azul | A | 40,000 | 12/1/2012 |
Rojo | B | 100 000 | 12/1/2012 |
Verde | C | 50,000 | 12/1/2012 |
Amarillo | C | ||
Púrpura | B | ||
Naranja | C |
Hay una relación uno a uno entre nuestras dos tablas porque no hay ningún valor que se repita en la columna ProjName de la tabla combinada. La columna ProjName es única porque cada valor se produce solo una vez, por lo que las filas de las dos tablas se pueden combinar directamente sin ninguna duplicación.
Sin embargo, supongamos que sabe que los datos cambiarán la próxima vez que los actualice. Una versión actualizada de la tabla ProjectBudget tiene ahora filas adicionales para los proyectos Azul y Rojo:
ProjectBudget
Proyectos aprobados | BudgetAllocation | AllocationDate |
---|---|---|
Azul | 40,000 | 12/1/2012 |
Rojo | 100,000 | 12/1/2012 |
Verde | 50 000 | 12/1/2012 |
Azul | 80,000 | 6/1/2013 |
Rojo | 90,000 | 6/1/2013 |
Estas filas adicionales implican que la mejor combinación de las dos tablas tiene ahora el siguiente aspecto:
ProjName | Priority | BudgetAllocation | AllocationDate |
---|---|---|---|
Azul | A | 40,000 | 12/1/2012 |
Rojo | B | 100 000 | 12/1/2012 |
Verde | C | 50,000 | 12/1/2012 |
Amarillo | C | ||
Púrpura | B | ||
Naranja | C | ||
Azul | A | 80000 | 6/1/2013 |
Rojo | B | 90000 | 6/1/2013 |
En esta nueva tabla combinada, la columna ProjName tiene valores repetidos. Las dos tablas originales no tienen una relación uno a uno, una vez que se actualiza la tabla. En este caso, como sabemos que las actualizaciones futuras harán que la columna ProjName tenga duplicados, queremos establecer Cardinalidad en Muchos a uno (*:1), donde el lado muchos se asigna a ProjectBudget y el lado uno, a CompanyProjectPriority.
Ajuste de la dirección del filtro cruzado para un conjunto complejo de tablas y relaciones
Para la mayoría de las relaciones, la dirección de filtro cruzado se establece en Ambos. Sin embargo, hay algunas circunstancias más poco frecuentes en las que es posible que tenga que establecer esta opción de forma diferente a la predeterminada. Un ejemplo es si importa un modelo de una versión más antigua de Power Pivot, donde cada relación se establece para una única dirección.
La opción Ambos permite que Power BI Desktop trate todos los aspectos de las tablas conectadas como si fueran una sola tabla. Sin embargo, existen algunas situaciones en las que Power BI Desktop no puede establecer la dirección de filtro cruzado de una relación en Ambos y también mantener un conjunto ambiguo de valores predeterminados disponibles a efectos de la elaboración de informes. Si la dirección de filtro cruzado de una relación no se establece en Ambos, suele ser porque se crearía ambigüedad. Si el valor predeterminado del filtro cruzado no funciona en su caso, intente configurarlo en una tabla determinada o en Ambos.
El filtro cruzado de una sola dirección funciona para muchas situaciones. De hecho, si ha importado un modelo de PowerPivot en Excel 2013 o versiones anteriores, todas las relaciones se establecerán en una dirección única. Una dirección única significa que las opciones de filtrado en tablas conectadas funcionan en la tabla donde sucede el trabajo de agregación. A veces, comprender el filtrado cruzado puede ser un poco complicado; veamos un ejemplo.
Con el filtro cruzado de dirección única, si crea un informe que resuma las horas del proyecto, podrá optar por resumir (o filtrar) por la tabla CompanyProject y su columna Priority o por la tabla CompanyEmployee y su columna City. Sin embargo, si quiere contar el número de empleados por proyecto (una pregunta menos común), esto no funcionará. Obtendrá una columna de valores que son los mismos. En el ejemplo siguiente, la dirección de filtro cruzado de ambas relaciones se establece en una dirección única: hacia la tabla ProjectHours. En el cuadro Valores, el campo Proyecto se establece en Recuento:
La especificación del filtro fluirá de CompanyProject a ProjectHours (como se muestra en la imagen siguiente), pero no hasta CompanyEmployee.
Sin embargo, si establece la dirección de filtro cruzado en Ambos, sí funcionará. La opción Ambos permite que la especificación del filtro fluya hasta CompanyEmployee.
Con la dirección de filtro cruzado establecida en Ambos, nuestro informe parece ahora correcto:
El filtrado cruzado en ambas direcciones funciona bien con un modelo de relaciones de tablas como el patrón mostrado anteriormente. Este esquema se denomina habitualmente esquema de estrella, similar al siguiente:
La dirección del filtro cruzado no funciona bien con un patrón más general que se suele encontrarse en las bases de datos, como en este diagrama:
Si tiene un patrón de tabla como este, con bucles, el filtro cruzado puede crear un conjunto ambiguo de relaciones. Por ejemplo, si suma un campo de Tabla X y después elige filtrar por un campo en la Tabla Y, no resulta claro cómo debe viajar el filtro, si a través de la tabla superior o la tabla inferior. Un ejemplo común de este tipo de patrón se presenta con TableX como tabla de ventas con datos reales y TableY como tabla de datos de presupuesto. A continuación, las tablas en la parte central son tablas de búsqueda que utilizan las dos tablas, como la de división o de región.
De igual modo que con las relaciones activas e inactivas, Power BI Desktop no permitirá que una relación se establezca en Ambos si eso crease ambigüedad en los informes. Hay varias maneras de controlar esta situación. Estas son las dos más comunes:
- Eliminar o marcar las relaciones como inactivas para reducir la ambigüedad. A continuación, puede establecer un filtro cruzado de relación en Ambos.
- Agregar una tabla dos veces (con un nombre diferente la segunda vez) para eliminar los bucles. Esto hace que el patrón de relaciones sea como un esquema de estrella. Con un esquema de estrella, todas las relaciones pueden establecerse en Ambos.
Relación activa incorrecta
Cuando Power BI Desktop crea automáticamente relaciones, a veces encuentra más de una relación entre dos tablas. Cuando esto sucede, solo una de las relaciones se establece para estar activa. La relación activa actúa como la relación predeterminada para que, al elegir los campos de dos tablas diferentes, Power BI Desktop pueda crear automáticamente una visualización por usted. Sin embargo, en algunos casos la relación seleccionada de forma automática puede ser incorrecta. Puede usar el cuadro de diálogo Administrar relaciones para establecer una relación como activa o inactiva, o bien establecer la relación activa en el cuadro de diálogo Editar relación.
Para garantizar que haya una relación predeterminada, Power BI Desktop solo permite una sola relación activa entre dos tablas en un momento dado. Por lo tanto, debe establecer primero la relación actual como inactiva y, luego, establecer la relación que quiere que esté activa.
Veamos un ejemplo. La primera tabla es ProjectTickets y la segunda tabla es EmployeeRole.
ProjectTickets
Ticket | OpenedBy | SubmittedBy | Hours | Project | DateSubmit |
---|---|---|---|---|---|
1001 | Perham, Tom | Brewer, Alan | 22 | Azul | 1/1/2013 |
1002 | Roman, Daniel | Brewer, Alan | 26 | Rojo | 2/1/2013 |
1003 | Roth, Daniel | Ito, Shu | 34 | Amarillo | 12/4/2012 |
1004 | Perham, Tom | Brewer, Alan | 13 | Naranja | 1/2/2012 |
1005 | Roman, Daniel | Bowen, Eli | 29 | Púrpura | 1/10/2013 |
1006 | Roth, Daniel | Bento, Nuno | 35 | Verde | 2/1/2013 |
1007 | Roth, Daniel | Hamilton, David | 10 | Amarillo | 1/10/2013 |
1008 | Perham, Tom | Han, Mu | 28 | Naranja | 1/2/2012 |
1009 | Roman, Daniel | Ito, Shu | 22 | Púrpura | 2/1/2013 |
1010 | Roth, Daniel | Bowen, Eli | 28 | Verde | 10/1/2013 |
1011 | Perham, Tom | Bowen, Eli | 9 | Azul | 10/15/2013 |
EmployeeRole
Employee | Role |
---|---|
Bento, Nuno | Administrador del proyecto |
Bowen, Eli | Responsable del proyecto |
Brewer, Alan | Administrador del proyecto |
Hamilton, David | Responsable del proyecto |
Han, Mu | Responsable del proyecto |
Ito, Shu | Responsable del proyecto |
Perham, Tom | Patrocinador del proyecto |
Roman, Daniel | Patrocinador del proyecto |
Roth, Daniel | Patrocinador del proyecto |
En realidad hay dos relaciones aquí:
Entre Employee en la tabla EmployeeRole y SubmittedBy en la tabla ProjectTickets.
Entre OpenedBy en la tabla ProjectTickets y Employee en la tabla EmployeeRole.
Si agregamos ambas relaciones al modelo (OpenedBy primero), el cuadro de diálogo Administrar relaciones mostrará que OpenedBy está activa:
Ahora, si creamos un informe que usa los campos Role y Employee de EmployeeRole y el campo Hours de ProjectTickets en una visualización de la tabla en el lienzo del informe, solo veremos patrocinadores del proyecto porque son los únicos que abrieron un vale del proyecto.
Podemos cambiar la relación activa y obtener SubmittedBy en lugar de OpenedBy. En Administrar relaciones, desactivamos la relación ProjectTickets(OpenedBy) con EmployeeRole(Employee) y, luego, activamos la relación EmployeeRole(Employee) con Project Tickets(SubmittedBy) .
Consulta de todas las relaciones en la vista Relación
A veces, el modelo tiene varias tablas y relaciones complejas entre ellas. La vista Relación de Power BI Desktop muestra todas las relaciones del modelo, su dirección y cardinalidad en un diagrama personalizable y fácil de entender.
Para obtener más información, consulte Vista de relaciones en Power BI Desktop.
Solución de problemas
En esta sección se proporcionan instrucciones e información para solucionar problemas al trabajar con relaciones en Power BI.
No se pueden determinar las relaciones entre campos
Power BI intenta mostrar los datos pertinentes en los objetos visuales mediante la inferencia de las relaciones del modelo que se está usando. A veces, estas inferencias no son obvias y es posible que le sorprenda ver un error en el objeto visual, lo que indica que no hay ninguna relación entre determinadas columnas.
Con el fin de explicar cómo determina Power BI si los campos están relacionados, vamos a usar un modelo de ejemplo para ilustrar algunos escenarios en las secciones siguientes. En la imagen siguiente se muestra el modelo de ejemplo que usaremos en los escenarios de ejemplo.
Escenario 1: Esquema de estrella tradicional y ninguna restricción de medida. En referencia al modelo de ejemplo de la imagen anterior, echemos un vistazo primero a las tablas Vendor, Purchases y Product de la mitad derecha de las imagen. Este ejemplo es un esquema de estrella tradicional con una tabla de hechos (Purchases) y dos tablas de dimensiones (Product y Vendor). La relación entre las tablas de dimensiones y la tabla de hechos es de uno a varios (un producto corresponde a varias compras, un proveedor corresponde a varias compras). En este tipo de esquema, podemos responder a preguntas como ¿Cuáles son las ventas del producto X?, ¿Cuáles son las ventas del proveedor Y? y ¿Qué productos vende el proveedor Y?
Si queremos correlacionar las tablas Products y Vendors, podemos hacerlo consultando la tabla Purchases para ver si hay una entrada con el mismo producto y proveedor. Una consulta de ejemplo podría tener un aspecto similar al siguiente ejemplo:
Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0
where CountRows(Purchases)>0
es una restricción implícita que agrega Power BI para asegurarse de que se devuelven los datos pertinentes.
Al realizar esta correlación por medio de la tabla Purchases, podemos devolver pares Product-Vendor que tienen al menos una entrada en una tabla de hechos y que tienen sentido desde la perspectiva de los datos. No se mostrarán combinaciones Product-Vendor para las que nunca se haya realizado una venta (serían inútiles para el análisis).
Escenario 2: Esquema de estrella tradicional y una restricción de medida. En el ejemplo anterior del escenario 1, si el usuario proporciona una restricción en forma de columna resumida (por ejemplo, Sum/Average/Count of Purchase Qty) o una medida de modelo (Distinct Count of VendID), Power BI puede generar una consulta en forma del siguiente ejemplo:
Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank
En tal caso, Power BI intenta devolver combinaciones con valores significativos para la restricción proporcionada por el usuario (no en blanco). Power BI no necesita agregar también su propia restricción implícita CountRows(Purchases)>0, como hizo en el escenario 1, porque la restricción proporcionada por el usuario es suficiente.
Escenario 3: Ningún esquema de estrella tradicional y ninguna restricción de medida. En este escenario, centramos nuestra atención en el centro del modelo, en las tablas Sales, Product y Purchases, donde tenemos una tabla de dimensiones (Product) y dos tablas de hechos (Sales y Purchases). Puesto que este ejemplo no es un esquema de estrella, no podemos responder al mismo tipo de preguntas que en el escenario 1. Supongamos que intentamos correlacionar las tablas Purchases y Sales. Como Purchases tiene una relación de varios a uno con Product y, por su parte, Product tiene una relación de uno a varios con Sales. Las ventas y las compras son indirectamente muchas a muchas. Podemos vincular un elemento de Producto con varios de Compras y de Ventas, pero no podemos vincular un elemento de Ventas con varios de Compras o viceversa. Solo podemos vincular varios elementos de Purchases con varios elementos de Sales.
En esta situación, si intentamos combinar Purchase[VenID] y Sales[CustID] en un objeto visual, Power BI no tiene una restricción concreta que se pueda aplicar debido a la relación de varios a varios entre esas tablas. Aunque podría haber restricciones personalizadas que se pueden aplicar a varios escenarios (las cuales no se derivan necesariamente de las relaciones establecidas en el modelo), Power BI no puede inferir una restricción predeterminada basándose únicamente en las relaciones. Si Power BI intentara devolver todas las combinaciones de las dos tablas, crearía una combinación cruzada de gran tamaño y devolvería datos no pertinentes. En lugar de esto, Power BI genera un error en el objeto visual, como el siguiente.
Escenario 4: Ningún esquema de estrella tradicional y una restricción de medida. Si tomamos el ejemplo del escenario 3 y agregamos una restricción proporcionada por el usuario en forma de columna resumida (Count of Product[ProdID], por ejemplo) o una medida de modelo (Sales[Total Qty]), Power BI puede generar una consulta en forma de Correlate Purchase[VenID] y Sales[CustID] en la que el elemento MeasureConstraint no está en blanco.
En este caso, Power BI respeta la restricción del usuario como la única restricción que debe aplicar y devuelve las combinaciones que generan valores que no están en blanco. El usuario ha guiado a Power BI al escenario que quiere y Power BI aplica las indicaciones.
Escenario 5: Una restricción de medida relacionada parcialmente con las columnas. Hay casos en los que la restricción de medida proporcionada por el usuario no está completamente relacionada con todas las columnas del objeto visual. Una medida de modelo siempre relaciona todo. Power BI trata este escenario como una caja negra cuando intenta buscar relaciones entre las columnas del objeto visual y da por hecho que el usuario sabe lo que hace. Pero las columnas resumidas como Sum, Average y otras similares elegidas de la interfaz de usuario solo pueden estar relacionadas con un subconjunto de las columnas o tablas usadas en el objeto visual en función de las relaciones de la tabla a la que pertenece cada columna. Por lo tanto, la restricción se aplica a algunos emparejamientos de columnas, pero no a todos. En este caso Power BI intenta encontrar restricciones predeterminadas que pueda aplicar para las columnas que no están relacionadas por la restricción proporcionada por el usuario (como en el escenario 1). Si Power BI no encuentra ninguna restricción, se devuelve el siguiente error.
Resolución de errores de relación
Cuando vea el error No se pueden determinar las relaciones entre los campos, realice los pasos siguientes para intentar resolverlo:
Compruebe el modelo. ¿Está configurado correctamente para los tipos de preguntas que quiere responder con el análisis? ¿Puede cambiar algunas de las relaciones entre tablas? ¿Puede evitar la creación de relaciones indirectas de varios a varios?
Considere la posibilidad de convertir un esquema en forma de V invertida en dos tablas y usar una relación directa de varios a varios entre ellas, como se describe en el artículo Aplicación de relaciones de varios a varios en Power BI Desktop.
Agregue una restricción al objeto visual en forma de una columna resumida o una medida de modelo.
Si agrega una columna resumida y sigue produciéndose un error, considere la posibilidad de usar una medida de modelo.
Contenido relacionado
Para obtener más información sobre los modelos y las relaciones, consulte los siguientes artículos: