Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
¿Cómo podemos configurar tablas en una base de datos de SQL Server para que Power BI detecte automáticamente la cardinalidad de una a una relaciones con o sin la dirección del filtro cruzado?
Podemos obtener uno a muchos o muchos a uno agregando claves principales y claves externas, pero no podemos obtener una a una relaciones.
Necesitamos una a una relaciones para poder mostrar columnas de las tres tablas siguientes.
- Los clientes de la tabla tienen CustomerId como clave principal
- Table FoodOrders tiene CustomerId como clave extranjera
- Table DrinkOrders tiene CustomerId como clave extranjera
Solo podemos mostrar columnas de Customers y FoodOrders o DrinkOrders.
Hola @DirectQuery ,
¿Tienen sentido las sugerencias de los ingenieros? Si es así, marque amablemente la respuesta adecuada como una solución para ayudar a otros que tienen el problema similar y cerrar el caso. Si no, avísame y trataré de ayudarte más.
Saludos
Amy
Las sugerencias de los ingenieros no resuelven el problema.
De acuerdo, bien.
¿Puede ampliar exactamente lo que espera lograr (dada la estructura de su modelo y datos)?
Proud to be a Super User!
Paul on Linkedin.
Tome estas tres tablas de SQL Server DirectQuery cargadas con las relaciones detectadas como uno a uno.
Customerid | Nombre |
1 | John |
2 | Joe |
3 | María |
Customerid | FoodOrderId | víveres |
1 | 11 | Alimentos11 |
2 | 22 | Alimentos22 |
3 | 33 | Alimentos33 |
Customerid | DrinkOrderId | Beber |
1 | 44 | Bebida44 |
2 | 55 | Bebida55 |
3 | 66 | Bebida66 |
Mostrar esto en un informe.
Customerid | Nombre | FoodOrderId | DrinkOrderId | víveres | Beber |
1 | John | 11 | 44 | Alimentos11 | Bebida44 |
2 | Joe | 22 | 55 | Alimentos22 | Bebida55 |
3 | María | 33 | 66 | Alimentos33 | Bebida66 |
Vea si esto funciona:
Proud to be a Super User!
Paul on Linkedin.
@DirectQuery , Puede unir al Cliente con pedidos de alimentos y pedidos de bebidas y analizar los datos juntos.
Además, supongamos que toma una columna no resumida de pedidos de alimentos y el identificador de cliente del cliente, puede tomar cualquier agregado de pedidos de bebidas
@amitchandak, cuando tengo una tabla con campos de Customers y FoodOrders, Power BI me da este error si agredo campos de DrinkOrders.
No se pueden determinar las relaciones entre los campos
No se pueden mostrar los datos porque Power BI no puede determinar la relación entre dos o más campos.
@amitchandak escribió:@DirectQuery, Puede unir al Cliente con pedidos de alimentos y pedidos de bebidas y analizar los datos juntos.
Además, supongamos que toma una columna no resumida de pedidos de alimentos y el identificador de cliente del cliente, puede tomar cualquier agregado de pedidos de bebidas
En los objetos visuales, debe usar los campos de la tabla Customery, a continuación, agregar los campos o medidas de las otras tablas.
Si no utiliza el dield de la Tabla del Cliente para "puentear" los otros 2, obtendrá el error
Proud to be a Super User!
Paul on Linkedin.
Aparece el error si los clientes son uno a varios con FoodOrders y DrinkOrders.
No obtengo el error si los clientes son uno a uno con FoodOrders y DrinkOrders.
Si tengo 100 tablas de pedidos, no quiero cambiar manualmente las relaciones de uno a varios a uno a uno.
Power BI detecta automáticamente uno a varios, pero no puedo conseguir que detecte automáticamente las relaciones uno a uno de las bases de datos de SQL Server.
¿Qué son las tablas de dimensiones?
@PaulDBrown escribió:En los objetos visuales, debe usar los campos de la tabla Customery, a continuación, agregar los campos o medidas de las otras tablas.
Si no utiliza el campo de la tabla de clientes para "puentear" los otros 2, obtendrá el error.
Si tiene otros campos comunes a FoodOrders y DrinkOrders (por ejemplo, un campo de fecha, código postal, etc... también debe crear tablas de dimensiones para ellos y vincularlas en una relación de uno a varios con ambas tablas de hechos mediante los campos comunes.
Uno a uno está bien: solo significa que ambas tablas tienen valores únicos. Así que usted puede tener relaciones que son uno-a-uno o uno-a-muchos.
Lo que debe evitar a toda costa son las relaciones de varios a varios, ya que pueden causar estragos en los cálculos.
Las tablas de dimensiones tienen valores únicos de un campo determinado (y pueden tener más de un campo) que, a continuación, se utiliza para crear una relación con otras tablas. Estas tablas de dimensiones hacen que el modelo sea eficaz y se utilizan para segmentaciones de datos. filtros, expresiones de filtro en medidas....
Proud to be a Super User!
Paul on Linkedin.
Queremos mostrar los campos de la tabla Clientes y varias tablas De pedido sin cambiar manualmente las relaciones a uno a uno.
Power BI solo detecta automáticamente uno a varios y uno a varios nos da errores.
¿Hay alguna manera de detectar automáticamente uno a uno?
¿Hay alguna manera de usar relaciones de uno a varios para mostrar campos de la tabla Customers y varias tablas Order?
@PaulDBrown escribió:Uno a uno está bien: solo significa que ambas tablas tienen valores únicos. Así que usted puede tener relaciones que son uno-a-uno o uno-a-muchos.
Lo que debe evitar a toda costa son las relaciones de varios a varios, ya que pueden causar estragos en los cálculos.
Las tablas de dimensiones tienen valores únicos de un campo determinado (y pueden tener más de un campo) que, a continuación, se utiliza para crear una relación con otras tablas. Estas tablas de dimensiones hacen que el modelo sea eficaz y se utilizan para segmentaciones de datos. filtros, expresiones de filtro en medidas....
En primer lugar, debe tener cuidado de confiar en la detección automática de relaciones de tabla: es posible que haya algunas sorpresas o relaciones creadas entre campos que no son "correctos" o la relación deseable.
"Power BI solo detecta automáticamente uno a varios y uno a varios nos da errores."
¿En qué sentido te da errores una relación de uno a varios?
Proud to be a Super User!
Paul on Linkedin.
- Los clientes son uno a varios para FoodOrders
- Los clientes son uno a varios para DrinkOrders
- Informe de la tabla visual contiene campos de clientes y FoodOrders
En la ver anterior, Power BI muestra un error siguiente al agregar campos de DrinkOrders a la tabla visual de informe.
No se pueden determinar las relaciones entre los campos
No se pueden mostrar los datos porque Power BI no puede determinar la relación entre dos o más campos.
¿Puede mostrar la vista de modelo para las tablas afectadas + un ejemplo del objeto visual y especificar qué campos está utilizando y desde qué tablas?
Si el modelo está configurado correctamente, no recibirá este mensaje. Depende de las tablas de puente (tablas de dimensiones) que tiene que relacionar los campos,
Si intenta crear un objeto visual que no incluya campos de tablas de puente/dimensión, obtendrá este error.
Proud to be a Super User!
Paul on Linkedin.
No tengo una tabla de dimensiones. Sólo tengo tres mesas.
¿Qué debe tener la tabla de dimensiones para conectar a los clientes uno a varios con FoodOrders y DrinkOrders?
Puede que estemos teniendo un problema con la terminología.
Una tabla de dimensiones, o tabla de búsqueda, es una tabla que contiene al menos un campo con valores únicos que está vinculado a tablas de hechos (donde el mismo campo tiene varias instancias de los mismos valores) mediante una relación de uno a varios (o uno a uno). A veces, estas tablas de dimensiones se denominan "tablas de puente" porque se utilizan para crear un "puente" entre dos tablas que contienen un campo común.
Estos puentes/dimensiotables se utilizan en segmentaciones, filtros, medidas, etc. para habilitar el filtro conext necesario para permitir medidas que comparan valores de diferentes tablas (por ejemplo, ventas de una tabla frente a destino desde otra tabla mediante la tabla "tabla puente"/dimensión de "cliente".
Los campos de estas tablas Bridge/Dimension son el "enlace" entre las tablas de hechos. Sin ellos, los objetos visuales representarán el mensaje de error que está viendo (a menos que sus medidas incluyan una expresión como TREATAS en la expresión de filtro, pero debe ser un plan "b" o utilizarse si no se puede establecer una relación mediante una "tabla de puentes" - pero ignore este comentario entre corchetes ya que estamos buscando una solución para el propio modelo)
Como mencioné en mi publicación anterior, ¿puede publicar una imagen de su modelo (tablas relevantes) y qué campos está utilizando para crear su objeto visual?
Proud to be a Super User!
Paul on Linkedin.
Solo tengo tres tablas de la base de datos de SQL Server.
- Clientes
- FoodOrders
- DrinkOrders
No hay error al hacer clic en los campos de la segunda tabla.
Aparece un error al hacer clic en un campo de la tercera tabla.
La pregunta es ¿por qué necesita agregar los campos CustomerID de sus "Tablas de hechos" (es decir, las tablas FoodOrder y DrinkOrder)?
Una vez que tenga la tabla dimension (su tabla "Clientes")), solo utilice el campo (Customers[CustomerID]) de esta tabla en el objeto visual (no necesita los campos customerID de otras tablas).
El campo Customers[CustomerID] del objeto visual filtrará las filas de cada tabla de hechos para devolver los valores correspondientes a otras columnas que incluya en el objeto visual. No es necesario agregar las columnas CustomerID de las tablas de hechos)
Proud to be a Super User!
Paul on Linkedin.
Aparece el error cuando agredo cualquier columna. No importa qué columna agredo.
Estoy agregando campos CustomerID como una prueba para ver si obtengo el error.
Ok, veo lo que estás consiguiendo (he creado una muestra PBIX). Lamento mi confusión.
Aparece el error al agregar columnas de las tablas sin una agregación. Esto se debe a que la estructura de los datos no establece una relación entre cada columna (comida y bebida) para las tablas de hechos (son ocurrencias independientes). A menos que tenga un campo que establezca "qué bebida se pidió con cada alimento" (un identificador de pedido, por ejemplo), el objeto visual no puede establecer la relación entre las dos columnas, por lo tanto, obtiene el error.
1) Puede forzar una combinación "artificial" (es decir, representar las posibles combinaciones de alimentos y bebidas para cada cliente) ya sea fusionando las tablas en Power Query o creando una medida mediante la función CROSSJOIN (puede aplicar esta medida en el panel de filtro del objeto visual).
Crossjoin = CALCULATE(
DISTINCTCOUNT(Customers[CustomerID]),
CROSSJOIN(FoodOrders, DrinkOrders))
Pero como digo, esto es simplemente una representación de las posibles combinaciones
2) Si desea ver la lista exacta para cada cliente, cree una nueva tabla de dimensiones (la he llamado "Tipo") uniéndose a los campos de alimentos y bebidas:
Type = UNION(VALUES(FoodOrders[Food]), VALUES(DrinkOrders[Drink]))
Ahora crea una relación entre esta nueva tabla y las tablas de hechos que vinculan Type con FoodOrder[Food] y DrinkOrder[Drink]
y utilice los campos Customers[CustomerID] y Type[Type] para crear sus objetos visuales:
¡Disculpas de nuevo por mi confusión inicial!
Proud to be a Super User!
Paul on Linkedin.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |