Calcule el total del mes más reciente o al menos del mes anterior en comparación con hoy

Un usuario Pregunto ✅

Anónimo

Hola,

Tengo un conjunto de datos llamado PA con dos columnas: Fecha y Ventas totales. En este momento, tengo una medida que filtra según lo siguiente:

FILTRO(PA,MES(PA[Date Snapshot])= MES(HOY())))
Esto calcula el total del mes actual. Sin embargo, si mis datos no se actualizan hasta el 5 del mes, digamos, esta medida no mostrará nada. porque no va a haber ningún dato en el mes actual. Por lo tanto, el mejor escenario es crear una medida que calcule las ventas del mes más reciente en esa columna. Alternativamente, una solución menos ideal pero buena sería mostrar siempre las ventas del mes anterior. Tampoco estoy seguro de cómo hacer esto, ya que no puedo simplemente pasar HOY() a MES ANTERIOR.
¡Gracias por tu ayuda!

greg_deckler

En respuesta a Anónimo

@Anónimo ¿Te estás perdiendo la segunda parte de tu declaración IF? Puede ser más fácil de ver aquí, use daxformatter.com:

TEST =
VAR __Calc =
    CALCULATE (
        SUM ( PA[Sales Amount] ) / SUM ( PA[Split per Year 2021] ),
        FILTER ( PA, MONTH ( PA[Date Snapshot] ) = MONTH ( TODAY () ) )
    )
RETURN
    IF (
        ISBLANK ( __Calc ),
        CALCULATE (
            SUM ( PA[Sales Amount] ) / SUM ( PA[Split per Year 2021] ),
            FILTER ( PA, MONTH ( PA[Date Snapshot] ) = MONTH ( TODAY () - 1 ) )
        ), __Calc
    )

amichandak

@Anónimo, vea si puede usar la inteligencia de tiempo con la tabla de fechas

Ventas MTD = CALCULAR(SUMA(Ventas[Sales Amount]),DATESMTD(‘Fecha'[Date]))
LMTD= CALCULAR(SUMA(Ventas[Sales Amount]),DATESMTD(dateadd(‘Fecha'[Date],-1 MES)))

LMTD -2= CALCULAR(SUMA(Ventas[Sales Amount]),DATESMTD(dateadd(‘Fecha'[Date],-2 MESES)))
Ventas anteriores = CALCULAR(SUMA(Ventas[Sales Amount]),mesanterior(‘Fecha'[Date]))
Ventas anteriores (completas) = ​​CALCULAR(SUMA(Ventas[Sales Amount]),DATESMTD(ENDOFMONTH(dateadd(‘Fecha'[Date],-1 MES))))
mes anterior = CALCULAR(suma(»Tabla»[total hours value]),mesanterior(‘Fecha'[Date]))

Ahora

si (está en blanco ([MTD]), [LMTD],[MTD])

de la misma manera para el mes pasado

si (está en blanco ([MTD]), [LMTD-2],[LMTD])

Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de tener un calendario de fechas y que se haya marcado como la fecha en la vista del modelo. Además, únelo con la columna de fecha de tu/s hecho/s. Referir:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/

Vea si mi seminario web sobre Time Intelligence puede ayudar: https://community.powerbi.com/t5/Webinars-and-Video-Gallery/PowerBI-Time-Intelligence-Calendar-WTD-YTD-LYTD-Week-Over-Week/ mp/1051626#M184

Agradezco sus felicitaciones.

greg_deckler

@Anónimo Tal vez intente:

Measure =
  VAR __Calc = <your calc>
RETURN
  IF(ISBLANK(__Calc),<your calc with [Date Snapshot] = MONTH(TODAY())-1>
?

Puede ser más específico con datos de muestra.

Anónimo

En respuesta a greg_deckler

hola @Greg_Deckler,

Gracias por su respuesta. Intenté usar lo que escribiste y obtuve el código final a continuación. Desafortunadamente, muestra un valor en blanco.

PRUEBA =
VAR __Calc = calcular(
SUMA(AP[Sales Amount])/SUMA(PA[Split per Year 2021]),FILTRO(PA,MES(PA[Date Snapshot])= MES(HOY())))
REGRESO
SI(ESBLANCO(__Calc),calcular(SUMA(AP[Sales Amount])/SUMA(PA[Split per Year 2021]),FILTRO(PA,MES(PA[Date Snapshot])= MES(HOY()-1))))
Básicamente, quiero calcular la relación entre el monto de las ventas y la división por año 2021.
Si solo la siguiente línea, funciona bien, pero solo puede calcular el mes actual:
Medida = calcular(
SUMA(AP[Sales Amount])/SUMA(PA[Split per Year 2021]),FILTRO(PA,MES(PA[Date Snapshot])= MES(HOY())))
¿Alguna idea de lo que está mal? ¡Gracias!

En respuesta a Anónimo

HOLA @Anonimo,

¿Greg_Deckler trabaja de tu lado? De lo contrario, comparta algunos datos ficticios para que podamos probar la fórmula de codificación en ellos.

Cómo obtener una respuesta rápida a su pregunta

Saludos,

Xiaoxin-sheng

greg_deckler

En respuesta a Anónimo

@Anónimo ¿Te estás perdiendo la segunda parte de tu declaración IF? Puede ser más fácil de ver aquí, use daxformatter.com:

TEST =
VAR __Calc =
    CALCULATE (
        SUM ( PA[Sales Amount] ) / SUM ( PA[Split per Year 2021] ),
        FILTER ( PA, MONTH ( PA[Date Snapshot] ) = MONTH ( TODAY () ) )
    )
RETURN
    IF (
        ISBLANK ( __Calc ),
        CALCULATE (
            SUM ( PA[Sales Amount] ) / SUM ( PA[Split per Year 2021] ),
            FILTER ( PA, MONTH ( PA[Date Snapshot] ) = MONTH ( TODAY () - 1 ) )
        ), __Calc
    )

Deja un comentario

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