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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo detectar conflictos en la misma fecha, es decir, personas que se van de vacaciones que se señalan entre sí

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! 🙂

DSiffredi_1-1686846831584.png

fechaConducircopia de seguridadresultado deseado - no usar en PBI
6/1/2023ABVERDADERO
6/1/2023BAVERDADERO
6/1/2023CDFALSO
6/1/2023EFFALSO
6/1/2023JKFALSO
6/2/2023ABVERDADERO
6/2/2023BAVERDADERO
6/2/2023CDFALSO
6/2/2023EFFALSO
6/5/2023ABFALSO
6/5/2023CDFALSO
6/5/2023EFFALSO
6/6/2023CDFALSO
6/6/2023JKFALSO
6/6/2023EFFALSO
6/7/2023ABVERDADERO
6/7/2023BCVERDADERO
6/7/2023EFFALSO
6/7/2023GHFALSO
6/8/2023ABVERDADERO
6/8/2023HJFALSO
6/8/2023EFFALSO
6/8/2023CAVERDADERO

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

en pocas palabras, ¡GENIOUS! Muchas gracias, tenía eso en mente pero no pude traducirlo a DAX. ¡Muchas gracias!

View solution in original post

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

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 )
        )
    )

ThxAlot_0-1688777062298.png

Syndicate_Admin
Administrator
Administrator

  1. Cuando se pone un corchete rizado aroumd un valor escalar ot se convierte en una tabla de una sola fila
Syndicate_Admin
Administrator
Administrator

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 }

Syndicate_Admin
Administrator
Administrator

en pocas palabras, ¡GENIOUS! Muchas gracias, tenía eso en mente pero no pude traducirlo a DAX. ¡Muchas gracias!

Syndicate_Admin
Administrator
Administrator

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

Syndicate_Admin
Administrator
Administrator

¡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!

DSiffredi_0-1686869778589.png

Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

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

smpa01_0-1686861787462.png

Syndicate_Admin
Administrator
Administrator

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:

Medida =
DÓNDE Alemán =
VALOR SELECCIONADO ( «Tabla 1»[fecha] )
DÓNDE _Conducir =
VALOR SELECCIONADO ( «Tabla 1»[plomo] )
DÓNDE _backcup =
VALOR SELECCIONADO ( «Tabla 1»[copia de seguridad] )
DÓNDE tblOne =
RESUMIR (
FILTRO ( TODO ( «Tabla 1» ), «Tabla 1»[fecha] = Alemán ),
«Tabla 1»[fecha],
«Tabla 1»[plomo]
)
DÓNDE jn =
FILTRO (
RESUMIR (
FILTRO (
tblOne,
(«Tabla 1»[fecha],«Tabla 1»[plomo])
EN (
RESUMIR (
FILTRO ( TODO ( «Tabla 1» ), «Tabla 1»[fecha] = Alemán ),
«Tabla 1»[fecha], «Tabla 1»[copia de seguridad]
)
)
),
Tabla 1[plomo]
),
Tabla 1[plomo] EN { _Conducir }
)
producD resultado incorrecto -- AHORA CORREGIDO USANDO Tabla1[lead] EN LUGAR DE [Lead]
DÓNDE Cal =
CONTX( jn, Tabla 1[plomo] )
devuelve la misma tabla correctamente
DÓNDE .csv =
TOCSV ( jn, -1, "," )
DEVOLUCIÓN
Cal
Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

@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

smpa01_0-1686849668427.png

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

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