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

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.

Reply
Syndicate_Admin
Administrator
Administrator

Aplanar, Nieve, Estrella (¿"forzar" una dimensión común?)

Mi modelo de datos consta de Estudiantes, Programas, Solicitudes, Inscripciones, Graduaciones y ECTS. Un estudiante aplica a múltiples programas en varios períodos (Año Académico + Sesión Académica). Una solicitud puede tener un registro asociado, y si todo va bien, el estudiante también se graduará. Cada año, el estudiante obtiene una serie de créditos (ECTS). Puedo agregar más tablas más adelante, por ejemplo, una tabla de "Promedio de calificaciones" (que funcionaría igual que la tabla ECTS).

Hay un archivo de Excel con datos ficticios:

https://www.dropbox.com/scl/fi/nvgg829jqrfb22wpyr1k3/AppRegGrad.xlsx?dl=0&rlkey=5mj7m16zr38erlaljtoo...

Y he creado dos archivos PBIX:

https://www.dropbox.com/s/dai8z6nunjcr5ey/AppRegGrad.pbix?dl=0

https://www.dropbox.com/s/bqwgfo5sy7m1vop/AppRegGrad%20-%20Star.pbix?dl=0

Mi enfoque inicial fue crear una mesa plana (Frankenstein). Es muy contundente, pero definitivamente funciona. Debo mencionar que mi conjunto de datos real no será muy grande (menos de un millón de registros). Acabo de dejar que la unión exterior fusione todo, y las medidas son bastante fáciles. Sin embargo, probablemente no sea una solución muy preparada para el futuro.

Mi segundo intento fue crear un modelo que supongo que es un copo de nieve. Estoy vinculando directamente las solicitudes a las inscripciones mediante la creación de una clave (Año + Sesión + Programa + Estudiante). Sin embargo, la tabla ECTS y Graduaciones no tiene la variable Sesión, por lo que necesito una clave diferente (Año+Programa+Estudiante). Por otro lado, el Students_v2 no tiene una variable Programa, por lo que para eso necesito otra clave (Año + Sesión + Estudiante). Me parece convulsionado, pero visualmente parece lógico, porque hay un flujo desde la admisión hasta la inscripción y la graduación. Además, funciona. Aunque todavía no sé cómo calcular algo como "Duración del estudio", ya que involucra variables de dos tablas diferentes (Inscripciones.Fecha, Graduaciones.Fecha de graduación). También me preocupa usar cadenas de texto largas como claves, ya que prefiero usar enteros para claves (tengo un fondo php / MySQL).

Puedes encontrar estos dos primeros diseños en https://www.dropbox.com/s/dai8z6nunjcr5ey/AppRegGrad.pbix?dl=0

Mi último intento fue crear un esquema estrella.

Ver https://www.dropbox.com/s/bqwgfo5sy7m1vop/AppRegGrad%20-%20Star.pbix?dl=0

Estos parecen ser muy recomendables, y debería ser el camino a seguir a menos que tenga algunas buenas razones para no usarlo. Hasta ahora mi razón es que no puedo descubrir cómo hacer que funcione, pero no creo que esa sea una buena razón.

El truco aquí es crear una o más dimensiones comunes. En este caso Calendario y Programas.

Sin embargo... mi tabla Students_v2 no tiene una variable Program y la fecha no es única. Además, mis tablas de ECTS y Graduaciones no tienen la variable Sesión Académica. Podría agregar esas variables, pero eso significa tomar los datos de la tabla Aplicaciones, probablemente a través de alguna fusión.

Sé que puedo tomar la salida fácil porque mi conjunto de datos es pequeño. Pero me gustaría hacerlo de la manera correcta.

¿Cuál sería el mejor enfoque aquí? Y en caso de que el mejor enfoque no implique un esquema estelar, ¿sería posible usar un esquema estelar, o es una mala idea "forzar" una dimensión común?

Mi pregunta está relacionada con:

https://community.powerbi.com/t5/Desktop/Relationship-between-Fact-to-Fact-tables/m-p/648556

https://community.powerbi.com/t5/Desktop/Advice-required-on-the-Pros-and-Cons-on-normalising-a-very-...

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Comenzaría con un modelo como este y luego haría ajustes si fuera necesario.

AlexisOlson_0-1638029332247.png

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Comenzaría con un modelo como este y luego haría ajustes si fuera necesario.

AlexisOlson_0-1638029332247.png

Muchas gracias por indicarme la dirección correcta. Su respuesta, junto con algo de música celta de Adrian von Ziegler, me ayudó a entender dónde me equivoqué con mi esquema de estrellas.

  • Mi tabla de Students_v2 era básicamente una copia de Aplicaciones, excepto con diferentes variables. Por lo tanto, debería agregarlos a Aplicaciones o usar la versión v1 donde la variable Número de estudiante es única. Eso implica tomar una decisión; ¿Tomo los valores iniciales o los últimos conocidos? Para aclarar, la nacionalidad de un estudiante puede cambiar con el tiempo. Mi tabla v2 admite aquellos cambios en los que la tabla v1 no lo hace.
  • En teoría también podría fusionar ECTS con Registros, ya que existe una relación 1 a 1 (lógica). Un estudiante solo puede tener créditos si el estudiante tiene una matrícula, y cada inscripción siempre tiene créditos. Por lo tanto, tener una mesa separada para esto podría ser exagerado. Para que funcionara como una tabla separada, tuve que agregar una variable "Fecha de registro". Esto se debe a esa molesta Sesión Académica.
  • La tabla de Graduaciones también necesitaba una variable de fecha adicional. Uno puede preguntarse por qué, porque ya hay una fecha de graduación. Sin embargo, necesito una fecha que corresponda al registro inicial. Lo llamé la Fecha de Prioridad (robé este término de una base de datos de patentes). De esta manera podemos responder a la pregunta: "¿Cuántos estudiantes que comenzaron en enero de 2019 en el programa 1000 se graduaron?". Incluso podemos calcular fácilmente la duración del estudio. Es la fecha de graduación menos la fecha de prioridad.
  • Entonces, ¿de dónde viene esta Fecha de Prioridad? Se calcula sobre los datos de Registros. Esta vez hice trampa y lo agregué al archivo de Excel. Pero también puedes conseguirlo con un simple Group By y tomando la fecha mínima.

Descargas:

https://www.dropbox.com/s/eh7uhgo2luo7h40/AppRegGrad_v2.png?dl=0

https://www.dropbox.com/scl/fi/wrtg696a0v8mtll2y0qhg/AppRegGrad_v2.xlsx?dl=0&rlkey=br1lbq0j71s2yds87...

https://www.dropbox.com/s/2xlvjkwjdmw2som/AppRegGrad_v2.pbix?dl=0

Cometió un error. Escribí que podría agregar mis datos de Students_v2 (Género, Nacionalidad) a los datos de aplicaciones, pero eso NO funciona. ¿Por qué no? Porque no se filtrará a través de las otras tablas, como Registros. Para que esto funcione, una vez más tenemos que crear una dimensión común. En el caso de Students_v2 necesitamos construir una clave a partir del número de estudiante y la fecha. Elimine todas las demás columnas, excepto Género y Nacionalidad. Y luego deduplicar. Añade las mismas claves a Solicitudes, Inscripciones, Graduaciones y ECTS (básicamente todas las tablas a las que quieras aplicar el filtro Género o Nacionalidad).

Syndicate_Admin
Administrator
Administrator

El esquema de estrellas es la mejor pratice, pero no puedo ver ver https://www.dropbox.com/s/bqwgfo5sy7m1vop/AppRegGrad%20-%20Star.pbix?dl=0

Por favor, compruebe que el enlace es compartido

Dropbox me informó que los archivos PBIX no se pueden previsualizar. Así que la única opción es descargar el archivo. Disculpas por las molestias. Agregaré algunas capturas de pantalla la próxima vez que tenga una pregunta relacionada con el modelo.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Kudoed Authors