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

Ligera modificación a los cálculos de días, meses y años anteriores

El origen es Direct Query SQL Server

Estoy tratando de determinar el día anterior (mes, año) contar, pero sólo hasta el punto actual en el tiempo.

Objetivo final: IsToday = 1, IsPreviousDay = 1, IsCurrentMonth = 1, IsLastMonth = 1
... pero sólo hasta este punto en el tiempo (NOW()).

ejemplo
El total del día anterior es de 75
Día anterior Total hasta NOW() is33

pDtH significa "Día a Hora Anterior

El fragmento de código siguiente funciona, pero devuelve toda la hora. Lo necesito para parar en el minuto actual... Espero que tenga sentido.

pDtH =
SI. EAGER (
AÑO ( CFS[Fecha de recepción de CFS] ) = AÑO ( HOY ()
&& MES ( CFS[Fecha de recepción de CFS] ) = MES ( HOY ()
& &DAY ( CFS[Fecha de recepción de CFS] )
<= DÍA ( HOY () - 1
&& HOUR ( CFS[Tiempo cfs recibido] ) <= HORA ( AHORA () ,
1,
0
)


El código a continuación es donde estoy necesitando ayuda.

pDtH =
SI. EAGER (
AÑO ( CFS[Fecha en que cfs recibió] ) = AÑO ( HOY () )
&& MES ( CFS[Fecha de recepción de CFS] ) = MES ( HOY () )
& &DAY ( CFS[Fecha de recepción de CFS] )
<= DÍA ( HOY () ) - 1
&& HOUR ( CFS[Tiempo recibido CFS] ) <= HORA ( AHORA () )

&& MINUTE ( CFS[Tiempo recibido CFS] ) <= MINUTE( ( NOW() )), <--- Causa problemas

1,
0
)

Tal vez he estado mirando esto demasiado tiempo para ver lo obvio. 🙂

1 ACCEPTED SOLUTION

Para lo que podría valer la pena, aquí hay una versión de trabajo hecha en Microsft SQL:

DESDE [base de datos]. [dbo]. [tabla] t
DONDE AÑO([t].[ DateTimeReceived]) = AÑO (GETDATE())

Y DATEPART(MES, [t].[ DateTimeReceived]) = DATEPART(MONTH, GETDATE()) --Obtiene el mes actual
Y DATEPART(DAY, [t].[ DateTimeReceived]) = DATEPART(DAY, GETDATE()) -1 --Obtiene el día anterior
Y CONVERTIR(VARCHAR, [t].[ DateTimeReceived], 114) <= CONVERT(VARCHAR, GETDATE(), 114) --Obtiene la marca de tiempo actual

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@JPBTech ¿Puedes hacer esto?

pDtH = IF(CFS[Date CFS Received] <= NOW() - 1,1,0)

Para lo que podría valer la pena, aquí hay una versión de trabajo hecha en Microsft SQL:

DESDE [base de datos]. [dbo]. [tabla] t
DONDE AÑO([t].[ DateTimeReceived]) = AÑO (GETDATE())

Y DATEPART(MES, [t].[ DateTimeReceived]) = DATEPART(MONTH, GETDATE()) --Obtiene el mes actual
Y DATEPART(DAY, [t].[ DateTimeReceived]) = DATEPART(DAY, GETDATE()) -1 --Obtiene el día anterior
Y CONVERTIR(VARCHAR, [t].[ DateTimeReceived], 114) <= CONVERT(VARCHAR, GETDATE(), 114) --Obtiene la marca de tiempo actual

HI, @Greg_Deckler,gracias por tomarse el tiempo para responder.

La implementación de ese fragmento de código devuelve el valor de 1 para todas las fechas "a continuación" ahora.

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.