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

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.

Reply
Syndicate_Admin
Administrator
Administrator

Función día anterior (solo de lunes a viernes)

Por lo tanto, mis datos se ven como se muestra a continuación, la columna Fecha está ordenada. y los fines de semana están excluidos.

La medida no está tomando datos del día anterior..

Y el problema ocurre sólo en "Lunes" ! ¿Cómo puedo asegurarme de que el lunes, los datos del viernes se toman como un día anterior?

Screenshot_1.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @Sachy123,

Creo que lo que tienes que juzgar es el día de la cita. Si es lunes, cambia la fecha en -3;Otra fecha de lunes a viernes, cambia la fecha por -1.

Precio de negocio anterior =

VAR BackDays= If ( WEEKDAY ( SELECTEDVALUE ( BusinessDayCalendar[Date] ), 2 ) = 1, -3, -1)

devolución

CALCULATE(SELECTEDVALUE(BusinessDayCalendar[Precio actual]),DATEADD(BusinessDayCalendar[Fecha], BackDays,DAY))

DÍA LABORABLE ( SELECTEDVALUE ( BusinessDayCalendar[Fecha] ), 2 ) = 1 significa que el valor devuelto del lunes es 1 .

A continuación, puede juzgar si return value=1,will shift by -3;Otherwise ,shift by -1.

El efecto es como se muestra:

Ailsa-msft_0-1616636049779.png

Saludos

Equipo de Apoyo a la Comunidad _ Ailsa Tao

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

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

No @Sachy123,

Creo que lo que tienes que juzgar es el día de la cita. Si es lunes, cambia la fecha en -3;Otra fecha de lunes a viernes, cambia la fecha por -1.

Precio de negocio anterior =

VAR BackDays= If ( WEEKDAY ( SELECTEDVALUE ( BusinessDayCalendar[Date] ), 2 ) = 1, -3, -1)

devolución

CALCULATE(SELECTEDVALUE(BusinessDayCalendar[Precio actual]),DATEADD(BusinessDayCalendar[Fecha], BackDays,DAY))

DÍA LABORABLE ( SELECTEDVALUE ( BusinessDayCalendar[Fecha] ), 2 ) = 1 significa que el valor devuelto del lunes es 1 .

A continuación, puede juzgar si return value=1,will shift by -3;Otherwise ,shift by -1.

El efecto es como se muestra:

Ailsa-msft_0-1616636049779.png

Saludos

Equipo de Apoyo a la Comunidad _ Ailsa Tao

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

Syndicate_Admin
Administrator
Administrator

PriorDay Price = 
VAR _WeekDay = WEEKDAY(DATEADD ( BusinessDayCalendar[Date].[Date],-1,DAY),2) 
VAR _BackDays= If (_WeekDay = 7,-3,-1)
RETURN
CALCULATE(
    [Current Price],
    DATEADD(BusinessDayCalendar[Date].[Date],_BackDays,DAY)
    )

No estoy seguro de por qué esto no funciona.. 😕 esto me da el precio actual.. 😞

image.png

Usted no necesita calcular el día de la semana anterior, sólo tiene que ajustar si el día de la semana de la fecha en que está es lunes. También parece que su tabla 'BusinessDayCalendar' puede no estar marcada como la tabla de calendario para el modelo?

¿Qué obtienes cuando usas esto?

PriorDay Price = 
VAR _BackDays= If ( WEEKDAY ( SELECTEDVALUE ( BusinessDayCalendar[Date] ) ) = 2, -3, -1)
RETURN
CALCULATE(
    [Current Price],
    DATEADD(BusinessDayCalendar[Date],_BackDays,DAY)
    )
Syndicate_Admin
Administrator
Administrator

@Sachy123

Dado que PREVIOUSDAY es sólo una abreviatura de DATEADD se podría cambiar a algo como esto.

Prior Day = 
VAR _Days = IF ( WEEKDAY ( SELECTEDVALUE ( Dates[Date] ) ) = 2, -3, -1)
RETURN
CALCULATE(
    [Sum],
    DATEADD(Dates[Date],_Days,DAY)
    )

Los lunes cambia la fecha en -3 en lugar de -1 dándonos la cantidad del viernes.

jdbuchanan71_0-1616447984186.png

Hay @jdbuchanan71@Ailsa-msft

Estoy atascado con un tipo similar de solicitud .

El requisito es que los usuarios seleccionen el número de días que querrían mirar hacia atrás sus datos de una fecha seleccionada.

Por ejemplo, si seleccionan 10 días, entonces el informe debe mostrar los datos de los últimos 10 días hábiles en lugar de los días calendario.

He probado esto

anterior =
var selecteddate = SELECTEDVALUE('Fecha FECHA'[EFFECTIVE_DATE])
var days = SELECTEDVALUE('Number of Days'[NoofDays]) --[ este es un parámetro que está disponible para que el usuario seleccione el nof de días que desea mirar hacia atrás desde la fecha seleccionada ]
Var lastday = DATE(YEAR(selecteddate),MONTH(selecteddate),DAY(selecteddate)- days)
var d = WEEKDAY(lastday,2)
var pwd =
IF ((d = 6),days+2 , IF((d = 7),days+3,days+1))
devolver pwd

esto funciona por sólo 1 semana, si el usuario selecciona el número de días > 7 , entonces tendría que añadir 2 días de fin de semana, que soy incapaz de conseguir este trabajo .

¿Sugeriría alguna manera más fácil de escribir un DAX?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

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.