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.
Hey todo,
No estoy seguro de si esto se puede hacer, pero permítanme tratar de explicar:
Tengo un conjunto de datos que tiene el nombre del empleado en una columna, los cursos de formación que han tomado en otra columna y si los cursos están completos o no completos en lo que han intentado en otra columna. En total, cada empleado debe completar 9 cursos para ser llamados 100% completos con su formación. El problema que estoy teniendo es que los datos sólo muestran como se mencionó anteriormente, lo que han intentado tomar, no importa si está completo o no. Así que algunos empleados i solo puede ver que tienen 5 cursos al lado de sus nombres (no importa si está completo o incompleto), y otros empleados voy a ver los 9 cursos (de nuevo no importa si están completos o no). En un mundo perfecto me gustaría ver todos los cursos, por empleado y si está completo o no completo; desafortunadamente ese no es el caso. Lo que estoy tratando de hacer es, ya que conozco los 9 nombres de los cursos, para encontrar una manera de hacer que PBI llame qué cursos / nombres de los cursos faltan y el recuento de esa varianza. ¿Cómo empezaría esto? Creo que tendría que hacer una tabla separada de cursos como a continuación, pero siendo un novato en PBI, no sabría cómo escribir el DAX para decir "Si el empleado A muestra 7 cursos tomados en datos sin procesar, dame el recuento de lo que falta y dame los nombres que faltan en función de la tabla de nombres del curso" Y luego encontrar una manera de enrollar eso para que funcione para cada empleado (población de 5K)
¡Por favor, ayúdenme!
Curso 1 |
Curso 2 |
Curso 3 |
Curso 4 |
Curso 5 |
Curso 6 |
Curso 7 |
Curso 8 |
Curso 9 |
Empleado | Curso | Estado |
Joe | Curso 1 | íntegro |
Joe | Curso 2 | Incompleta |
Joe | Curso 3 | íntegro |
Joe | Curso 4 | Incompleta |
Joe | Curso 5 | Incompleta |
Joe | Curso 6 | íntegro |
Joe | Curso 7 | Incompleta |
María | Curso 3 | Incompleta |
María | Curso 4 | Incompleta |
Solved! Go to Solution.
Si regresas _count en la medida que debería darte lo que estás buscando.
Incomplete 3 =
VAR _x1 =
CALCULATETABLE (
VALUES ( Compliance[COURSE_NAME] ),
Compliance[COURSE_STATUS] = "Not Complete"
)
VAR _x2 = VALUES ( Compliance[COURSE_NAME] )
VAR _y1 = CALCULATETABLE ( Courses, INTERSECT ( Courses, _x1 ) )
VAR _y2 = CALCULATETABLE ( Courses, EXCEPT ( Courses, _x2 ) )
VAR _y = UNION ( _y1, _y2 )
VAR _count = COUNTROWS ( _y )
RETURN
_Count
Hola @Antonio195754 ,
¿Está resuelto este problema?
Si se resuelve, por favor acepte siempre las respuestas que tengan sentido como solución a su pregunta para que las personas que puedan tener la misma pregunta puedan obtener la solución directamente.
Si no, por favor hágamelo saber.
Saludos
Icey
¡Planeo probar las sugerencias hoy! Tal vez tenga que ver cómo separar cada conteo / nombre, por supuesto por fila por persona, pero voy a ver cómo se ve al principio e ir desde allí
Hola @Antonio195754 - usted estaba en el camino correcto con tener una tabla separada para los cursos. Lo que debe hacer es crear una tabla que tenga todos los empleados y todos los cursos, luego "unirse" a la tabla de estado para averiguar cuáles faltan.
Cree una nueva tabla y utilice el código siguiente:
Not Started =
EXCEPT ( //This takes all rows from the 1st table that don't match a row in the 2nd table
CROSSJOIN ( Courses, DISTINCT ( CourseStatus[EmpID] ) ), //This is all emp with all courses
SUMMARIZE ( CourseStatus, Courses[CourseID], CourseStatus[EmpID] ) //This is employees+course pairs that exist in the status table
)
A continuación, puede usar ese código para mostrar los cursos que faltan o realizar más cálculos en él.
Espero que esto ayude
David
Podemos obtener algo como esto con solo unas pocas medidas:
Esta es la medida para Not Taken
Not Taken =
VAR _x = VALUES ( Data[Course] )
VAR _y = CALCULATETABLE ( Courses, EXCEPT ( Courses, _x ) )
VAR _count = COUNTROWS ( _y )
RETURN
IF (
_count = 0 || NOT HASONEVALUE(Data[Employee]), BLANK(),
"(" & _count & ") " &
CONCATENATEX( _y, Courses[Course], ", ")
)
He adjuntado mi archivo de muestra para que lo mires.
Lo sentimos por el retraso en la respuesta, pero mi PBI se estrelló y yo estaba fuera por un par de semanas. Acabo de volver a correr.
Así que enchufé mis puntos de datos a su lógica y tomó la fórmula sin embargo hizo algo interesante. Tanto para el completo como para el incompleto devolvió los 9 cursos. Lo que es más interesante, sin embargo, es que tengo estos gráficos de tarjetas en la parte superior de mi panel que muestra qué % de completo por curso a medida que corta y corta en el db. Bueno, cuando hago clic en una fila dentro de la columna completa para un empleado dado, hace que mis tarjetas cuenten los cursos que han tomado mostrando el 100% en las tarjetas con el nombre del curso respectivo y luego los espacios en blanco en las tarjetas para los incompletos. Para los incompletos hace lo mismo, muestra los 9 cursos. Y para el no tomado devuelve un campo en blanco. Tengo mis columnas que uso establecidas para enviar mensajes de texto de la manera en que lo haces. No tengo mis mesas unidas (bc intenté que pensar que funcionaría y no). Así que creo que mi fórmula está un poco apagada, pero casi allí.
Por último, en lugar de que los datos estén en una fila, ¿hay alguna manera de escribir el DAX que muestra el nombre del curso en filas junto con el nombre de las 3 fórmulas? Eso es, en última instancia, lo que necesito b/c i usaría entonces para crear mi recuento y % de completo/no completo para toda la población de empleados.
A continuación se muestran las fórmulas que utilicé
Nombre | íntegro | Cursos no tomados | No completo |
PR1234 | (9) Ética 2392054, orrupción 1044, Política 3031, Norma 92060, Polít31122, Polít 2053, presarial 2055, PC 1205, Eras Partes 2056 | Blanco | (9) Ética 2392054, orrupción 1044, Política 3031, Norma 92060, Polít31122, Polít 2053, presarial 2055, PC 1205, Eras Partes 2056 |
Buscando tenerlo como:
Nombre | íntegro | Cursos no tomados | No completo |
PR1234 | Curso 1 | ||
PR1234 | Curso 2 | Curso 2 | |
PR1234 | Curso 3 |
Parte de sus medidas son mirar las tablas equivocadas, es por eso que usted está recibiendo todos 9.
Completed =
VAR _x = CALCULATETABLE( VALUES ( Compliance[Course] ), Compliance[Status] = "Complete" )
VAR _count = COUNTROWS ( _x )
RETURN
IF (
_count = 0 || NOT HASONEVALUE ( Compliance[PERSON_NUMBER] ), BLANK(),
"(" & _count & ") " &
CONCATENATEX( _x, Compliance[Course], ", " )
)
Incomplete =
VAR _x = CALCULATETABLE( VALUES ( Compliance[Course] ), Compliance[Status] = "Incomplete" )
VAR _count = COUNTROWS ( _x )
RETURN
IF (
_count = 0 || NOT HASONEVALUE ( Compliance[PERSON_NUMBER] ), BLANK(),
"(" & _count & ") " &
CONCATENATEX( _x, Compliance[Course], ", " )
)
Not Taken =
VAR _x = VALUES ( Compliance[Course] )
VAR _y = CALCULATETABLE ( Courses, EXCEPT ( Courses, _x ) )
VAR _count = COUNTROWS ( _y )
RETURN
IF (
_count = 0 || NOT HASONEVALUE ( Compliance[PERSON_NUMBER] ), BLANK(),
"(" & _count & ") " &
CONCATENATEX( _y, Courses[Course], ", ")
)
No estoy seguro de entender la salida deseada. ¿Cómo puede el curso 2 ser tanto "no tomado" y "no completo" para PR1234? ¿Es algo como esto lo que estás buscando?
Debe extraer los nombres de los empleados de la tabla de cumplimiento y el curso (columna 2) de la tabla de cursos. Esto creará la combinación cruzada, pero producirá un error hasta que coloque una medida en la vista también. Hay nuevas medidas en mi muestra para que las mires. ([Completado 2], [Incompleto 2], [No tomado 2])
Puede reducir el ancho de columna en el nombre del curso para que no se muestre en la tabla si desea ocultarlo.
Hey allí finalmente lo conseguí para trabajar y disculpas por la actualización lenta en mi extremo. Trabajar varios tableros a la vez y sólo puede golpear este cuando tengo ancho de banda para. Debería haber proporcionado mi objetivo final de lo que estoy tratando de lograr, ya que este es el primer paso. En última instancia, para mí, si el curso no es Completo O no tomado, debe contar como no completo. Así que mis disculpas en laperación de los dos, pero me gustaría que si un usuario tiene cursos no completos y / o no tomados, para aparecer juntos. Pero mi objetivo final realmente es obtener un recuento de lo que no ha sido tomado por los usuarios para que pueda calcular el % completo y % no completo por usuario. ¿Podrías ayudar con este @jdbuchanan71 ? Como probablemente sabes, no puedo cambiar mi medida a un recuento/diferenciado y he intentado crear una columna para ayudarme a combinar las dos medidas de no completa/no tomada, pero eso también me ha fallado. Lo que me gustaría hacer es simplemente crear una fórmula que me dé el recuento de no completo (de nuevo si los cursos no han sido tomados o muestra incompletos) para un usuario (s) para que pueda entonces utilizar ese recuento para alcanzar un % de no completo. Espero que tenga sentido. A continuación se muestra mi tabla actual con las fórmulas que ahora funcionan y he confirmado la precisión de comprobación de los datos sin procesar.
PERSON_NUMBER | Cursos | No Completo 2 | Curso no tomado 2 |
a093 | Conciencia PCI | Conciencia PCI | |
a093 | Política de Antisoborno y Anticorrupción (ABAC) | Política de Antisoborno y Anticorrupción (ABAC) | |
a098 | Conciencia PCI | Conciencia PCI | |
a098 | Política de Antisoborno y Anticorrupción (ABAC) | Política de Antisoborno y Anticorrupción (ABAC) | |
a098 | Política de la Ley Antimonopolio y de Competencia | Política de la Ley Antimonopolio y de Competencia | |
a112 | Conciencia PCI | Conciencia PCI | |
a112 | Política de Antisoborno y Anticorrupción | Política de Antisoborno y Anticorrupción (ABAC) | |
a112 | Política de Seguridad de la Información | Política de Seguridad de la Información |
por cierto, sólo proporcioné 3 usuarios en la tabla como un ejemplo. La población de usuarios es más grande que eso.
Podemos combinar la lógica de los dos recuentos separados así.
Incomplete 3 =
VAR _x1 = CALCULATETABLE( VALUES ( Compliance[Course] ), Compliance[Status] = "Incomplete" )
VAR _x2 = VALUES ( Compliance[Course] )
VAR _y1 = CALCULATETABLE ( Courses, INTERSECT ( Courses, _x1 ) )
VAR _y2 = CALCULATETABLE ( Courses, EXCEPT ( Courses, _x2 ) )
VAR _y = UNION ( _y1, _y2 )
VAR _count = COUNTROWS ( _y )
RETURN
IF (
_count = 0 || NOT HASONEVALUE ( Compliance[PERSON_NUMBER] ), BLANK(),
CONCATENATEX( _y, Courses[Course], ", ")
)
Esto dará la lista de Incompleto y No tomar juntos.
JD hola otra vez. Enchufé su lógica a continuación (tenía que cambiar algunas cosas como "Incompleto" a "No completo" y los nombres de columna adecuados) y tomó la fórmula, pero volvió en blanco cuando la enchufé como una columna, y cuando lo probé como medida, devolvió todos los cursos (9 cursos) por nombre de usuario. Esperaba que la forma de la columna funcionara b/c como usted sabe que me da la opción de hacer un recuento de en lugar de la no resumir, opción, pero no tengo nada cuando lo cambié para contar. Tengo 1's cuando lo cambié a distinto conteo, pero no creo que eso es lo que estoy buscando. Hace lo siguiente se ve correctamente @jdbuchanan71 .
Además, lo que es realmente raro ahora es cuando trato de conectar el incompleto 2 y no tomó 2 medidas que me proporcionó, de vuelta a la mesa, ya no muestra la tabla que había respondido en la respuesta anterior! Muestra cada curso de nuevo por usuario en la medida incompleta 2 y no tomada 2. Los he incluido debajo de la medida incompleta. Muy raro como mi mesa no ha cambiado. Estoy usando la columna de ID de usuario, la columna del curso de la tabla de cursos, y luego las 2 medidas que me dio y funcionó la semana pasada... En última instancia, that's bien si don't trabajar b/c técnicamente que wasn't lo que estaba buscando, pero a solo un FYI de lo que está sucediendo cuando i tratar de traerlos de nuevo en.
Mi culpa JD, tengo todas las fórmulas para trabajar y la fórmula incompleta 3 ahora está agregando las fórmulas no tomadas y no completas. Pero lo que está haciendo es simplemente mostrarme el nombre de los cursos que faltan y sólo funciona cuando lo asocio en una tabla con el Nombre del curso de la tabla Curso. ¿Hay alguna manera de que la fórmula 3 incompleta devuelva un recuento de cursos no completo por usuario sin estar en un formato de tabla? Si no es posible, entonces cerraré esta pregunta con su solución siendo aceptada, pero espero obtener el recuento de no completo por usuario para que pueda usar esos números para obtener el % completo vs no completo para la población general de usuarios.
Si regresas _count en la medida que debería darte lo que estás buscando.
Incomplete 3 =
VAR _x1 =
CALCULATETABLE (
VALUES ( Compliance[COURSE_NAME] ),
Compliance[COURSE_STATUS] = "Not Complete"
)
VAR _x2 = VALUES ( Compliance[COURSE_NAME] )
VAR _y1 = CALCULATETABLE ( Courses, INTERSECT ( Courses, _x1 ) )
VAR _y2 = CALCULATETABLE ( Courses, EXCEPT ( Courses, _x2 ) )
VAR _y = UNION ( _y1, _y2 )
VAR _count = COUNTROWS ( _y )
RETURN
_Count
Eso funcionó!!! ¿Crees que este conde funcionará sin que yo tenga que tirarlo a una mesa? B /c lo que voy a hacer con ese recuento de medidas es básicamente usarlo para darme mi % de no completo. Aún no lo he probado, pero quería preguntarte antes de hacerlo.
JD lo que está haciendo es dejarme usar sólo la medida en una tabla 😞 Si devuelvo sólo la medida que debería darme el recuento de todos los no completos, devuelve 9; Que es el recuento de cursos de todos los cursos aplicables. Lo que es más interesante es que cuando tengo toda la población en la tabla, devuelve los cursos no completos por usuario, pero el total en la parte inferior de la tabla es 9 en lugar de totalizar todos los cursos que faltan. ¿Qué te parece @jdbuchanan71?
Esto se debe a la forma en que los "totales" se calculan en una matriz. Al mirar una fila total, el modelo no tiene idea de los valores de las filas anteriores, todo lo que sabe son los filtros que se aplican a la fila total, lo que significa que está viendo incompleto al menos una vez para cada curso. Debido a todas las variables y recuentos que van a obtener la cantidad correcta por empleado, probablemente sería más fácil utilizar esa medida en un SUMX adicional para obtener el total correcto.
Algo como esto:
Incomplete With Total = SUMX(VALUES(Compliance[Employee]),[Incomplete 3])
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |