Fecha mínima / máxima y búsqueda de la segunda fecha más reciente

Un usuario Pregunto ✅

MarkDGaal

Hola a todos, estoy tratando por primera vez con un conjunto de datos que se adjunta [Export_Date_&_Time] cada vez que se ejecuta una exportación desde la fuente de datos. Ilustrando:

ID         Export_Date_&_Time    250 more data elements/fields....
01A       01/01/2015 24:00:00      
02B       01/01/2015 24:00:00      
01A       12/12/2015 24:00:00     
02B       12/12/2015 24:00:00     

Estoy creando un montón de medidas usando el [Export_Date_&_Time] valores. Por ejemplo:

MAXDate = MAX(REF_Opportunites[Export_Date_&_Time])
MINDate = MIN(REF_Opportunites[Export_Date_&_Time])
AbsoluteMAXDate = CALCULATE(MAX(REF_Opportunites[Export_Date_&_Time]), ALL(REF_Opportunites))
AbsoluteMINDate = CALCULATE(MIN(REF_Opportunites[Export_Date_&_Time]), ALL(REF_Opportunites))

Luego, un montón de columnas que me ayudarán a filtrar mis imágenes:

IsEarliestExportDate = IF(REF_Opportunites[Export_Date_&_Time]= [AbsoluteMINDate], "Earliest", "Later")
IsLatestExportDate = IF(REF_Opportunites[Export_Date_&_Time] = [AbsoluteMAXDate], "Latest", "Not Current")
IsEarliestandLatestExportDates = IF(REF_Opportunites[Export_Date_&_Time] = [AbsoluteMINDate] || REF_Opportunites[Export_Date_&_Time]= [AbsoluteMAXDate], "Yes", "No")

Tengo 2 preguntas …

¿Por qué es que si trato de usar [MaxDate] (vs [AbsoluteMaxDate]) en mi declaración IF «IsLatestExportDate» de que no obtengo el mismo resultado? Con [Max Date] ¿Todo en mi columna cambia a «Más reciente»? Me gustaria poder usar [Max Date] en el caso de que quiera instalar una cortadora / filtro en mi tablero que usa el [Export_Date_&_Time] Campo. En este senario, si elijo cualquier otra opción en la cortadora que no sea la [AbsoluteMaxDate] dejaría todas las visualizaciones en blanco (asumiendo que «IsLatestExportDate» es un filtro de nivel visual / de página).

¿Cómo haría para crear una medida / columna que permita la selección de la fecha máxima Y el período directamente antes del máximo …? (Intenté usar ÚLTIMO aquí, pero me dio un error acerca de tener valores de fecha duplicados en una columna) …..

Si hay un enfoque mejor aquí, me encantaría escucharlo, encuentro que las funciones de fecha y hora en DAX son extremadamente frustrantes. Además, antes de preguntarle al [Export_Date_&_Time] El campo no se genera en ningún intervalo predefinido, por lo que no creo que ninguna de las funciones de inteligencia de tiempo sea de utilidad.

Hola, Mark,

La razón por la que el uso de MAXDate siempre devuelve el último, es causado por el contexto de la columna Calculada. Cuando se usa la medida MAXDate, se calcula en los campos de contexto de la columna calculada actual, que solo posee la fila actual de la tabla, por lo que cuando se realiza la función MAX dentro de la medida MAXDate, siempre se compara con el valor único en sí, es decir, siempre devuelve el resultado real con lo último.

Para solucionar esto, simplemente coloque la expresión de medida en la expresión If, que debería ser:

IsLatestExportDate = IF (REF_Opportunites[Export_Date_&_Time] = MAX (REF_Oportunidades[Export_Date_&_Time]), «Más reciente», «No actual»)

Si bien al usar AbsoluteMAXDate, al usar la función ALL como un filtro dentro de las funciones de cálculo, en realidad elimina el filtro de contexto de fila de columna calculado, lo que hace que la función MAX funcione con toda la columna, esta vez la medida obtendría la fecha máxima real, por lo que el el resultado es correcto.

Para la fecha anterior a la fecha máxima, pruebe con la siguiente fórmula:

Secondlateset = CALCULATE (MAX (REF_Opportunites[Export_Date_&_Time]), filtrar (REF_Opportunites, REF_Opportunites[Export_Date_&_Time]<> MAX (‘Tabla'[date])))

Aquí está el resultado de la prueba:
Untitled.pngUntitled1.png

Saludos,

Charlie Liao

Hola, Mark,

La razón por la que el uso de MAXDate siempre devuelve el último, es causado por el contexto de la columna Calculada. Cuando se usa la medida MAXDate, se calcula en los campos de contexto de la columna calculada actual, que solo posee la fila actual de la tabla, por lo que cuando se realiza la función MAX dentro de la medida MAXDate, siempre se compara con el valor único en sí, es decir, siempre devuelve el resultado real con lo último.

Para solucionar esto, simplemente coloque la expresión de medida en la expresión If, que debería ser:

IsLatestExportDate = IF (REF_Opportunites[Export_Date_&_Time] = MAX (REF_Oportunidades[Export_Date_&_Time]), «Más reciente», «No actual»)

Si bien al usar AbsoluteMAXDate, al usar la función ALL como un filtro dentro de las funciones de cálculo, en realidad elimina el filtro de contexto de fila de columna calculado, lo que hace que la función MAX funcione con toda la columna, esta vez la medida obtendría la fecha máxima real, por lo que el el resultado es correcto.

Para la fecha anterior a la fecha máxima, pruebe con la siguiente fórmula:

Secondlateset = CALCULATE (MAX (REF_Opportunites[Export_Date_&_Time]), filtrar (REF_Opportunites, REF_Opportunites[Export_Date_&_Time]<> MAX (‘Tabla'[date])))

Aquí está el resultado de la prueba:
Untitled.pngUntitled1.png

Saludos,

Charlie Liao

ShrikantKhanna

En respuesta a v-caliao-msft

Hola @ v-caliao-msft

Necesito tu ayuda.

Tengo un gran conjunto de datos en el que tengo que averiguar cuántos días han pasado entre la última fecha de venta y la penúltima fecha de venta. Primero resumí la tabla de ventas principal en una nueva tabla para crear una lista de todos los nombres / ID de quejas distintos a los que he realizado ventas.

Luego calculó la fecha de venta Primera CONFIRMADA (primera vez) filtrando solo las ventas confirmadas (y sin considerar ninguna que haya sido rechazada por algún motivo) usando el filtro Nombre / ID de Cliente y Ventas = «Confirmado». Del mismo modo, calculé la fecha de las últimas ventas confirmadas. Todo esto sucedió correctamente.

SUMMARY = SUMMARIZE (‘ALLSALES’, ‘ALLSALES'[clientid], ‘TODAS LAS VENTAS'[clientName])

PRIMERA FECHA DE VENTA CONFIRMADA = CALCULAR (MIN (‘ALLSALES'[SALESDATE]), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[SALES STATUS]= «CONFIRMADO»), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[clientid]= ‘RESUMEN'[CLIENTID]))

ÚLTIMA FECHA DE VENTA CONFIRMADA = CALCULAR (MAX (‘ALLSALES'[SALESDATE]), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[SALES STATUS]= «CONFIRMADO»), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[clientid]= ‘RESUMEN'[CLIENTID]))

SEGUNDA ÚLTIMA FECHA DE VENTA CONFIRMADA = CALCULAR (MAX (‘ALLSALES'[SALESDATE]), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[SALES STATUS]= «CONFIRMADO»), FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[clientid]= ‘RESUMEN'[CLIENTID]),FILTRO (TODAS (‘TOTAL VENTAS’), ‘TOTAL VENTAS'[SALESDATE]<> MAX (‘RESUMEN'[LAST CONFIRMED SALES DATE])))

Cuando hago la SEGUNDA ÚLTIMA FECHA DE VENTAS CONFIRMADA con la expresión anterior, obtengo el mismo resultado exacto que la ÚLTIMA FECHA DE VENTAS CONFIRMADA.

MarkDGaal

En respuesta a v-caliao-msft

@ v-caliao-msft Gracias, sabía que había algo que no entendía acerca de cómo se evalúan las medidas. He corregido «IsLatestExportDate» para utilizar la función MAX () en lugar de la [MAXdate] o [AbsoluteMAXDate]. Entonces nos quedamos con:

IsLatestExportDate = IF(REF_Opportunites[Export_Date_&_Time] = MAX(REF_Opportunites[Export_Date_&_Time]) , "Latest", "Not Current")

Mi problema es este … me gustaría colocar [IsLatestExportDate] como un filtro de nivel visual para algunos de mis elementos visuales para asegurarme de que muestren los datos más actuales. Pensé que la exclusión de la función ALL () de IsLatestExportDate haría que la columna calculada reevaluara lo que es «Más reciente» cuando un dropdown / filtro seleccionó un [Export_Date_&_Time] que es IsLatestExportDate] columna calculada.

Visualización [MAXDate] como un valor en una tabla visual en el informe se actualiza correctamente, así que estoy confundido sobre por qué el filtrado por la función Max () no hace lo mismo dentro de una columna calculada …

Con este fin, ¿hay alguna forma de que mi columna calculada reevalúe lo que es «Último» si alguien quisiera excluir el más reciente? [Export_Date_&_Time] desde el filtro / cortador …?

EDITAR: Corrección sugerida en su publicación anterior para cambiar «<> MAX (‘Tabla'[date]) «a» <> MAX (REF_Opportunites[Export_Date_&_Time]) «

En respuesta a MarkDGaal

Gracias por recordárselo.

La razón por la que usar [MAXDate] actualizaría los datos, es porque los datos de la columna cambiaron al usar la cortadora, las medidas calcularían los datos en el momento en que se usa, por lo que para esta situación, cuando se usa [MAXDate] con la columna modificada, calculará el valor actualizado.

Para la columna calculada, los datos son fijos, que se calculan justo después de finalizar su definición, por lo que el valor no se actualizará.

Y según lo que sé, no hay forma de volver a calcular el valor en una columna calculada por segunda vez.

MarkDGaal

En respuesta a v-caliao-msft

@ v-caliao-msft hummmm, así que, en resumen, si las medidas son lo único que se puede recalcular al filtrar y el contexto de la columna solo posee una sola fila y no la tabla (allí, al hacer uso de una medida en una columna de cálculo, parece inútil) como una razón perfecta para que Microsoft permita que las medidas se utilicen como filtros en [Fields] bajo filtrado avanzado y luego colocando la medida en las casillas «mayor que» o «menor que».

Su solución para encontrar la segunda fecha más grande funcionó de maravilla (ojalá hubiera pensado en eso), dejaré esta pregunta abierta en caso de que alguien más tenga un enfoque alternativo para mi problema y, si no, marque la solución.

Deja un comentario

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