Compare dos tablas y obtenga valores que no cumplan con los criterios

Un usuario Pregunto ✅

moizsherwani

Así que tengo dos tablas como las siguientes que tienen una relación con OPPID entre ellas

OPORTUNIDAD

OPPID – ESTADO

OPP1 – ABIERTO

OPP2 – CERRAR

OPP3 – ABIERTO

OPP4 – ABIERTO

ACTIVIDAD

OPPID – ACTIVIDAD – FECHA

OPP1 – ACT1 – 1/1/2017

OPP1 – ACT2 – 1/1/2018

OPP3 – ACT3 – 3/1/2017

Entonces, la tabla de oportunidades enumera todas las oportunidades y la tabla de actividades enumera todas las actividades para oportunidades.

Ahora necesito una lista de TODAS las Oportunidades «ABIERTAS» que no tienen ninguna actividad, así como aquellas que no tienen ninguna actividad futura.

Entonces la LÓGICA es

Mostrar todos los OPPID donde ESTADO = ABIERTO

y

OPPID no existe en la TABLA DE ACTIVIDADES

o

OPPID existe pero tiene una FECHA < AHORA()


@moizsherwani escribió:

Así que tengo dos tablas como las siguientes. tener una relación con OPPID entre ellos

OPORTUNIDAD

OPPID – ESTADO

OPP1 – ABIERTO

OPP2 – CERRAR

OPP3 – ABIERTO

OPP4 – ABIERTO

ACTIVIDAD

OPPID – ACTIVIDAD – FECHA

OPP1 – ACT1 – 1/1/2017

OPP1 – ACT2 – 1/1/2018

OPP3 – ACT3 – 3/1/2017

Entonces, la tabla de oportunidades enumera todas las oportunidades y la tabla de actividades enumera todas las actividades para oportunidades.

Ahora necesito una lista de TODAS las Oportunidades «ABIERTAS» que no tienen ninguna actividad, así como aquellas que no tienen ninguna actividad futura.

Entonces la LÓGICA es

Mostrar todos los OPPID donde ESTADO = ABIERTO

y

OPPID no existe en la TABLA DE ACTIVIDADES

o

OPPID existe pero tiene una FECHA < AHORA()


Entonces podemos decir que el filtro es ESTADO = ABIERTO y NO EXISTE FECHA DE ACTIVIDAD> = AHORA (), ¿verdad?

Tratar

New table  =
FILTER (
    OPPORTUNITY,
    NOT (
        CONTAINS (
            FILTER ( ACTIVITY, ACTIVITY[DATE] >= NOW () ),
            ACTIVITY[OPPID], OPPORTUNITY[OPPID]
        )
    )
        && OPPORTUNITY[STATUS] = "OPEN"
)

En respuesta a moizsherwani

@moizsherwani

Luego crea una columna calculada como

ShowOrHidden =
IF (
    MAXX ( RELATEDTABLE ( ACTIVITY ), ACTIVITY[DATE] ) < NOW ()
        && OPPORTUNITY[STATUS] = "OPEN",
    "SHOW",
    "HIDDEN"
)

Se usa RELATEDTABLE, ya que creo que hay una relación adecuada entre esas dos tablas.

Captura.PNG


@moizsherwani escribió:

Así que tengo dos tablas como las siguientes. tener una relación con OPPID entre ellos

OPORTUNIDAD

OPPID – ESTADO

OPP1 – ABIERTO

OPP2 – CERRAR

OPP3 – ABIERTO

OPP4 – ABIERTO

ACTIVIDAD

OPPID – ACTIVIDAD – FECHA

OPP1 – ACT1 – 1/1/2017

OPP1 – ACT2 – 1/1/2018

OPP3 – ACT3 – 3/1/2017

Entonces, la tabla de oportunidades enumera todas las oportunidades y la tabla de actividades enumera todas las actividades para oportunidades.

Ahora necesito una lista de TODAS las Oportunidades «ABIERTAS» que no tienen ninguna actividad, así como aquellas que no tienen ninguna actividad futura.

Entonces la LÓGICA es

Mostrar todos los OPPID donde ESTADO = ABIERTO

y

OPPID no existe en la TABLA DE ACTIVIDADES

o

OPPID existe pero tiene una FECHA < AHORA()


Entonces podemos decir que el filtro es ESTADO = ABIERTO y NO EXISTE FECHA DE ACTIVIDAD> = AHORA (), ¿verdad?

Tratar

New table  =
FILTER (
    OPPORTUNITY,
    NOT (
        CONTAINS (
            FILTER ( ACTIVITY, ACTIVITY[DATE] >= NOW () ),
            ACTIVITY[OPPID], OPPORTUNITY[OPPID]
        )
    )
        && OPPORTUNITY[STATUS] = "OPEN"
)

moizsherwani

En respuesta a Eric_Zhang

@Eric_Zhang, esto definitivamente funciona como una solución, me gustaría haber agregado como una columna a la tabla OPORTUNIDAD con el significado «Mostrar», «Ocultar» si la Opp cumple con todos los criterios (es decir, existe en su nueva tabla) entonces sería ser «mostrar» sino «ocultar»

En respuesta a moizsherwani

@moizsherwani

Luego crea una columna calculada como

ShowOrHidden =
IF (
    MAXX ( RELATEDTABLE ( ACTIVITY ), ACTIVITY[DATE] ) < NOW ()
        && OPPORTUNITY[STATUS] = "OPEN",
    "SHOW",
    "HIDDEN"
)

Se usa RELATEDTABLE, ya que creo que hay una relación adecuada entre esas dos tablas.

Captura.PNG

moizsherwani

En respuesta a Eric_Zhang

¿Por qué la función Maxx? Tenga en cuenta que también hay algunas actividades sin fecha, por lo que tampoco se consideran actividades futuras, ¿las considerará esta fórmula? Gracias

En respuesta a moizsherwani


@moizsherwani escribió:

¿Por qué la función Maxx? Tenga en cuenta que hay algunos actividad sin fecha así que esos también son no considerado futuro actividades, esta fórmula las considerará. Gracias


@moizsherwani

Incluso sin fecha, la expresión MAXX ( RELATEDTABLE ( ACTIVITY ), ACTIVITY[DATE] ) < AHORA () devolvería True, ¿verdad? Creo que el DAX se puede aplicar a su caso, ya que hemos confirmado que la condición es ESTADO = ABIERTO y NO EXISTE FECHA DE ACTIVIDAD> = AHORA (), es decir, la fecha máxima ACTIVIDAD

¿Ha intentado y lo que está pasando?

moizsherwani

En respuesta a Eric_Zhang

@Eric_Zhang, sí, la solución parece ser correcta, pero como quería verificar que esto se tuvo en cuenta. ¿Puede explicar la lógica de lo que está haciendo la fórmula para mi comprensión?

En respuesta a moizsherwani

@moizsherwani

He editado mi respuesta anterior y explico la lógica.

Hola de nuevo @moizsherwani

¿Esta tabla calculada se acerca a lo que busca?

New Table = 
VAR T1 = SELECTCOLUMNS(FILTER('OPPORTUNITY','OPPORTUNITY'[STATUS]="OPEN"),"OPPID",[OPPID])
VAR T2 = SELECTCOLUMNS(FILTER('ACTIVITY','ACTIVITY'[DATE]>TODAY()),"OPPID",[OPPID])
RETURN EXCEPT(T1,T2)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *