Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Soy nuevo en el PowerBI y strugling para calcular rodar 5 días promedio.
La fecha de venta es solo días laborables (sin fines de semana ni días festivos) y la medida rápida no funcionará.
Fecha (A) | Día de la semana (B) | Ventas (C) | Media móvil de 5 días | fórmula que quiero crear (Excluir fines de semana y festivos) |
8/31/2020 | Mi | $ 1,501 | $ 1,448 | PROMEDIO (C2: C6) |
8/28/2020 | Vie | $ 2,350 | $ 2,906 | PROMEDIO (C3: C7) |
8/27/2020 | Jue | $ 2,587 | $ 2,869 | PROMEDIO (C4: C8) |
8/26/2020 | Mié | $ 589 | $ 2,549 | PROMEDIO (C5: C9) |
8/25/2020 | Mar | $ 214 | $ 3,982 | |
8/24/2020 | Mi | $ 8,791 | $ 12,933 | |
8/21/2020 | Vie | $ 2,164 | $ 12,144 | |
8/20/2020 | Jue | $ 986 | $ 14,442 | |
8/19/2020 | Mié | $ 7,754 | $ 15,288 | |
8/18/2020 | Mar | $ 44,968 | $ 14,931 | |
8/17/2020 | Mi | $ 4,846 | $ 6,206 | |
8/14/2020 | Vie | $ 13,657 | $ 5,555 |
Podría usar a continuación si no hay vacaciones para calcular los últimos 5 días de ventas totales.
Solved! Go to Solution.
@m_e_1203 - Ah, si agrega el tipo de ventas o la ubicación que significa que está seleccionando en una segmentación de datos, entonces necesitará la forma de medida de esto:
5 Day Average_Date Measure =
VAR __Max = MAX([Work Date cont Rank])
RETURN
AVERAGEX(
FILTER(
ALLSELECTED('date'),
[Work Date cont Rank]>=__Max-4 &&
[Work Date cont Rank]<=__Max
),
[Total Sales]
)
@m_e_1203, tengo blog para esto. Necesita crear un rango solo en el día laborable. A continuación, puede viajar a través de los días laborables
Work Day = if(WEEKDAY([Date],2)>=6,0,1)
Work Date = if(WEEKDAY([Date],2)>=6,BLANK(),[Date])
Work Date Cont = if([Work Day]=0,maxx(FILTER('Date',[Date]<EARLIER([Date]) && [Work Day]<> EARLIER([Work Day]) ),[Date]),[Date])
Work Date cont Rank = RANKX(ALL('Date'),[Work Date Cont],,ASC,Dense)
Ejemplo
Plus 10 Days = var _max =maxx(ALLSELECTED('Date'),'Date'[Work Date cont Rank])
return
CALCULATE(Min('Date'[Date]),filter(ALL('Date'),'Date'[Work Date Rank] =_max+10))
Rolling Last 10 Days = CALCULATE(SUM(Sales[Net Sales]),FILTER(all('Date'),'Date'[Work Date cont Rank]>=min('Date'[Work Date cont Rank])-10
&& 'Date'[Work Date cont Rank]<=max('Date'[Work Date cont Rank])))
recomienda
Gracias por el mensaje.
Pude hacer la primera parte. Sin embargo, no pude obtener ningún número desde abajo, Todos los resultados estaban en blanco.
Plus 10 Days = var _max =maxx(ALLSELECTED('Date'),'Date'[Work Date cont Rank])
return
CALCULATE(Min('Date'[Date]),filter(ALL('Date'),'Date'[Work Date cont Rank] =_max+10))
Y esto me dio la misma cantidad de ventas que el total diario.
Rolling Last 10 Days = CALCULATE(SUM(Sales[SALES]),FILTER(all('Date'),'Date'[Work Date cont Rank]>=min('Date'[Work Date cont Rank])-10
&& 'Date'[Work Date cont Rank]<=max('Date'[Work Date cont Rank])))
¿Algún consejo adicional?
Gracias.
@m_e_1203 - OK, resulta que esto no es tan complicado. 2 columnas. Vea a continuación. PBIX se adjunta debajo de la tabla (30).
Column = COUNTROWS(FILTER('Table (30)',[Date (A)]<=EARLIER([Date (A)])))
5 Day Average = AVERAGEX(FILTER('Table (30)',[Column]>=EARLIER([Column])-4 && [Column]<=EARLIER([Column])),[Sales (C)])
@Greg_Deckler Gracias por su respuesta.
Estoy recibiendo un error. ¿Qué significa este error?
Columna se agrega en la tabla Datos, 5 Promedio de día se agrega en la tabla Ventas.
Tabla de ventas contiene varias líneas para ventas de un solo día. (Ventas por tipos de negocio.)
Column = COUNTROWS(FILTER('Date', 'Date'[Date] <=EARLIER('Date'[Date]) && 'Date'[If work day] = 1))
5 Day Average = AVERAGEX(FILTER('Date', 'Date'[Column] >= EARLIER ('Date'[Column]) -4 && 'Date'[Column]<=EARLIER('Date'[Column])),[Total Sales])
Error: EARLIER/EARLIEST hace referencia a un contexto de fila anterior que no existe.
¡Gracias de nuevo!
@m_e_1203 - Mi fórmula era para una columna, parece que estabas tratando de usarla en una medida. ¿Desea columna o medida?
@Greg_Deckler escribió:@m_e_1203 - Mi fórmula era para una columna, parece que estabas tratando de usarla en una medida. ¿Desea columna o medida?
Estoy de acuerdo con cualquiera de los dos, siempre y cuando pueda crear un gráfico. Cambié el nombre "Columna" a "Work Date Cont Rank".
5 Day Average = AVERAGEX(FILTER('Date', 'Date'[Work Date cont Rank] >= EARLIER ([Work Date cont Rank]) -4 && 'Date'[Work Date cont Rank] <= EARLIER([Work Date cont Rank]), [Total Sales]))
El error es "Se pasaron demasiados argumentos a la función FILTER. El número máximo de argumentos para la función es 2."
Gracias de nuevo por su ayuda.
@m_e_1203 - No estoy seguro de por qué mi archivo no apareció. Tabla (30).
5 Day Average =
AVERAGEX(
FILTER(
'Date',
'Date'[Work Date cont Rank] >= EARLIER ([Work Date cont Rank]) -4 &&
'Date'[Work Date cont Rank] <= EARLIER([Work Date cont Rank])
),
[Total Sales]
)
Tienes un paren fuera de lugar.
¡¡Funcionó!! Realmente apreto esto.
5 Day Average_Date =
AVERAGEX(
FILTER(
'Date',
'Date'[Work Date cont Rank] >= EARLIER ([Work Date cont Rank]) -4 &&
'Date'[Work Date cont Rank] <= EARLIER([Work Date cont Rank])
),
[Total Sales]
)
Pero... Un problema, sólo se calculó para las ventas totales. Cuando agredo Tipo de negocio o Ubicación de ventas, muestra el mismo total.
¿Eliminar filtros?
5 Day AVG BusType =
CALCULATE(SUM('Date'[5 Day Average_Date]), REMOVEFILTERS(Business_Type[Business Type Group]))
Gracias de nuevo.
@m_e_1203 - Ah, si agrega el tipo de ventas o la ubicación que significa que está seleccionando en una segmentación de datos, entonces necesitará la forma de medida de esto:
5 Day Average_Date Measure =
VAR __Max = MAX([Work Date cont Rank])
RETURN
AVERAGEX(
FILTER(
ALLSELECTED('date'),
[Work Date cont Rank]>=__Max-4 &&
[Work Date cont Rank]<=__Max
),
[Total Sales]
)
¡¡Trabajado!!
He estado probando esto durante las últimas 2 semanas. Gran ayuda!
¡Muchas gracias!
@m_e_1203 ¡¡Yay!! 🙂
Cuando agredo Row a la tabla de ventas, esto es lo que muestra.
Row No = COUNTROWS(FILTER(Sales, Sales[EODDATE (Date)] <= EARLIER(Sales[EODDATE (Date)])))
Fecha: RowNo
9/3: 63976
9/2: 63708
9/1: 63443
8/31: 63157
Row No = COUNTROWS(FILTER('Date', 'Date'[Date] <= EARLIER(Sales[EODDATE (Date)])))
Si agrego esto en la tabla Sales con la fecha de la tabla Date, se muestra así.
Se ha omitido el número de fila del sábado y el domingo...
Fecha: RowNo
9/3: 612
9/2: 611
9/1: 610
8/31: 609
8/28: 606
@m_e_1203 - Parece que necesitaría un inverso Días de Trabajo Netos para calcular el día de trabajo hace 5 días de trabajo y luego el resto sería pastel. https://community.powerbi.com/t5/Quick-Measures-Gallery/Net-Work-Days/m-p/367362#M109
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |