Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

PROBLEMA URGENTE DE COMPARACIÓN DE FECHAS

Hola chicos, me enfrento a un problema de comparación de fechas en el lugar de trabajo y necesito una solución rápida. He estado atrapado aquí durante los últimos 2 días. Agradecería cualquier aporte en este momento 😞

Forecast_Remaining_Budget = 
DÓNDE Max_Startdatum = DATEVALUE(
CALCULAR(
..MAX('Booked_Times'[Fecha de inicio]),
TODO('Booked_Times'),
VALORES('Booked_Times'[Orden de trabajo])
)

)

DÓNDE LastBudget =
CALCULAR(
[Remaining_Budget],
'ForecastDateTable'[Fecha] >= Max_Startdatum
)

DÓNDE Constant_Decrement = LastBudget / 4
DÓNDE Current_Month = MES(..MAX('ForecastDateTable'[Fecha]))
DEVOLUCIÓN
SI(
Current_Month <= MES(Max_Startdatum),
[Remaining_Budget],
(LastBudget - (Constant_Decrement * (Current_Month - MES(Max_Startdatum)))
))
En pocas palabras, MaxStartdatum consiste en una fecha única para cada 'Arbeitsauftrag' que es la columna de nombre del proyecto. Se supone que debo crear un gráfico de barras con el eje x como meses y el eje y como presupuesto restante, pero ese no es el problema, así que no entraré en detalles. Digamos que después de calcular Max_Startdatum para un proyecto específico y el valor de la variable es 01.09.2023.
'ForecastDateTable'[Date] >= Max_Startdatum

Si coloco esa variable allí para filtrar, el gráfico de barras no se muestra correctamente, o en otras palabras, los meses más tarde al final del año que luego se calculan en función de los meses existentes anteriores no aparecen. Sin embargo, cuando reemplacé Max_Startdatum con DATE(2023,9,1), el eje x está completo y se muestran todos los meses. Creé una tarjeta visual para verificar el valor de Max_Startdatum y es exactamente la misma que DATE(2023,9,1). ¿Alguien puede decirme qué causó una diferencia en esto?

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Esto sonaba como la solución porque es exactamente lo que quiero. Sin embargo, recibo un mensaje de error que dice EARLY / EARLY se refiere a un contexto de fila anterior que no existe. ¿Qué se supone que indica eso?

Syndicate_Admin
Administrator
Administrator

El comportamiento que está describiendo con la variable 'Max_Startdatum' se vacía durante meses en los que no se esperan datos en Power BI. Las variables de DAX se evalúan dentro del contexto de filtro en el que se utilizan. Cuando se aplica un filtro a un objeto visual, como un filtro de mes, afecta al contexto de evaluación de los cálculos de DAX. En este caso, cuando no hay datos para un mes específico para un proyecto determinado, el cálculo 'MAX('Booked_Times'[Startdatum])' devuelve un resultado vacío, y eso se propaga a su variable 'Max_Startdatum'.

Si desea mantener una "Max_Startdatum" constante para un proyecto, incluso cuando no hay datos durante ciertos meses, puede usar una técnica llamada "referencia anterior" para capturar el valor una vez para cada proyecto y usar ese valor en todos sus cálculos. Así es como puede modificar su variable 'Max_StartDatum':

''DAX
Max_StartDatum =
VAR ProjectStart = CALCULATE(
MAX('Booked_Times'[Startdatum]),
TODOS('Booked_Times'),
VALUES('Booked_Times'[Arbeitsauftrag])
)
DEVOLUCIÓN
SI(
ISBLANK(ProjectStart),
EARLY(ProjectStart), -- Usar el valor capturado previamente
ProjectStart: utilice el valor del proyecto actual
)
```

En este cálculo modificado, 'EARLY' captura el valor 'ProjectStart' para el proyecto cuando hay datos y los utiliza durante todo el cálculo, incluso cuando no hay datos durante algunos meses.

Esto debería garantizar que la "Max_Startdatum" permanezca constante para cada proyecto, independientemente de si hay datos para todos los meses o no. Pruebe esta modificación para ver si cumple con sus requisitos para la fecha de inicio constante del proyecto.

Syndicate_Admin
Administrator
Administrator

Me di cuenta de que el problema realmente radica en Max_Startdatum. Creé Max_Startdatum de esta manera con la intención de mantenerlo como una constante (lo que significa que su valor es único para cada proyecto a lo largo de los meses). Sin embargo, a medida que voy mes a mes para depurar el valor mantenido dentro de la variable, Max_Startdatum está vacío para el mes posterior a septiembre, que es el valor único de un proyecto específico, por ejemplo. DATE(2023,9,1) en este caso funciona porque literalmente es una constante y no se verá afectada por el filtro de mes en el gráfico de barras (eje x). Para darte más detalles, básicamente para este proyecto donde su Max_Startdatum es septiembre, no hay más datos sobre octubre, noviembre y diciembre, por eso creé barras después de septiembre que disminuyen constantemente. La forma en que creé Max_Startdatum con la intención de querer crear una variable constante que actúe exactamente como DATE(2023,9,1) pero que cambie dinámicamente solo cuando cambias a otro proyecto es

Max_StartDatum =
CALCULAR(
..MAX('Booked_Times'[Fecha de inicio]),
TODO('Booked_Times'),
VALORES('Booked_Times'[Orden de trabajo])
)

Arbeitsauftrag es el nombre del proyecto. Eliminé todos los filtros de Booked_Times y mantuve el filtro para proyectos. Sin embargo, este valor constante cambia a vacío cuando repaso los meses que no tengo datos para calcular y tengo que calcularlos manualmente usando IF. Por favor, ayúdame 😞

Syndicate_Admin
Administrator
Administrator

Parece que está intentando usar la variable 'Max_Startdatum' como condición de filtro para su gráfico, pero está encontrando problemas con la visualización de meses en el eje x al usar esta variable. También ha notado que cuando codifica la fecha como 'DATE(2023,9,1)', funciona correctamente. El problema podría estar relacionado con cómo se calcula la variable 'Max_Startdatum'.

Aquí hay una posible explicación para el problema:

1. No coinciden los tipos de datos:
- 'Max_Startdatum' se calcula utilizando 'DATEVALUE', que convierte una fecha en formato de texto en un valor de fecha.
- Si el formato de la fecha en la columna 'Booked_Times'[Startdatum] no es coherente o hay problemas de calidad de los datos, podría dar lugar a resultados inesperados al convertir a una fecha.
- El código duro 'DATE(2023,9,1)' es un valor de fecha, por lo que no hay ambigüedad en su formato.

Para solucionar este problema, puede intentar lo siguiente:

1. **Compruebe la calidad de los datos:**
- Asegúrese de que la columna 'Booked_Times'[Startdatum] contiene valores de fecha coherentes y válidos.

2. **Mostrar la variable 'Max_Startdatum':**
- Cree una tarjeta visual para mostrar el valor de 'Max_Startdatum' y compararlo con el código duro 'DATE(2023,9,1)'. Esto ayudará a verificar si hay alguna diferencia en sus formatos.

3. **Depuración:**
- Para depurar aún más el problema, puede agregar medidas temporales a sus visualizaciones para mostrar resultados intermedios. Por ejemplo, cree medidas para mostrar los componentes de mes y año de 'Max_Startdatum' y 'DATE(2023,9,1)' por separado. Esto puede ayudar a identificar cualquier discrepancia.

Este es un ejemplo de cómo puede crear medidas para mostrar los componentes de mes y año:

''DAX
Max_Startdatum_Month = MES(Max_Startdatum)
Max_Startdatum_Year = AÑO(Max_Startdatum)
```

Después de agregar estas medidas, puede agregarlas a sus imágenes para ver el mes y el año de 'Max_Startdatum' y 'DATE(2023,9,1)' por separado. Esto debería proporcionar más información sobre cualquier diferencia entre los dos.

Al seguir estos pasos, debería poder identificar la causa raíz del problema y determinar por qué 'Max_Startdatum' no produce los resultados esperados para su gráfico.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors