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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

CALCULATE, SUMX con un FILTRO

Tengo una segmentación de datos de fecha y necesito calcular la suma de las ventas en función de la fecha de finalización en la segmentación de datos.

Quiero calcular las ventas para la semana que termina el viernes anterior a la fecha de finalización en la segmentación de datos.

Calculé la fecha de inicio y finalización de la semana en la que quiero sumar las ventas:

FECHA INICIO Semana actual - 1

FECHA FIN Semana actual - 1

AHORA, cuando utilizo esas fechas para sumar las ventas, obtengo 0 en todos los casos. No puedo entender lo que estoy haciendo mal:

VENTAS Semana actual - 1 =
CALCULAR(
SUMX(Report_Efficiency, Report_Efficiency[FinHours]),
FILTER(Report_Efficiency, Report_Efficiency[DATE] >= Report_Efficiency[DATE START Current Week - 1] && Report_Efficiency[DATE] <= Report_Efficiency[DATE END Current Week - 1])
)
El grano de la tabla es Fecha, empleado.
Ayuda y gracias!
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Me di cuenta de esto.

Para calcular la fecha de inicio, utilicé lo siguiente:

FECHA INICIO Semana actual - 1 =
/* Obtener fecha de finalización en la segmentación de datos */
VAR sEndDate = MAX( 'FECHA dim'[FECHA] )
/* Obtener el día de la semana de la fecha, el lunes es 1 */
VAR vEndDateDay = WEEKDAY( sEndDate, 2 )
/* Calcular cuántos días añadir para llevar al viernes - Podría haber descubierto cuántos para llegar al sábado anterior que es la fecha de inicio (las semanas son de sábado a viernes), pero lo hice de esta manera, ya que también necesito calcular lo mismo para la semana - 2 (semana anterior). No me apetecía, solo usaba declaraciones IF. Funciona. */
VAR vDateAddition = IF(vEndDateDay = 1, 4, IF(vEndDateDay = 2, 3, IF(vEndDateDay = 3, 2, IF(vEndDateDay = 4, 1, IF(vEndDateDay = 6, 6, IF (vEndDateDay = 7, 5, 0)))))))
/* Agregue vDateAddition para llegar al viernes siguiente a la fecha de finalización, reste 7 para llegar al viernes anterior y reste 6 para llegar al sábado anterior al viernes anterior. Como dije, en el paso anterior, podría haber descubierto cuántos restar para llegar al viernes anterior en lugar del viernes siguiente, eliminando la necesidad de restar 7. */
VAR WeekEndingMinus1 = sEndDate + vDateAddition -7 - 6

devolución
Fin de semanaMinus1

Para calcular las ventas para las fechas durante la semana, utilicé lo siguiente:

VENTAS Semana actual - 1 =
CALCULAR(
SUMX(TABLA, TABLA[Ventas]),
FILTRO(
'TABLA', TABLA[FECHA] >= MAXX(TABLA,TABLA[FECHA INICIO Semana actual - 1]) &&
TABLA[FECHA] <= MAXX(TABLA,TABLA[FECHA FIN Semana actual - 1])
)
)

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

Me di cuenta de esto.

Para calcular la fecha de inicio, utilicé lo siguiente:

FECHA INICIO Semana actual - 1 =
/* Obtener fecha de finalización en la segmentación de datos */
VAR sEndDate = MAX( 'FECHA dim'[FECHA] )
/* Obtener el día de la semana de la fecha, el lunes es 1 */
VAR vEndDateDay = WEEKDAY( sEndDate, 2 )
/* Calcular cuántos días añadir para llevar al viernes - Podría haber descubierto cuántos para llegar al sábado anterior que es la fecha de inicio (las semanas son de sábado a viernes), pero lo hice de esta manera, ya que también necesito calcular lo mismo para la semana - 2 (semana anterior). No me apetecía, solo usaba declaraciones IF. Funciona. */
VAR vDateAddition = IF(vEndDateDay = 1, 4, IF(vEndDateDay = 2, 3, IF(vEndDateDay = 3, 2, IF(vEndDateDay = 4, 1, IF(vEndDateDay = 6, 6, IF (vEndDateDay = 7, 5, 0)))))))
/* Agregue vDateAddition para llegar al viernes siguiente a la fecha de finalización, reste 7 para llegar al viernes anterior y reste 6 para llegar al sábado anterior al viernes anterior. Como dije, en el paso anterior, podría haber descubierto cuántos restar para llegar al viernes anterior en lugar del viernes siguiente, eliminando la necesidad de restar 7. */
VAR WeekEndingMinus1 = sEndDate + vDateAddition -7 - 6

devolución
Fin de semanaMinus1

Para calcular las ventas para las fechas durante la semana, utilicé lo siguiente:

VENTAS Semana actual - 1 =
CALCULAR(
SUMX(TABLA, TABLA[Ventas]),
FILTRO(
'TABLA', TABLA[FECHA] >= MAXX(TABLA,TABLA[FECHA INICIO Semana actual - 1]) &&
TABLA[FECHA] <= MAXX(TABLA,TABLA[FECHA FIN Semana actual - 1])
)
)

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors