Forum Discussion
DAX: Resume
Hola a todos.. Necesito ayuda para escribir una instrucción dax para mi ejemplo de conjunto de datos a continuación
| Mercado | Período | Ventas |
| Australia | 201801 | 100 |
| Canadá | 201801 | 100 |
| República Checa | 201801 | 100 |
| Francia | 201801 | 100 |
| GRAN BRITAIN | 201801 | 100 |
| India | 201801 | 100 |
| Polonia | 201801 | 100 |
| E.e.u.u | 201801 | 100 |
| Australia | 201802 | 100 |
| Canadá | 201802 | 100 |
| República Checa | 201802 | 100 |
| Francia | 201802 | 100 |
| GRAN BRITAIN | 201802 | 100 |
| India | 201802 | 100 |
| Polonia | 201802 | 100 |
Mis datos tienen 3 campos: País, Período de tiempo (aaaamm) y Ventas. Necesito crear dos columnas 6MMT Sales y YTD Sales.
6MMT Las ventas serían ventas de 6 meses anteriores: Ex: Australia 201901 las ventas serían suma de ventas de 201807 a 201812.
Las dos restricciones aquí son País y Período de tiempo.
6MMT Las ventas serían ventas de 6 meses anteriores: Ex: Australia 201901 las ventas serían suma de ventas de 201807 a 201812.
YTD Sales (201904) es la suma de las ventas (201812 a 201903).
Por favor, alguien puede guiarme con esto.
3 Replies
- amitchandak
Super User
Puede crear un campo de fecha utilizando AAAAMM
Fecha: fecha (izquierda([período],4),derecha([período],2),1)
Ahora usa un calendario de fechas e inteligencia de tiempo
Rolling 6 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-6,MONTH)) Rolling 6 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date Filer],MAX(Sales[Sales Date]),-6,MONTH)) YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(('Date'[Date]),"12/31")) //change end date of year This Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD((ENDOFYEAR('Date'[Date])),"12/31")) //change end date of year Last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"12/31")) //change end date of year Last YTD complete Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"12/31")) //change end date of year Last to last YTD Sales = CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"12/31")) //change end date of year Year behind Sales = CALCULATE(SUM(Sales[Sales Amount]),dateadd('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
Amit gracias por su ayuda. Sin embargo, o no lo he implementado correctamente o hay algo mal aquí. Tenía un campo de fecha en la tabla de ventas y en la tabla de calendario tengo datos de nivel de día (AAAAMMDD). Así que cuando usé el DAX para cada fila estoy recibiendo las ventas para el mismo mes. ¿Me estoy perdiendo algo aquí?
- AnonymousNot applicable
Mi solución tendría idealmente dos limitaciones: País y Período de tiempo
Período de tiempo en caso de 6MMT rodando (seis meses anteriores) y YTD (Comenzando la marcha del año pasado y hasta un mes antes). Puedo usar Excel para hacerlo, pero quiero hacerlo en DAX para asegurarme de que mi panel de control está automatizado.