MrCee
Hola comunidad
Sin usar columnas calculadas, ya que me gustaría poder pivotar por proyecto en Power BI usando medidas,
Necesito encontrar una manera de extraer la fecha exacta en la que la medida total acumulada en ejecución ha superado un objetivo.
Este destino se puede encontrar repitiendo proyecto por proyecto en la misma tabla, o alternativamente como una búsqueda RELACIONADA. Estoy usando Power BI pero visualizo medidas en Power Pivot / Excel con fines de prueba
El total acumulado acumulado se calcula mediante un patrón DAX estándar como tal y, como se esperaba, equivale a las ventas totales, ya que la medida incluye todas las filas y TARGET aún no la ha filtrado.
TOTAL DE EJECUCIÓN ACUMULADO: = CALCULAR (
SUM (VENTAS[AMOUNT]),
FILTRO (VENTAS,
VENTAS[Sales_Date]> = MIN (VENTAS[Sales_Date])))
Lo que me gustaría lograr a continuación es encontrar la medida acumulada del total acumulado por la FILA exacta del proyecto que muestre la ‘FECHA OBJETIVO ALCANZADO’ MÍNIMO donde el OBJETIVO de ventas ha sido superado por la medida total acumulada.
He filtrado la siguiente tabla en el PROYECTO # 3 con algunas columnas manuales de Excel para mostrarle la FILA que debe devolverse y el VALOR.
En la actualidad, esto no funciona. Espero que ayude a mostrar lo que estoy tratando de lograr:
ALCANZAR LA FECHA OBJETIVO: = CALCULAR (
MIN (VENTAS[Sales_Date]),
FILTRO (VENTAS,[CUMULATIVE RUNNING TOTAL]> = RELACIONADOS (PROYECTOS[TARGET])))
o si el valor objetivo se repite en la misma tabla para cada proyecto como se muestra en la captura de pantalla anterior
ALCANZAR LA FECHA OBJETIVO: = CALCULAR (
MIN (VENTAS[Sales_Date]),
FILTRO (VENTAS,[CUMULATIVE RUNNING TOTAL]> = MIN (VENTAS[TARGET])))
Probablemente me esté perdiendo algo realmente simple aquí, pero hasta ahora no he visto una solución para este.
¡Gracias por adelantado!
Ashish_Mathur
En respuesta a Ashish_Mathur
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Ashish_Mathur
Hola,
Comparta el enlace desde donde puedo descargar su archivo Excel basado en fórmulas.
Ashish_Mathur
En respuesta a Ashish_Mathur
Hola,
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
Sumdib
En respuesta a Ashish_Mathur
¿Alguien puede proporcionar la medida en la solución?
Ashish_Mathur
En respuesta a Sumdib
Hola,
¿No puede descargar mi archivo de resolución de PBI?
Marcorusso
No creo que sea una buena idea deshacerse de una tabla de fechas.
Crear una columna calculada con la columna TARGET_ACHIEVED podría ser mucho mejor para el rendimiento.
Sin embargo, este código debería funcionar como una medida (¡no lo probé, es posible que haya errores!)
DateTargetReached := IF ( HASONEVALUE ( Projects[Project_Name] ), VAR TargetRunningTotal = SELECTEDVALUE ( Projects[Target] ) VAR FirstDateOverTarget = FIRSTNONBLANK ( Sales[Date], IF ( [Cumulative Running Total] >= TargetRunningTotal, 1 ) ) RETURN FirstDateOverTarget )
BastiaanBrak
En respuesta a Marcorusso
gracias Marco, he intentado modificar tu solución para mi propio caso de uso, pero no llegué allí. ¿Esperando que puedas ayudarme con esto?
Para aclarar: supongamos que el OP no estaba interesado en la fecha en que se alcanzó el objetivo por proyecto, sino en la fecha más temprana (y más reciente) en general (en muchos más proyectos). Al eliminar la condición IF más HASONEVALUE, el total acumulado acumulado se agrega a través de los proyectos y, por lo tanto, el resultado daría una ‘fecha de acierto objetivo’ que es anterior a la realidad, por lo que no funciona. ¿Cuál es la modificación requerida en su DAX anterior que lo haría funcionar en el escenario que describí anteriormente?
Ashish_Mathur
En respuesta a BastiaanBrak
Hola,
Comparta algunos datos, describa la pregunta y muestre el resultado esperado.
BastiaanBrak
En respuesta a Ashish_Mathur
hola @Ashish_Mathur y gracias por interesarse en mi pregunta. Mi caso de uso es un poco diferente al OP pero en esencia muy similar. Supongamos que tengo la siguiente tabla de datos simple llamada Prueba, con dos (o más) ID distintos:
Usando DAX, he creado una medida de ‘Total en ejecución’:
Lo que quiero hacer es tener dos Tarjetas en el tablero que indiquen la fecha más temprana y la última en la que se excede un objetivo en particular, digamos 325. Gráficamente:
He intentado adaptar la medida que creó @marcorusso:
pero esto no es adecuado aquí porque requiere que se seleccione una única ID; a menos que se filtre una identificación (por ejemplo, haciendo clic en una entrada de identificación en la leyenda), la tarjeta mostrará (EN BLANCO).
Entonces, la pregunta es: ¿qué medidas de DAX permiten que los elementos visuales de la tarjeta muestren las fechas más antiguas y más recientes en que se excede un objetivo determinado?
.pbix con lo anterior está disponible aquí: https://easyupload.io/i9ubac
Muchas gracias Bastiaan
Marcorusso
En respuesta a BastiaanBrak
¿Quieres esto?
FirstDateTargetReached =
MINX (
DISTINCT ( Test[ID] ),
CALCULATE (
VAR TargetRunningTotal = 325
VAR FirstDateOverTarget =
FIRSTNONBLANK ( Test[Date], IF ( [Running total] >= TargetRunningTotal, 1 ) )
RETURN
FirstDateOverTarget
)
)
lance_6
En respuesta a Marcorusso
@marcorusso
¿Cuál es el beneficio de usar DISTINCT vs VALUES aquí?
Marcorusso
En respuesta a lance_6
En caso de que Test esté en el lado único de una relación, no desea iterar el valor EN BLANCO de una relación no válida.
lance_6
En respuesta a Marcorusso
Eso tiene sentido. ¡Gracias por la respuesta!
BastiaanBrak
En respuesta a Marcorusso
@marcorusso solo quería darte las gracias de nuevo. Modifiqué su solución DAX para mi caso de uso específico. ICYMBI, el informe se publica aquí: Herramienta de pronóstico de migración del pulgón de la zanahoria del sauce | AHDB
BastiaanBrak
En respuesta a Marcorusso
Sí @marcorusso, ¡muchas gracias!
Ashish_Mathur
En respuesta a BastiaanBrak
Hola,
No entiendo el significado de «fechas más tempranas y últimas que se excede un objetivo determinado«. Según los datos que ha compartido, comparta su resultado exacto esperado.
BastiaanBrak
En respuesta a Ashish_Mathur
@Ashish_Mathur, el resultado exacto que espero según mis datos de prueba es que el elemento visual de la tarjeta con ‘FirstDateTargetReached’ mostrará ’27 de marzo ‘, dado que fue la fecha más temprana en la que se superó el objetivo (consulte la descripción emergente):
Del mismo modo, el objeto visual de la tarjeta con ‘LastDateTargetReached’ debería mostrar ’30 de marzo ‘, dado que esa fue la última fecha en la que se superó el objetivo (de nuevo, consulte la descripción emergente):
Mi conjunto de datos real tiene más ID que dos, pero supongo que el principio es el mismo.
Gracias Bastiaan