Cómo relacionar dos tablas cuando hay varias rutas

Un usuario Pregunto ✅

delicioso

Tengo dos mesas:
1) Factura de ventas: encabezado de ventas desnormalizado y artículo de línea para que el nivel más bajo de granularidad sea el artículo de línea.
2) Cargo por flete: cargos por flete que pueden ser a nivel de encabezado o de línea de pedido.

Modelo actual:
La tabla de factura de venta tiene una medida de cargo de flete que se asigna a la granularidad de la tabla (nivel de línea). Si se trata de una línea de pedido, se deja como está. Si se trata de un flete de cabecera, entonces asigno el flete de manera uniforme a través de las líneas de pedido. Todo esto se hace en el código fuente SQL de la tabla.
La tabla de cargos de flete se ingresa tal cual desde el sistema de origen y tiene filas relacionadas con la factura de ventas tanto en el encabezado como en los niveles de línea (uno u otro). Tengo el ID del encabezado de la factura de venta en todas las filas. Tengo el Id. De línea de la factura de venta en todas las filas en las que el flete se encuentra a nivel de artículo de línea.

Problema:
Estas dos tablas funcionan como se esperaba cuando se utilizan de forma independiente. El problema es que los usuarios quieren poder desglosar desde la tabla Factura de venta hasta la tabla Cargo de flete y ver los cargos relacionados. Parece bastante fácil relacionar las dos tablas utilizando el Id. Del encabezado de ventas. Sin embargo, si el usuario está viendo un informe que está abajo en el nivel de línea y desglosa los cargos de flete, obtendría todos los cargos relacionados con la factura (todos los cargos de encabezado y nivel de línea) cuando solo deberían ver la línea relacionada Cargos de nivel.

Tengo la sensación de que estoy pasando por alto un simple problema de modelaje. Lo que no quiero hacer es usar DAX en cada informe para controlar este comportamiento. Me gustaría que se manejara una vez en el modelo. ¿Algunas ideas?

Hola @delish

¿Es este problema resuelto?
Si está descuidado, ¿podría aceptarlo como una solución para cerrar este caso y ayudar a los demás miembros a encontrarlo más rápidamente?
Si no es así, no dudes en hacérmelo saber.
Atentamente
Maggie

kevderbeste

Hola @delish, creo que tu problema es una relación an en el modelo. Para corregir esta situación, necesita como yo la llamo una «tabla puente», que tiene en esta la clave principal de la tabla de hecho distinta, y con esto puede crear una «n a 1» y «1 a n» relación.

También necesita tener la relación en ambas direcciones, esto se puede configurar en cada relación, con doble clic sobre la línea de relación y cambiar la opción a ambas en Esquina inferior derecha

Para esta solución, debe duplicar la tabla de hechos, eliminar todas las columnas excepto la clave principal y luego eliminar los duplicados para tener valores distintos para la clave j primaria.

Les dejo un .pbix con el ejemplo, en este caso mi dato es hoja3 y la segunda tabla es hoja4, y la clave de relación es fecha_uno.

https://1drv.ms/u/s!AtEkAF7ffIsqg8RVODnlZbEd4YtOuw?e=ZigpeN

Avísame si mi solución es útil.

Gracias y saludos.

delicioso

En respuesta a kevderbeste

Gracias por la sugerencia. Desafortunadamente, este no es un problema de muchos a muchos. El problema es que quiero poder ver las filas relacionadas con el encabezado o la línea, según el contexto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *