Ventas de las últimas 8 semanas que abarcan el año anterior

Un usuario Pregunto ✅

kunleoyerinde

Queridos todos,

Estoy luchando con un informe que da el total de ventas de las últimas 8 semanas según el año y la semana seleccionados. Por ejemplo, si seleccionamos la semana 2 de 2020, las ventas de las últimas 8 semanas se extenderán hasta 2019. He revisado muchas publicaciones, pero todavía no se está abordando mi problema. Tengo una columna por semana en mi calendario. Mi número de semana termina en 52 de cada año, excepto el año bisiesto.

Ayudar amablemente.

Rebanadora.PNG

Salida.PNGcalendar.PNG

PaulDBrown

@kunleoyerinde

EDITAR: He agregado comentarios a continuación que muestran cómo seguir este método pero sin crear una tabla YearWeek

Una forma de hacerlo es crear una tabla YearWeek, vinculada a su tabla de calendario a través de un campo YearWeek común (valores únicos en la tabla YearWeek), incluida una columna de índice (la he clasificado desde la más reciente hacia atrás, por lo que el mes de hoy es clasificado 1, último mes 2 …. (Luego, usa esta columna de índice en tus cálculos)

YearWeek Table.JPG

y el modelo se ve así:2020-02-27.png

Luego puede usar los campos de esta tabla YearWeek en medidas, segmentaciones, filtros visuales …

Para calcular las últimas 8 semanas en función de las selecciones en las segmentaciones:

Prev. 8 week Forecast = CALCULATE([Sum Forecast];
                        FILTER(ALL('Year Week Table');
                        'Year Week Table'[YW Index]< SELECTEDVALUE('Year Week Table'[YW Index])+8
                        &&
                        'Year Week Table'[YW Index] >= SELECTEDVALUE('Year Week Table'[YW Index])))

Básicamente, está utilizando el índice para establecer los límites de 8 semanas (8 semanas antes sería el índice YW + 7)

Y este método te da esto:

result.JPG

o

resultado 2.JPG

Espero que esto ayude.

EDITAR: puede seguir este método sin tener que crear una nueva tabla. Todo lo que necesita es el número YearWeek y el índice YearWeek. Puede incluirlos con columnas calculadas en su tabla de calendario usando:

YearWeek = Calendar [Year] * 100 + Calendar [Month]
YearWeek Index = RANKX('Calendar'; 'Calendar'[YearWeek];;DESC;Dense)

PaulDBrown

@kunleoyerinde

EDITAR: He agregado comentarios a continuación que muestran cómo seguir este método pero sin crear una tabla YearWeek

Una forma de hacerlo es crear una tabla YearWeek, vinculada a su tabla de calendario a través de un campo YearWeek común (valores únicos en la tabla YearWeek), incluida una columna de índice (la he clasificado desde la más reciente hacia atrás, por lo que el mes de hoy es clasificado 1, último mes 2 …. (Luego, usa esta columna de índice en tus cálculos)

YearWeek Table.JPG

y el modelo se ve así:2020-02-27.png

Luego puede usar los campos de esta tabla YearWeek en medidas, segmentaciones, filtros visuales …

Para calcular las últimas 8 semanas en función de las selecciones en las segmentaciones:

Prev. 8 week Forecast = CALCULATE([Sum Forecast];
                        FILTER(ALL('Year Week Table');
                        'Year Week Table'[YW Index]< SELECTEDVALUE('Year Week Table'[YW Index])+8
                        &&
                        'Year Week Table'[YW Index] >= SELECTEDVALUE('Year Week Table'[YW Index])))

Básicamente, está utilizando el índice para establecer los límites de 8 semanas (8 semanas antes sería el índice YW + 7)

Y este método te da esto:

result.JPG

o

resultado 2.JPG

Espero que esto ayude.

EDITAR: puede seguir este método sin tener que crear una nueva tabla. Todo lo que necesita es el número YearWeek y el índice YearWeek. Puede incluirlos con columnas calculadas en su tabla de calendario usando:

YearWeek = Calendar [Year] * 100 + Calendar [Month]
YearWeek Index = RANKX('Calendar'; 'Calendar'[YearWeek];;DESC;Dense)

Hola @kunleoyerinde,

Debe combinar «año» y «semana» en una nueva columna y luego usar rankx para ordenar la columna.

Pruebe DAX de esta manera:

sum_Sales_last_8_weeks =
CALCULAR (
SUMA ( Ventas[Sales] ),
FILTRAR (
Ventas,
Ventas[Date] <= MAX ( DimDate[Date] )
&& Ventas[Date]
> MAXX (
FILTRAR ( DimDate, DimDate[rank] = VALOR SELECCIONADO ( DimDate[rank] )8 ),
DimDate[Date]
)
)

Para obtener más detalles, consulte la pbix.

Atentamente,
Liang
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

kunleoyerinde

En respuesta a V-lianl-msft

Hola @ V-lianl-msft,

Muchas gracias, esto debería funcionar, sin embargo, SELECTEDVALUE en el DAX hace referencia a la semana clasificada y no a la semana del país, que es 1-52.

Aquí es donde realmente necesito ayuda, quiero que el usuario vea solo las semanas del país 1-52 de cualquier año en la cortadora de informes y pueda obtener, por ejemplo, las ventas de las últimas 8 semanas incluso si se derrama al año anterior.

¿Cómo se puede escribir DAX de manera que la semana clasificada pueda hacer referencia a la semana del país seleccionado o de cualquier otra forma para lograrlo?

Saludos,

Kunle

Amitchandak

Verifique este archivo, he creado las últimas 12 semanas de ventas usando Rank. De la misma manera que debería poder conseguir otros.

https://www.dropbox.com/s/d9898a48e76wmvl/sales_analytics_weekWise.pbix?dl=0

kunleoyerinde

En respuesta a Amitchandak

@amitchandak Gracias por compartir, sin embargo, mi informe es dinámico, lo que significa que funciona mediante la selección en una cortadora y ahí es donde está mi desafío. La semana en la cortadora es de 1 a 52, que también puede representar cualquier año. Estoy buscando una fórmula que funcione en función de cualquier selección realizada.

Amitchandak

En respuesta a kunleoyerinde

Siempre que toda la información relacionada con la fecha esté en la tabla Fecha. La fórmula debe responder a la fecha en la parte superior o a las cosas relacionadas con la fecha en la parte superior.

kunleoyerinde

En respuesta a Amitchandak

Gracias @amitchandak, pero esa es la asistencia que necesito: una fórmula DAX que se puede abordar mediante solicitud. Supongo que un bucle como en la programación funcionará, pero no sé cómo hacerlo ni de ninguna otra manera.

Gracias.

Amitchandak

En respuesta a kunleoyerinde

¿Qué quiere decir con programación en bucle?

Si necesita las últimas 8 semanas, 13 semanas o cualquier número de la semana. Necesitas tener una tabla de fechas. Necesitas definir tu semana. Cree una clasificación en la fecha de inicio de la semana para que pueda funcionar a lo largo de los años.

Last 13 week Sales = CALCULATE(SUM(Sales[Net Sales]),FILTER(all('Date'),'Date'[Week Rank]>=max('Date'[Week Rank])-13 && 'Date'[Week Rank]<=max('Date'[Week Rank])))

kunleoyerinde

En respuesta a Amitchandak

@amitchandak Gracias de nuevo. Sin embargo, como dije, hay una selección de segmentaciones para la semana (1-52). La fórmula interna está funcionando según el rango de la semana. Si se selecciona una semana en particular como punto de partida, ¿cómo se relaciona con la semana clasificada en la fórmula DAX? La fórmula de DAX esperada debe basarse en la semana seleccionada de la cortadora. ¿Puede ayudarme con eso o todavía no lo tengo claro?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *