Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Diseño de modelos de datos: ¿muchas a muchas relaciones?

¡Hola! Esta es más una pregunta general. Tengo la oportunidad de diseñar cómo se ingresan los datos para un informe, y quiero que sea lo más robusto y fácil de trabajar posible.

Tengo dos tablas: RepairTable y FailureTable. La tabla de fallos registra cada vez que falla algún activo. RepairTable es una lista de los activos problemáticos seleccionados (generados manualmente) y las fechas en que se inspeccionan y reparan. Tenía estas tablas configuradas en una relación de uno a muchos (RepairTable a FailureTable), y podría usarlas para responder preguntas como "¿Cuántas veces ha fallado Q1-701 en el último año?" o "¿Ha fallado Q1-703 después de su fecha de reparación"?

ReadTheIron_0-1643053619032.png

Ahora queremos entrar en un segundo ciclo de reparación, y hemos identificado una nueva lista de activos problemáticos para inspeccionar y reparar. Pero, ¿qué hacemos con los activos que aparecen en la primera y en la segunda lista?

Podríamos retirar la primera lista por completo y simplemente operar fuera de la nueva lista. Todas las imágenes existentes seguirían funcionando. Sin embargo, entonces no tendría forma de responder preguntas como "¿Cuántas veces se ha reparado Q1-702"?

ReadTheIron_1-1643054069865.png

Podríamos agregar la nueva lista a la misma tabla que la lista anterior y agregar un campo para mostrar a qué ciclo pertenece un activo. Sin embargo, esto rompería la relación de uno a muchos con FailureTable. No sé si el informe se puede hacer para trabajar con una relación de muchos a muchos o no.

ReadTheIron_2-1643054327694.png

¿Hay otras opciones en las que no estoy pensando? Me encantaría poder alternar el informe entre "lista actual" y "todo el tiempo" para responder preguntas como "qué activos fallaron después de ser reparados" y "qué activos fallaron en la última semana".

1 ACCEPTED SOLUTION

Solo con pensarlo bien, podría ir más allá de esto.

  • Tenga 1 tabla, que es una lista de todos los activos distintos e incluye una columna para marcar los activos problemáticos.
  • Combine sus tablas existentes en una sola tabla de hechos con:

Fecha, AssetName, EventType

Donde EventType es uno de, Inspeccionado, Reparado, Fallido.

  • Finalmente, tenga una tabla de fechas que contenga columnas que marquen el ciclo de reparación.

Thay debe ser entonces muy flexible.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

¡Gracias! Terminé haciendo la tabla de activos distinta en DAX ya que todavía soy inestable en PowerQuery, pero está funcionando muy bien hasta ahora.

Syndicate_Admin
Administrator
Administrator

¡Gracias! Esta dirección tiene sentido. ¿Cuáles serían las ventajas de usar DAX sobre Power Query o viceversa? (Por lo que vale, tengo varias RepairTables para diferentes clases de activos).

Por lo tanto, en el modo de importación no hay diferencia en la compresión/rendimiento de una tabla calculada en DAX y una tabla calculada en Power Query. Dicho esto, la sabiduría convencional es empujar los pasos de ETL lo más cerca posible de la fuente, por lo que tendería a inclinarme hacia Power Query. (Tenga en cuenta que las columnas calculadas no están comprimidas, así como ninguna columna calculada). Si va a Power Query, también le permite separar la lógica en un flujo de datos que tiende a hacer que las cosas sean más escalables.

En términos de múltiples tablas de reparación, también lo fusionaría todo en uno y tendría una dimensión que describe las clases de activos.

Syndicate_Admin
Administrator
Administrator

Creo que crearía una dimensión de activos que es solo una lista distinta de todos los activos. Puede hacerlo en PowerQuery o directamente en DAX con una tabla calculada:

DISTINCT (
	UNION (
		DISTINCT ( RepairTable[AssestName] ),
		DISTINCT ( FailureTable[AssetName] )
		)
)

Eso puede tener una relación de 1 a muchos con ambas mesas.

Si luego tuviera una tabla de fechas personalizada que tuviera una columna que indicara el ciclo de reparación, podría filtrar de cualquier manera que necesite.

Si quisiera proporcionar un conjunto de datos para cada tabla, podría intentar simularlo si necesita más ayuda.

Solo con pensarlo bien, podría ir más allá de esto.

  • Tenga 1 tabla, que es una lista de todos los activos distintos e incluye una columna para marcar los activos problemáticos.
  • Combine sus tablas existentes en una sola tabla de hechos con:

Fecha, AssetName, EventType

Donde EventType es uno de, Inspeccionado, Reparado, Fallido.

  • Finalmente, tenga una tabla de fechas que contenga columnas que marquen el ciclo de reparación.

Thay debe ser entonces muy flexible.

Helpful resources

Announcements
Fabcon_Europe_Social_Bogo

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors
Top Kudoed Authors