DAX: función máxima que tiene en cuenta los filtros de forma dinámica

Un usuario Pregunto ✅

Yael

Hola,

Necesita ayuda con la función DAX, por favor.

A continuación se muestra una foto de mi fuente de datos, estoy interesado en completar el campo «Es la fecha máxima» con valores de 1/0.

Numero de fila Fecha Número de transacción Cliente Categoría de cliente Es la fecha máxima
1 6-mar-18 100 A-John A
2 6-mar-18 200 B-Kim B
3 7-mar-18 300 A-John A
4 7-mar-18 400 A-John A

Quiero que ese campo se calcule de acuerdo con los filtros aplicados por el usuario:

Si el usuario selecciona en el filtro Cliente = «A-John», quiero ver Es la fecha máxima = 1 para las filas 3 y 4

Si el usuario selecciona en el filtro Categoría de cliente = «B», quiero ver Es la fecha máxima = 1 para la fila 2

etcétera…

¿Cómo puedo hacer esto por favor?

¡Gracias!

Hola @Yael,

Consulte una demostración aquí.

1. Necesita tablas dimensionales en su escenario.

2. Dos rebanadoras.

3. La medida podría ser así:

Measure =
VAR maxdate =
    CALCULATE ( MAX ( 'Table1'[Date] ), ALL ( 'Table1'[Row Number] ) )
RETURN
    IF ( MIN ( 'Table1'[Date] ) = maxdate, 1, 0 )

DAX_max_function_that_takes_filters_into_consideration_dynamically

Atentamente,

Valle

Yael

En respuesta a v-jiascu-msft

Gracias @ v-jiascu-msft. Intenté crear la medida en DateDim:

IsMaxDate =
VAR maxdate =
CALCULAR (MAX (dim[Date]), TODOS (tenue[DatePK]))
REGRESO
SI (MAX (tenue[Date]) = fecha máxima, 1, 0)

Cuando arrastro esta medida a mi tabla de hechos, veo que está duplicando las filas para fechas que no existen en el hecho + todas las filas obtienen 1 en «IsMaxDate»

Measure.jpg

Zubair_Muhammad

En respuesta a Yael

Hola @Yael

Prueba este

IsMaxDate =
VAR maxdate =
    CALCULATE ( MAX ( dim[Date] ), ALLSELECTED () )
RETURN
    IF ( MAX ( dim[Date] ) = maxdate, 1, 0 )

Yael

En respuesta a Zubair_Muhammad

Ahora recibo 1 solo en una fila, pero el hecho aún muestra filas para todas las fechas (incluso aquellas que no existen en el hecho):

Medida 2.jpg

Yael

En respuesta a Yael

¿Alguna otra idea sobre cómo podemos crear una función general que calcule MAX y Min según los valores en filtros / segmentaciones?

GeorgeBuster

Hola yael

Por un lado, no puede crear columnas calculadas en función de los filtros del informe porque los valores de estas columnas se calculan cuando los datos se cargan antes de que el usuario seleccione el filtro.

Por otro lado, si desea llenar su columna con 1/0, donde 1 es una vez por usuario, podemos hacerlo:

Es la fecha máxima =
VAR CLIENTE = MAX (Cliente)
REGRESO
SI(
Fecha = CALCULAR (
MAX (fecha);
TODOS (TransactionsTable);
Cliente = CLIENTE
);
1;
0
)

Espero que esto le pueda ayudar,

Jorge.

Yael

En respuesta a GeorgeBuster

¡Gracias @GeorgeBuster! el DAX anterior devuelve un mensaje de error, sin especificar dónde está el problema …

GeorgeBuster

En respuesta a Yael

¿Podrías compartir una captura de pantalla? Quizás podamos encontrar el error. Gracias.

Deja un comentario

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