Filtrado de fecha máxima por cliente, luego recuperación de tarea/asunto (nombre de campo) por cliente/fecha

Un usuario Pregunto ✅

samdep

¡Hola a todos!

Tengo tres campos en mi tabla: Fecha de actividad, Tarea, ID de cliente. Creé una columna condicional para obtener la última fecha de actividad asociada con cada cliente, expresión a continuación:

FECHA DE ULTIMA ACTIVIDAD =
VAR CLIENT_ID = Tarea[Case.ClientID]
REGRESO
CALCULAR(MAX(Tarea[ActivityDate]),
FILTRO(Tarea,
Tarea[Case.ClientID] = ID_CLIENTE))

Esto funciona perfectamente, recuperando la fecha de la última actividad asociada con cada id_cliente… pero, ¿cómo amplío esto para obtener la última tarea/sujeto vinculado tanto a ese id_cliente como a MAX(Tarea[ActivityDate]). Lo siguiente me da una tarea/sujeto, así que asumo que no está buscando tanto por client_id como por max[activitydate]… solo por max[activitydate].

ÚLTIMA TAREA =
FECHA MÁXIMA VAR =
CALCULAR(
MAX(Tarea[ActivityDate]),
FILTRO(Tarea, Tarea[Case.ClientID]))

REGRESO
LOOKUPVALUE(Tarea[Subject],
Tarea[ActivityDate], FECHA MAX,
Tarea[Case.ClientID]
)

Data de muestra:

ID de cliente Tarea Fecha

1234 Inicial 1/12/21

1234 Conectar 20/04/21

Resultado de la meta en la tabla:

ID de cliente Tarea Fecha

1234 Conectar 20/04/21

*Capturando el ClientID, la última fecha de actividad asociada con el cliente y la tarea/asunto asociado con ambos.

¡¡Gracias de antemano!!

daxer

// The calculation in the column you're doing
// is sub-optimal since it uses CALCULATE in each
// and every row; this should be avoided for memory
// and speed reasons. Please use the code the below.

[Last Activity Date] = // calculated column
var vClientID = Task[Case.ClientID]
var Result =
    MAXX(
        Filter(
            Task,
            Task[Case.ClientID] = vClientID
        ),
        Task[ActivityDate]
    )
RETURN 
    Result
    
    
[Last Subject] = // calculated column
var vClientID = Task[Case.ClientID]
var vLastActivityDate = Task[Last Activity Date]
var Result =
    MAXX(
        FILTER(
            Task,
            Task[Case.ClientID] = vClientID
            &&
            Task[Last Activity Date] = vLastActivityDate
        ),
        Task[Subject]
    )
RETURN
    Result

samdep

En respuesta a daxer

@daxer – Muchas gracias por el consejo sobre CALCULAR – no me di cuenta.

La fecha de la última actividad funciona perfectamente: está extrayendo el sello de fecha más reciente para la actividad del cliente.

Sin embargo, el Sujeto no está funcionando del todo: en un escenario que observé, la última fecha de actividad es el 31/03/21 – Divulgación y el Sujeto de la tarea está iniciando la Sesión 5 (que ocurrió el 17/02/21) — y la única razón por la que puedo pensar que esto podría estar sucediendo es porque hubo dos temas que tuvieron lugar el 17/02/21 («Sesión 5» y «Recursos 5»), y la expresión está devolviendo uno de los temas de 17/02/21 en lugar de la última fecha del 31/03/21.

¿Alguna idea? ¡Gracias!

Deja un comentario

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