Forum Discussion
Problema total con SAMEPERIODLASTYEAR
He estado luchando por algún tiempo ahora con este pequeño&easy(?) problema.. ☹️
Medida:
Ventas de Diff entre años ?
SI (
ISBLANK([Ventas totales el año pasado]);
BLANCO();
[Ventas totales (SUMX)] - [Ventas totales el año pasado]
)
Esto está casi bien... funciona cuando filtro el en el año 2020. Pero sin el filtro las ventas de diferencias totales son incorrectas. Debe ser 1725, mot 2020.
Measue:
Ventas totales el año pasado ?
CALCULAR(
[Ventas totales (SUMX)];
ALL('Tabla');
SAMEPERIODLASTYEAR('Tabla'[Fecha])
)
Ventas totales (SUMX) ?
'Tabla';
'Table'[Amout] * 'Tabla'[Precio]
Hola , @Tom_SWE
No muy claro.
Tal vez lo que necesitas es una fórmula como esta:2Diff sales between years = SUMX(DISTINCT('Date'[Date]), IF ( ISBLANK([Total sales last year]), BLANK(), [Total sales] - [Total sales last year] ))Aquí hay una demostración.
Saludos
Equipo de Apoyo Comunitario _ Eason
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
7 Replies
- amitchandak
Super User
Las funciones de inteligencia de todos los tiempos necesitan una fecha de finalización para crear un período. Así que si usted no proporciona entonces se basará en la tabla / calendario.
Mejor crear una tabla de calendario y utilizar esto.
Total sales last year = CALCULATE( [Total sales (SUMX)]; SAMEPERIODLASTYEAR('Date'[Date]) ) Or Total sales last year = CALCULATE( [Total sales (SUMX)]; datediff('Date'[Date],-1,Year) )Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
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/- AnonymousNot applicable
Siento no poder hacerlo funcionar. Soy nuevo en DAX (pero he estado trabajando mucho con Excel en el pasado)
Creé un caledar :Calendario: CALENDARAUTO()y cambiar :Ventas totales el año pasado ?CALCULAR([Ventas totales (SUMX)];SAMEPERIODLASTYEAR('Calendario'[Fecha]))Entonces obtengo el resultado :
La fecha en la imagen de la tabla es la fecha de la tabla de datos. No fecha de calendario.- AnonymousNot applicableAprenda las técnicas de modelado de datos correctas:
https://www.youtube.com/watch?v=_quTwyvDfG0
https://www.youtube.com/watch?v=78d6mwR8GtA&t=1247s
https://www.sqlbi.com/tv/time-intelligence-in-microsoft-power-bi/
Y recuerde: Power BI no es Excel. DAX es simple, pero no es fácil.
Mejor
D
- v-easonf-msft
Community Support
Hola, @Tom_SWE
Tal vez solo necesite cambiar su fórmula como se muestra a continuación (necesita construir relaciones entre tablas primero):
Total sales last year = SUMX ( 'Table', CALCULATE ( [Total sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) )Se mostrará como se muestra a continuación:
Aquí hay una demostración.
Saludos
Equipo de Apoyo Comunitario _ Eason
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.- AnonymousNot applicable
Gracias, pero esto todavía no está bien.
Sin filtrar la columna Diff ventas entre años es:
1515+15970+2320 a 20280 ... debería ser 19805Pero funciona si aplico el filtro de año 2020.
20280 - Ventas totales (2019+2020) - Ventas totales el año pasado.
Pero sólo debería mostrar diferencia entre años.
Supongo que no es posible hacerlo así.
Gracias , no vinculé el calendario a los datos bable!
- v-easonf-msft
Community Support
Hola , @Tom_SWE
No muy claro.
Tal vez lo que necesitas es una fórmula como esta:2Diff sales between years = SUMX(DISTINCT('Date'[Date]), IF ( ISBLANK([Total sales last year]), BLANK(), [Total sales] - [Total sales last year] ))Aquí hay una demostración.
Saludos
Equipo de Apoyo Comunitario _ Eason
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.