Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Power BI Total

Capture.PNGHola

He creado medidas para las ventas del año en curso frente a las ventas del año pasado.

Para el año en curso:

CY Ventas = SUMA(ventas[subtotal])
Para el año pasado:
Ventas LY = CALCULAR([Ventas], 'ventas'[Año] = SELECTEDVALUE('ventas'[Año])-1)
Tengo datos de enero de 2018 a enero de 2022, y quiero comparar manzanas con manzanas cuando selecciono el año 2022 muestra datos correctos, pero el total del año pasado no es correcto, sino que muestra el total de enero de 2021 a diciembre de 2021.
Y también estoy teniendo el mismo problema con Quarter.
¿Cómo puedo resolver este problema?
  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    Hay @KShah77 ,

    Cada fila tiene contexto para calcular. Por lo tanto, debemos modificar el contexto a través de filter(all(table)....). en este punto, necesitamos condsider cada mes, pero también la fila total. Así que obtén una fecha de rango de la fila actual. Por ejemplo, mes 1 año 2021 , la fecha de inicio del año pasado es fecha (2021 -1,1,1), la fecha de finalización es fecha(2021-1,1,31). Esto es lo que hacen var _start y var _end.

    Pero si su tipo de "fecha de inicio" es Fecha, tal vez pueda probar este código:

    LY sales = CALCULATE(SUM('Table'[Sales]),all(),DATEADD('Table'[Date],-1,YEAR))

    resultado:

    Puede hacer referencia al pbix en el archivo adjunto. si necesita más ayuda, comparta su archivo pbix sin fecha confidencial.

    Saludos

    Equipo de apoyo a la comunidad _ chenwu zhu

    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

6 Replies

  • Usar SELECTEDVALUE dentro de un CALCULATE es causar problemas. Deberá agregar un indicador "IsPastInPreviousYear" a su tabla de calendario para indicar qué período de tiempo debe considerarse. Entonces la medida sería

    Ventas LY = CALCULAR([Ventas], SAMEPERIODLASTYEAR('Dates'[Date]),'Dates'[IsPastInPreviousYear])

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola

      Gracias por su respuesta.

      No tengo tabla de fechas, mis fechas están en la misma tabla de ventas. Traté de usar esta medida, pero tampoco funciona.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Hay @KShah77 ,

        ¿Es que solo tienes una mesa de venta?

        En caso afirmativo, es extraño que LY Sales no obtenga el resultado cuando seleccione 2022 a menos que [Sales] tenga alguna función como all() o removefilter() en su código.

        Si me equivoco, puedes intentar usar la siguiente medida.

        LY Sales =
        VAR _start =
            DATE( MAX( sales[year] ) - 1, MIN( 'sales'[month] ), 1 )
        VAR _end =
            DATE( MAX( 'sales'[year] ) - 1, MAX( 'sales'[month] ) + 1, 1 ) - 1
        RETURN
            CALCULATE(
                SUM( 'sales'[sales] ),
                FILTER( ALL( table ), [dates] >= _start && [dates] <= _end )
            )
        

        Si no tiene [fechas] en la tabla de ventas, cree una columna de fechas por [año], [mes], [día]

        O comparta datos de muestra y espere el resultado, si necesita más ayuda.

        Saludos

        Equipo de apoyo a la comunidad _ chenwu zhu

        Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

  • Hola

    Gracias por su respuesta.

    Entonces, sí, todos mis datos relacionados están en la tabla "ventas" y he creado la columna Año, Mes y Día a partir de mi columna "startDate". Y mi medida [de Ventas] tiene suma de subtotal nada más.

    Y cuando pruebo tu solución me da unos números que no está en ninguna parte del registro de ningún año o mes y además ni siquiera es un total de eso todos los años, ¿sería genial si pudieras explicar ese CÓDIGO?

    Encuentre la imagen adjunta de SELECTEDVALUE = 2021 y 20222021.PNG2022.PNG para refrence, esto es lo que obtengo después de usar su código proporcionado para LY Sales.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hay @KShah77 ,

      Cada fila tiene contexto para calcular. Por lo tanto, debemos modificar el contexto a través de filter(all(table)....). en este punto, necesitamos condsider cada mes, pero también la fila total. Así que obtén una fecha de rango de la fila actual. Por ejemplo, mes 1 año 2021 , la fecha de inicio del año pasado es fecha (2021 -1,1,1), la fecha de finalización es fecha(2021-1,1,31). Esto es lo que hacen var _start y var _end.

      Pero si su tipo de "fecha de inicio" es Fecha, tal vez pueda probar este código:

      LY sales = CALCULATE(SUM('Table'[Sales]),all(),DATEADD('Table'[Date],-1,YEAR))

      resultado:

      Puede hacer referencia al pbix en el archivo adjunto. si necesita más ayuda, comparta su archivo pbix sin fecha confidencial.

      Saludos

      Equipo de apoyo a la comunidad _ chenwu zhu

      Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.