Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
INTERPRARY
Frequent Visitor

Crear una PM no considerado meses sin datos en DAX

Hola comunidad.
Necesito que me ayuden con el siguiente problema.
Necesito la media móvil de los últimos 12 meses, el número de días que demora un pedido en ser importado de forma marítima, el problema se origina en los meses donde no hubieron pedidos.
Estoy usando la siguiente medida:

pbi.jpg


La formula calcula de forma correcta el PM pero cuando tengo meses sin pedidos no me considera los últimos 12 pedidos.

Por ejemplo si tengo 2 meses sin pedidos solo me promedia los últimos 10 meses.
¿Cómo podría obtener los últimos 12 periodos excluyendo los meses vacíos?
Espero que me puedan apoyar como realizar este calculo.
Gracias.

1 ACCEPTED SOLUTION
INTERPRARY
Frequent Visitor

Hola , tenia un inconveniente en la segunda parte ya que no me consideraba los n periodos,

así que lo hice de la siguiente forma:

Dias demora por pedido = 
                IF(Medidas[Dias OC vs Entrega]=0,
                   BLANK(),
                   VAR dias_12m=
                        CALCULATE(Medidas[Dias OC vs Entrega]/
                           COUNTROWS(FILTER(VALUES('Dim_ Calendario'[Año y mes]),
                              NOT(ISBLANK(Medidas[Dias OC vs Entrega])))),
                                   DATESINPERIOD('Dim_ Calendario'[Fecha],
                                    MAX('Dim_ Calendario'[Fecha]),-12,MONTH))
                     VAR pedidos_12m=
                        CALCULATE(Medidas[N° de Compras]/
                           COUNTROWS(FILTER(VALUES('Dim_ Calendario'[Año y mes]),
                              NOT(ISBLANK(Medidas[N° de Compras])))),
                                   DATESINPERIOD('Dim_ Calendario'[Fecha],
                                    MAX('Dim_ Calendario'[Fecha]),-12,MONTH))
                    VAR Resultado = DIVIDE(dias_12m,pedidos_12m)

                    RETURN
                       Resultado
                )
                     

 Gracias de todas formas Polly.

View solution in original post

3 REPLIES 3
INTERPRARY
Frequent Visitor

Hola , tenia un inconveniente en la segunda parte ya que no me consideraba los n periodos,

así que lo hice de la siguiente forma:

Dias demora por pedido = 
                IF(Medidas[Dias OC vs Entrega]=0,
                   BLANK(),
                   VAR dias_12m=
                        CALCULATE(Medidas[Dias OC vs Entrega]/
                           COUNTROWS(FILTER(VALUES('Dim_ Calendario'[Año y mes]),
                              NOT(ISBLANK(Medidas[Dias OC vs Entrega])))),
                                   DATESINPERIOD('Dim_ Calendario'[Fecha],
                                    MAX('Dim_ Calendario'[Fecha]),-12,MONTH))
                     VAR pedidos_12m=
                        CALCULATE(Medidas[N° de Compras]/
                           COUNTROWS(FILTER(VALUES('Dim_ Calendario'[Año y mes]),
                              NOT(ISBLANK(Medidas[N° de Compras])))),
                                   DATESINPERIOD('Dim_ Calendario'[Fecha],
                                    MAX('Dim_ Calendario'[Fecha]),-12,MONTH))
                    VAR Resultado = DIVIDE(dias_12m,pedidos_12m)

                    RETURN
                       Resultado
                )
                     

 Gracias de todas formas Polly.

INTERPRARY
Frequent Visitor

Gracias Polly por tu ayuda aunque en la columna calculada debiera tomar un periodo menos:

ayear before = EDATE('Table'[date],-11)

 

Anonymous
Not applicable

Hi @INTERPRARY ,

I have created a siple sample, please refer to it to see if it helps you.

Create a column first.

ayear before = EDATE('Table'[date],-12)

Then create a measure.

Measure =
VAR _before12 =
    CALCULATE (
        SUM ( 'Table'[value] ),
        DATESINPERIOD ( 'Table'[date], MAX ( 'Table'[date] ), -12, MONTH )
    )
VAR _monthnumber =
    CALCULATE (
        COUNT ( 'Table'[date] ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[date] >= SELECTEDVALUE ( 'Table'[ayear before] )
                && 'Table'[date] <= SELECTEDVALUE ( 'Table'[date] )
        )
    )
RETURN
    _before12 / _monthnumber

vpollymsft_0-1654844235697.png

If I have misunderstood your meaning,please also provide a simple sample with your desired output.

 

Best Regards

Community Support Team _ Polly

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

 

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.