Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Dynamic Rolling 12

¡Hola!

Estoy tratando de crear un 12 para un número de ventas. Mi deseo es tenerlo dinámico para que un usuario pueda seleccionar un mes y realizará un cálculo de 12 continuos para cualquier año en el gráfico usando ese mes. Este es el ejemplo del diseño que tengo usando Junio como filtro de segmentación de datos.

Mes6
201720182019
Rolling 12100200150

Mi problema es que parece que mi código está cortando la parte de la 12 rodante que está en el año anterior. En este caso, la mitad de los datos se perderían. Creo que mi código debe incluir los 12 meses en el filtro de fecha, pero la columna de año var está haciendo que los datos se filtren adicionalmente para que solo se muestre el año. La variable month es de una tabla de calendario y estoy usando el origen de datos real para el año var. Mi código que estoy usando se enumera a continuación. ¿Cómo puedo obtener los 12 meses completos para permanecer en los datos?

VAR max_date

MAXX(Ventas,Ventas[Año])

devolución

CALCULATE(SUM(Sales[Sales]),
FILTER(Ventas,Ventas[Fecha]>
DATE(CALCULATE(max_date)-1,SELECTEDVALUE(tblCalendar[Month])+1,1) &&
Ventas[Fecha]<-EOMONTH(DATE(max_date,SELECTEDVALUE(tblCalendar[Month]),1),0))
  • Hola, @tfeldt2020

    Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

    Mesa:

    g1.png

    Calendario (una tabla calculada):

    Calendar = CALENDARAUTO()

    g2.png

    Cal (una tabla calculada):

    Calendar = CALENDARAUTO()

    g3.png

    Relación:

    g4.png

    Puede crear una medida como se indica a continuación.

    Result = 
    var y = MAX('Table'[Year])
    var m = MAX('Calendar'[MonthCal])
    var ym = 
    TOPN(
        12,
        CALCULATETABLE(
            DISTINCT(Cal[YearMonth]),
            FILTER(
                ALL(Cal),
                [YearMonth]<y*100+m
            )
        ),
        [YearMonth]
    )
    var re = 
    CALCULATE(
        SUM('Table'[Value]),
        FILTER(
            ALL(Cal),
            [YearMonth] in ym
        )
    )
    return
    re

    Resultado:

    g5.png

    Saludos

    Allan

    Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

1 Reply

  • v-alq-msft's avatar
    v-alq-msft
    Icon for Community Support rankCommunity Support

    Hola, @tfeldt2020

    Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

    Mesa:

    g1.png

    Calendario (una tabla calculada):

    Calendar = CALENDARAUTO()

    g2.png

    Cal (una tabla calculada):

    Calendar = CALENDARAUTO()

    g3.png

    Relación:

    g4.png

    Puede crear una medida como se indica a continuación.

    Result = 
    var y = MAX('Table'[Year])
    var m = MAX('Calendar'[MonthCal])
    var ym = 
    TOPN(
        12,
        CALCULATETABLE(
            DISTINCT(Cal[YearMonth]),
            FILTER(
                ALL(Cal),
                [YearMonth]<y*100+m
            )
        ),
        [YearMonth]
    )
    var re = 
    CALCULATE(
        SUM('Table'[Value]),
        FILTER(
            ALL(Cal),
            [YearMonth] in ym
        )
    )
    return
    re

    Resultado:

    g5.png

    Saludos

    Allan

    Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.