dphillips
Tengo una columna llamada StudentIBFlag que es booleana y una columna llamada YearSem que me da un año y un semestre. Quiero llenar una columna con los valores más actualizados para cada estudiante. Cualquiera que sea el valor de StudentIBFlag en el YearSem más actual, quiero que llene todas las filas para ese estudiante en la tabla. Puedo encontrar el YearSem más reciente en la tabla simplemente haciendo LastYearSem = Max ([YearSem]). Esto me da un valor en este caso de 2018 (T3) como se muestra a continuación. ¿Cómo puedo ver la StudentIBFlag de un estudiante en ese YearSem y completar todas las filas de ese estudiante con el valor en ese momento?
Por ejemplo, para el estudiante 113798, su IBFlag de estudiante es Verdadero para YearSem = 2018 (T3), por lo que la columna IBStatus se establece en verdadero para todas las filas con su ID en la tabla. El siguiente estudiante, 125444, es Falso para 2018 (T3), por lo que todas sus filas se establecen en falso. Cual es la mejor manera de hacer esto?
Me encantaría proporcionar los datos, pero no estoy seguro de cómo adjuntar los datos a esta publicación. Gracias por cualquier ayuda.
dphillips
En respuesta a Seward12533
Encontré un error a mi problema que parece funcionar bien.
HSCIBStatus = VAR Most_Current_Year_Sem = CALCULATE (MAX (uNCPBIRepResultsAll[YearSem]), ALLEXCEPT (uNCPBIRepResultsAll, uNCPBIRepResultsAll[StudentID]))
DEVOLUCIÓN CALCULAR (VALORES (uNCPBIRepResultsAll[StudentIBFlag]), FILTRO (ALLEXCEPT (uNCPBIRepResultsAll, uNCPBIRepResultsAll[StudentID]), uNCPBIRepResultsAll[YearSem] = Most_Current_Year_Sem))
Gracias por toda la ayuda.
Seward12533
Yes Data nos ayudará a ayudarlo a compartirvdata o, idealmente, un archivo PBIX con su intento de solución además de los resultados deseados. Para compartir la carga en un sitio para compartir archivos como drop box, google drive, one drive, etc. y luego compartir, obtenga un enlace y péguelo aquí.
CONSEJO: le resultará más fácil representar el ÚLTIMO AÑO DE ARCHIVO y SEMESTRE como Fechas y tener el SEMESTRE (Primavera, Otoño, T3, T2 o lo que sea como columnas en una tabla de fechas a la que está vinculado.
dphillips
En respuesta a Seward12533
Básicamente, a medida que un alumno avanza en la escuela, puede cambiar el estado del IB en los años 11 y 12. Si filtro el estado del IB = Verdadero, entonces se eliminan todos sus resultados de los años junior cuando no estaba en el IB. Quiero alguna forma de decir, si ahora está en el IB, establezca el IB como verdadero durante todos los años que estuvo en la escuela para que pueda obtener todos sus resultados, incluso los de tercer año.
Aquí está el enlace a mis datos. Quiero una fórmula que duplique la última columna: estado IB
Gracias de nuevo por cualquier ayuda.
v-yuta-msft
En respuesta a dphillips
Hola dphillips,
Cree una columna de cálculo usando DAX como se muestra a continuación:
lBStatus_ = VAR Most_Current_Year_Sem = MAX(Sheet1[Year Sem]) RETURN CALCULATE(VALUES(Sheet1[IBStatus]), FILTER(ALLEXCEPT(Sheet1, Sheet1[StudentID]), Sheet1[Year Sem] = Most_Current_Year_Sem))
Saludos,
Jimmy Tao
dphillips
En respuesta a v-yuta-msft
Muchas gracias por su respuesta. Implementé el cálculo y funciona para un estudiante actual, pero me encontré con un problema en el que no pensé. ¿Qué pasa si un estudiante dejó la escuela antes del Max (Year Sem) actualmente en la base de datos? Por ejemplo, si Max (Year Sem) devuelve 2018 (T3) pero un estudiante se fue en 2017 (T3). En este caso, devuelve un espacio en blanco. Lo que realmente quiero es que el cálculo devuelva el Max (Year Sem) filtrado por cada estudiante. Entonces, si un estudiante se fue en 2017 (T3), eso se devolvería para él como Max (Year Sem) y para otro estudiante que se fue en 2016 (T3), eso se devolvería como Max.
Claramente tengo que filtrar la primera parte que almacena el valor máximo en Most_Current_Year_Sem pero no estoy seguro de cómo hacerlo. ¿Puedes ayudarme a resolver eso?
Gracias
Seward12533
En respuesta a dphillips
Se trata del contexto del filtro. Cuando se usa en una columna calculada Lo siguiente solo funciona en el contexto de la fila actual.
VAR Most_Current_Year_Sem = MAX (Hoja1[Year Sem])
REGRESO
Intenta reemplazarlo con esto
VAR Most_Current_Year_Sem = CALCULATE (MAX (Hoja1[Year Sem]), TODOS (hoja1)) VOLVER
Esto elimina el contexto de filtro implícito.
dphillips
En respuesta a Seward12533
Encontré un error a mi problema que parece funcionar bien.
HSCIBStatus = VAR Most_Current_Year_Sem = CALCULATE (MAX (uNCPBIRepResultsAll[YearSem]), ALLEXCEPT (uNCPBIRepResultsAll, uNCPBIRepResultsAll[StudentID]))
CALCULAR DEVOLUCIÓN (VALORES (uNCPBIRepResultsAll[StudentIBFlag]), FILTRO (ALLEXCEPT (uNCPBIRepResultsAll, uNCPBIRepResultsAll[StudentID]), uNCPBIRepResultsAll[YearSem] = Most_Current_Year_Sem))
Gracias por toda la ayuda.
Seward12533
En respuesta a dphillips
Al observar sus datos, está claro que está intentando aplicar un paradigma de Excel y construir las tablas con los datos en lugar de dejar que PowerBI filtre los datos y cree imágenes. Y está tratando de tomar una salida de una hoja de trabajo de Excel o una tabla dinámica que se deriva y crear una imagen en powerBI. Por ejemplo, tiene Last Semster y IB Status como valor en cada fila. El último semestre se puede calcular fácilmente a partir de los datos) y no es necesario e idealmente tendría los datos del curso en una tabla y el estado del IB en una tabla de búsqueda con el alumno, el año, semestre y el estado del IB. Si sus datos de origen realmente tienen esto en cada fila para cada clase, tendrá que mantenerlos en varios lugares.
Pude obtener un estado IB en una columna calculada en su tabla, pero también propuse un ejemplo de una solución DAX que no lo requiere.
Ver esta versión de su archivo
Resolví tu columna de estado IB
- Primero agregué una columna para [Year SEM Number] esto permite especificar un orden de clasificación para [Year Sem] y calculando el semestre del año pasado usando el semestre del año pasado = CALCULATE (MAX (Sheet1[Year Sem Number]), TODOS (Hoja1)) esto podría haberse omitido
- Creado algunas medidas
Student Count = DISTINCTCOUNT(Sheet1[StudentID]) Students with IB in Last Semsester = CALCULATE([Student Count],Sheet1[StudentIBFlag],FILTER(Sheet1,Sheet1[Year Sem Number]=[Last Year Semester]))
- Construyó una tabla dinámica usando DAX que enumera a los estudiantes y si tenían IB Flag en el último semestre o no
StudentIDs = VALUES(Sheet1[StudentID]) I then added a column with the measure Students with IB in last semester
I could have done this with a single DAX line StudentIDs = ADDCOLUMNS(VALUES(Sheet1[StudentID]),"IB In Last Semster",[Students with IB In Last Semster])
- Vinculó esta tabla de StudentIDs con la tabla de hechos (Hoja1)
- Se agregó la columna calculada IBStatus = RELATED (StudentIDs[IB in Last Semester])
También incluí una demostración en la que construí una tabla diferente con DAX para mostrar a los estudiantes y los semestres que tenían la bandera IB configurada como verdadera. Y luego construyó una matriz para mostrar esta tabla. Luego una Matriz que muestra los cursos en cada semestre. Escribí una única medida DAX que calcula si alguna fila de la tabla debe mostrarse o no.
Display Flag = CALCULATE(IF(HASONEVALUE('StudentIDs Semesters with IB'[StudentID]),1),ALL(Sheet1[ClassCode],Sheet1[Year Sem]))
Luego filtré el segundo Matix para mostrar solo donde la bandera de Pantalla es verdadera. Esto tiene el efecto de que si selecciona un solo estudiante en la primera matriz, la segunda matriz muestra todos los recursos que el estudiante tomó independientemente de la bandera del IB. Si no se selecciona ningún alumno o más de uno, la tabla está vacía. Intente hacer clic en el alumno en la tabla 1 y aparecerán todos.
Ambas soluciones se ajustarán dinámicamente a los datos. No eliminé la bandera de Estado del IB en la tabla base para demostrar usando una tabla de búsqueda de solo Estudiante, Año Semestre y Bandera de IB.
Sé que es mucho, pero espero que les brinde una solución para satisfacer su enfoque actual, pero también les brinde una perspectiva de cómo el paradigma de PowerBI es diferente y cuánto más fácil es cuando deja que PowerBI haga su magia y cuánto más fácil puede ser. ser versus la forma en que teníamos que hacerlo en Excel antes de Power Pivot o PowerBI.