Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago

DAX: Resume

Hola a todos.. Necesito ayuda para escribir una instrucción dax para mi ejemplo de conjunto de datos a continuación

MercadoPeríodoVentas
Australia201801100
Canadá201801100
República Checa201801100
Francia201801100
GRAN BRITAIN201801100
India201801100
Polonia201801100
E.e.u.u201801100
Australia201802100
Canadá201802100
República Checa201802100
Francia201802100
GRAN BRITAIN201802100
India201802100
Polonia201802100

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

  • 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/

    • Anonymous's avatar
      Anonymous
      Not 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í?

  • Anonymous's avatar
    Anonymous
    Not 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.