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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Media móvil de 7 días excluyendo días no trabajados

Hola, estoy tratando de crear un promedio móvil de 7 días mientras excluyo los días en los que no trabajamos. Estoy usando la siguiente expresión DAX:

7 Day Rolling Average = 
Calculate(Sum('Daily Production'[Lbs]),DATESINPERIOD('Daily Production'[Date_1], LASTDATE('Daily Production'[Date_1]),7,DAY))
/
Calculate(DISTINCTCOUNT('Daily Production'[Date_1]),DATESINPERIOD('Daily Production'[Date_1],LASTDATE('Daily Production'[Date_1]),7,DAY))

Captura de pantalla de datos:

JWPowder_0-1686838549720.png

Como puede ver, el promedio móvil también tiene en cuenta los campos en blanco. Necesito ayuda para filtrar esta expresión para excluir filas donde no hay nada en la columna "Trabajado".

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola @amitchandak , pude modificar otra expresión que encontré en el foro y obtuve el resultado que estaba buscando.

7 Day rolling Average = 
var __workingDays = 7
var __currentDay = MAX( 'Daily Production'[Date Worked] )
var __daysToAvgOver =
	TOPN(__workingDays,
		CALCULATETABLE(
			'Daily Production',
			'Daily Production'[Date Worked] < __currentDay,
			'Daily Production'[Worked] = 1,
			ALL( 'Daily Production' )
		),
		'Daily Production'[Date Worked],
		DESC
	)
var __avg =
	DIVIDE(
		CALCULATE(
			SUM( 'Daily Production'[Lbs] ),
			__daysToAvgOver
		),
		COUNTROWS( __daysToAvgOver )
	)
return
	__avg

JWPowder_0-1686934373625.png

Syndicate_Admin
Administrator
Administrator

Hola @amitchandak , no tengo una columna para empleado. Creé una columna de rango usando la siguiente expresión:

Date Rank = 

var _rank=RANKX(FILTER('Daily Production',[Date Worked]<>BLANK()),[Date Worked],,ASC,Dense)

return

IF('Daily Production'[Worked]=BLANK(),BLANK(),_rank)

JWPowder_0-1686919211061.png

He modificado la expresión que usted sugirió:

7 Day rolling Average = 
CALCULATE(Averagex(Values('Daily Production'[Date Worked]) ,calculate(Sum('Daily Production'[Lbs]))), 
WINDOW(-6,REL, 0, REL, ALLSELECTED('Daily Production'[Date Worked]),ORDERBY([Date Worked],asc)))

Resultado:

JWPowder_1-1686919445282.png

Syndicate_Admin
Administrator
Administrator

@JWPowder , Suponga que tiene empleado y bandera de trabajo.

Primero crea un rango

Rank WD = if([Trabajado] <> Blank(), Rankx(filter('Daily Production', [Employee] = before([Employee]) && [Worked] =1), [Date]), blank())

Crear una medida como

Rolling 7 WD = CALCULATE(Averagex(Values('Daily Production'[Date]) ,calculate(Sum('Daily Production'[Lbs]))), WINDOW(-6,REL, 0, REL, ALLSELECTED('Daily Production'[Date] , 'Daily Production'[Employee] ),ORDERBY([Date],asc),,PARTITIONBY('Daily Production'[Employee]))

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.