Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hola equipo, tengo uno que me he estado rascando la cabeza durante bastante tiempo.
Necesito ser capaz de detectar conflictos cuando una persona se está tomando un tiempo libre señalando a otra persona que también está tomando tiempo libre (en las mismas fechas)
En otras palabras: necesito crear una lógica para identificar cuándo ocurre un conflicto con los datos que tenemos a continuación.
Conflicto = SI en el mismo día letra en la columna B = a la letra en la columna C y luego TRUE
este es el resultado deseado y, como puedes imaginar, todavía no tengo una columna de conflicto o cálculo:
Adjunto una imagen de los resultados deseados, así como una tabla con los datos para que no tenga que crear los escenarios para probar la lógica.
¡Muchas gracias de antemano a quien pueda resolver esto! 🙂
fecha | Conducir | copia de seguridad | resultado deseado - no usar en PBI |
6/1/2023 | A | B | VERDADERO |
6/1/2023 | B | A | VERDADERO |
6/1/2023 | C | D | FALSO |
6/1/2023 | E | F | FALSO |
6/1/2023 | J | K | FALSO |
6/2/2023 | A | B | VERDADERO |
6/2/2023 | B | A | VERDADERO |
6/2/2023 | C | D | FALSO |
6/2/2023 | E | F | FALSO |
6/5/2023 | A | B | FALSO |
6/5/2023 | C | D | FALSO |
6/5/2023 | E | F | FALSO |
6/6/2023 | C | D | FALSO |
6/6/2023 | J | K | FALSO |
6/6/2023 | E | F | FALSO |
6/7/2023 | A | B | VERDADERO |
6/7/2023 | B | C | VERDADERO |
6/7/2023 | E | F | FALSO |
6/7/2023 | G | H | FALSO |
6/8/2023 | A | B | VERDADERO |
6/8/2023 | H | J | FALSO |
6/8/2023 | E | F | FALSO |
6/8/2023 | C | A | VERDADERO |
Solved! Go to Solution.
en pocas palabras, ¡GENIOUS! Muchas gracias, tenía eso en mente pero no pude traducirlo a DAX. ¡Muchas gracias!
Chk =
VAR __dt = AGMT[date]
VAR __ld = AGMT[lead]
VAR __bk = AGMT[backup]
RETURN
NOT ISEMPTY(
FILTER(
AGMT,
AGMT[date] = __dt && ( AGMT[lead] = __bk || AGMT[backup] = __ld )
)
)
pregunta rápida así que aprendo de esto.
¿Cuál es el significado de estas dos variables?
VAR tblOne_1 = { _lead }
VAR tblOne_2 = { _backup }
en pocas palabras, ¡GENIOUS! Muchas gracias, tenía eso en mente pero no pude traducirlo a DAX. ¡Muchas gracias!
Necesitas realizar dos uniones =>Lead ~ Backup y Bakup~Lead. Cualquier unión que devuelva coincidencia entonces es verdad
fullOuter =
VAR dt =
MAX ( 'Table 1'[date] )
VAR _lead =
MAX ( 'Table 1'[lead] )
VAR _backup =
MAX ( 'Table 1'[backup] )
VAR tblOne_1 = { _lead }
VAR tblOne_2 = { _backup }
VAR tblTwo_1 =
SELECTCOLUMNS (
SUMMARIZE (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[date] = dt ),
'Table 1'[backup]
),
"@candidate", [backup] & ""
)
VAR tblTwo_2 =
SELECTCOLUMNS (
SUMMARIZE (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[date] = dt ),
'Table 1'[lead]
),
"@candidate", [lead] & ""
)
VAR tblthree_1 =
GENERATE (
tblTwo_1,
VAR one = [@candidate] RETURN FILTER ( tblOne_1, [Value] = one )
)
VAR tblthree_2 =
GENERATE (
tblTwo_2,
VAR one = [@candidate] RETURN FILTER ( tblOne_2, [Value] = one )
)
VAR ternary_1 =
COUNTX ( tblthree_1, [@candidate] )
VAR ternary_2 =
COUNTX ( tblthree_2, [@candidate] )
VAR ternary =
IF ( ternary_1 <> BLANK () || ternary_2 <> BLANK (), 1, 0 )
RETURN
ternary
¡gracias! respondiendo a su pregunta sobre cómo esto es cierto.
Compruebe las filas 17 y 18 ... A está apuntando a B y el mismo día B está apuntando a otra persona, por lo que, como resultado, B no debería hacer una copia de seguridad de A en la fila 17. Es un poco complicado, pero estas cosas suceden y por eso estoy construyendo este informe con toda su ayuda.
caso similar en la fila 21: A está apuntando a B, lo que significa que A está de vacaciones y señalando a B como respaldo, ahora en la fila 24, C está tomando vacciones y señalando a A que ya está de vacaciones, por lo que no puede ser algo que podamos aprobar.
La razón por la que lo hice de esta manera es porque no es regular, pero pueden suceder cosas así, así que quiero atraparlas antes de llegar allí. 😉
Gracias de nuevo!
Parece un error cuando se usa un argumento MaxRows negativo en TOCSV. @jeffery_wang dijo que se solucionó , pero tal vez sigue siendo un problema.
Intente cambiar -1 a 10 y observe que los resultados cambian aunque nunca haya más de 1 fila en esta situación.
No creo que esto esté más allá de DAx, pero pongamos a prueba el resultado deseado.
Le está pidiendo a DAX que verifique si un día determinado, si un cliente potencial en particular también existe como respaldo en la lista de copias de seguridad para ese día en particular (corríjame si me equivoco). Si esto es cierto, ¿la última fila no parece correcta? Por favor conf
Creo que he encontrado el problema con VAR cal: estabas usando el nombre de la columna solo sin table[column], eso parecía despistar bastante a PBI. He reemplazado su código con esos cambios y parece que está funcionando, todavía necesito hacer algunas pruebas más y luego hacerlo con toneladas de datos.
Aquí está el nuevo código:
Acabo de reformular la definición de conflicto para que sea más clara.
Conflicto = SI el mismo día la persona (carta) en la columna Lead = a la persona (carta) en la columna Copia de seguridad entonces VERDADERO
En primer lugar, ¡gracias! aunque no creo que esto esté logrando lo que tiene que hacer.
@AlexisOlson ¿Hay alguna razón por la que COUNTX es incorrecto aquí donde TOCSV me da el resultado correcto?
Measure =
VAR dt =
MAX ( 'Table 1'[date] )
VAR _lead =
MAX ( 'Table 1'[lead] )
VAR tblOne =
SUMMARIZE (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[date] = dt ),
'Table 1'[date],
'Table 1'[lead]
)
VAR jn =
FILTER (
SUMMARIZE (
FILTER (
tblOne,
'Table 1'[lead]
IN (
SUMMARIZE (
FILTER ( ALL ( 'Table 1' ), 'Table 1'[date] = dt ),
'Table 1'[backup]
)
)
),
[lead]
),
[lead] IN { _lead }
)
//produces incorrect result
VAR cal =
COUNTX ( jn, [lead] )
//returns same table correctly
VAR csv =
TOCSV ( jn, -1, "," )
RETURN
csv