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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Restablecimiento del promedio diario móvil al comienzo de cada mes

Hola a todos

A continuación se muestra lo que estoy tratando de lograr en Power BI:

kc__1-1721811100489.png

En esencia, necesito ser capaz de crear un promedio móvil diario que se reinicia al comienzo de cada nuevo mes....

¡Gracias de antemano!

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Hola @kc_

¿Está utilizando una tabla de fechas en su modelo? Entonces esto ayudará

Avg. Jobs Per Day = 
VAR LastCurrentDate =
    MAX ( 'DIM Date'[Date] )
VAR Period =
    DATESBETWEEN ( 'DIM Date'[Date], EOMONTH(LastCurrentDate, -1) + 1, LastCurrentDate)
VAR TotalJobs =
    CALCULATE (
        SUM(Jobs[Jobs Completed per Day]),
        Period
    )
VAR NumOfDays =
    COUNTROWS(Period)
VAR Result =
    DIVIDE(TotalJobs, NumOfDays)
RETURN
    Result

Joe_Barry_0-1721814006461.png


Joe

@Joe_Barry espero que pueda proporcionar más ayuda...

Como se mencionó anteriormente, el DAX que proporcionó funciona, consulte la tabla a continuación:

kc__0-1721905752682.png

Sin embargo, para cada fecha se le asigna un día hábil (dentro del conjunto de datos) y cuando incorporo esto dentro de la tabla ocurre lo siguiente:

kc__1-1721905838573.png

En esencia busco lograr algo similar a lo siguiente:

kc__3-1721905997831.png

¿Eres capaz de ayudar....

Muchas gracias

Hola @kc_

Por favor, intente que no haya días de estauración ni domingos

Avg. Jobs Per Day No Weekends = 
VAR LastCurrentDate =
    MAX ( 'DIM Date'[Date] )
VAR Period =
    DATESBETWEEN ( 'DIM Date'[Date], EOMONTH(LastCurrentDate, -1) + 1, LastCurrentDate)
VAR WeekdaysPeriod =
    FILTER (
        Period,
        WEEKDAY ( 'DIM Date'[Date], 2 ) < 6
    )
VAR TotalJobs =
    CALCULATE (
        SUM(Jobs[Jobs Completed per Day]),
        WeekdaysPeriod
    )
VAR NumOfDays =
    COUNTROWS(WeekdaysPeriod)
VAR Result =
    DIVIDE(TotalJobs, NumOfDays)
RETURN
    Result

Joe_Barry_0-1721917646007.png



Este excluirá los días en los que no se produzcan trabajos

Avg. Jobs Per Day - Leave out non worked days= 
VAR LastCurrentDate =
    MAX ( 'DIM Date'[Date] )
VAR Period =
    DATESBETWEEN ( 'DIM Date'[Date], EOMONTH(LastCurrentDate, -1) + 1, LastCurrentDate)
VAR NonZeroJobsPeriod =
    FILTER (
        Period,
        CALCULATE ( SUM ( Jobs[Jobs Completed per Day] ) ) > 0
    )
VAR TotalJobs =
    CALCULATE (
        SUM(Jobs[Jobs Completed per Day]),
        NonZeroJobsPeriod
    )
VAR NumOfDays =
    COUNTROWS(NonZeroJobsPeriod)
VAR Result =
    DIVIDE(TotalJobs, NumOfDays)
RETURN
    Result

Joe_Barry_1-1721917719893.png

Joe

Gracias por este @Joe_Barry , sin embargo, algo no me está funcionando... tal vez pueda enviar su archivo PBIX en su lugar.

Además, es fundamental que se muestren los números de los días laborables en lugar de los días reales de la semana, ya que esto es lo que informa la empresa.

A continuación se muestra una captura de pantalla de lo que estoy tratando de lograr.

kc__0-1721986209155.png

Gracias por esto Joe, sí, tengo una tabla de fechas, sin embargo... Véase a continuación:

kc__0-1721827000301.png

El promedio de empleos por día en 2.01.2024 debe ser 86 y no 43. Solo necesito que se calcule un promedio si un trabajo se ha completado en un día determinado. También para contextualizar, los trabajos solo se completan de lunes a viernes.

Por lo tanto, la solución alternativa: en lugar de señalar la tabla de fechas, señalo el campo de fecha de finalización de la tabla de datos de origen, al hacerlo, obtengo las cifras esperadas.

kc__1-1721827509058.png

¡Esto ha funcionado de maravilla! Muchas gracias!!!

Syndicate_Admin
Administrator
Administrator

@kc_ ,Cree una nueva columna calculada usando la siguiente medida

Media móvil =
VAR CurrentDate = 'Tabla (2)'[Fecha]
VAR MesActual = MES(Fecha actual)
VAR Año actual = AÑO(Fecha actual)
DEVOLUCIÓN
CALCULAR(
PROMEDIO('Tabla (2)'[Trabajo completado por día]),
FILTRO(
«Cuadro (2)»,
AÑO('Tabla (2)'[Fecha]) = Año actual &&
MES('Tabla (2)'[Fecha]) = MesActual &&
'Tabla (2)'[Fecha] <= FechaActual
)
)
Conexión de PBIX con la solución

¡Gracias!

Gracias Bhanu, sin embargo, ¿te importaría volver a adjuntar el archivo PBIX, por favor...

kc__0-1721814208450.png

Comprobar la tabla yendo al modelo no visual

Helpful resources

Announcements
ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors