cancel
Showing results for 
Search instead for 
Did you mean: 

Fabric is Generally Available. Browse Fabric Presentations. Work towards your Fabric certification with the Cloud Skills Challenge.

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
PBI November 2023 Update Carousel

Power BI Monthly Update - November 2023

Check out the November 2023 Power BI update to learn about new features.

Community News

Fabric Community News unified experience

Read the latest Fabric Community announcements, including updates on Power BI, Synapse, Data Factory and Data Activator.

Dashboard in a day with date

Exclusive opportunity for Women!

Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!

Power BI Fabric Summit Carousel

The largest Power BI and Fabric virtual conference

130+ sessions, 130+ speakers, Product managers, MVPs, and experts. All about Power BI and Fabric. Attend online or watch the recordings.

Top Solution Authors
Top Kudoed Authors