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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Días de descuento de una columna de fecha específica con días de red

¡Hola, chicos!

Por favor, necesito mucho esta respuesta.

Tengo una columna de Power BI "Fecha" y necesito descuento 7 días a partir de esta fecha específica para despegar sábados, domingos y otras fechas de días festivos en una tabla de días festivos.

Ejemplo:
Columna de fecha (días de descuento en la fórmula) Dar como resultado una nueva columna de fecha
26/06/2024 -7 Días (días de red) = 18/06/2024

¿Es posible?

1 ACCEPTED SOLUTION

¡¡Hola!!

Este video de Youtube me ayuda mucho:

https://youtu.be/RD996KUYM8Q?list=PLzPjvUUXZT62h53QBORroNIyU8TyQILxM

Tilte del video de Youtube:

"Cómo agregar días hábiles en cualquier fecha en Power BI en hindi | Alternativa a WORKDAY en Power BI"

View solution in original post

19 REPLIES 19
Syndicate_Admin
Administrator
Administrator

Hola @wendereis , @mark_endicott , @rajendraongole1 y @aduguid han contribuido con orientación y ofrecido soluciones a su pregunta. Tenga en cuenta lo siguiente al hacer una pregunta, ya que este es el decoro al hacer una pregunta.

Proporcione el archivo de Power BI Desktop de trabajo en curso (con información confidencial quitada) que cubra el problema o la pregunta por completo en un formato utilizable (no como una captura de pantalla). Puede cargar el archivo PBIX en un servicio de almacenamiento en la nube como OneDrive, Google Drive, Dropbox o en un repositorio de Github y, a continuación, compartir la dirección URL de un archivo.

https://community.fabric.microsoft.com/t5/Community-Blog/How-to-provide-sample-data-in-the-Power-BI-...

Muestre el resultado esperado en función de los datos de muestra que proporcionó.

https://community.fabric.microsoft.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447...

Esto permite a los miembros del foro evaluar el estado del modelo, la capa de informe, las relaciones y cualquier DAX aplicado.

Syndicate_Admin
Administrator
Administrator

@wendereis - El error parece deberse a que está creando una medida, en lugar de una columna.

El código que le he dado funcionará en una columna, pero quiero hacer un cambio que tenga en cuenta varios días festivos consecutivos.

VAR CurrentDate = 'Table (8)'[Date]
VAR NumberOfDaysToSubtract = 3
VAR weekend_adjustment =
    SWITCH ( WEEKDAY ( 'Table (8)'[Date], 2 ), 1, 2, 2, 2, 3, 2, 0 )
VAR minus_weekends = ( CurrentDate - NumberOfDaysToSubtract ) - weekend_adjustment
VAR holiday_adjustment = CALCULATE( min('Table (8)'[Date] ), REMOVEFILTERS( 'Table (8)'[Date]),  'Table (9)'[holiday] > minus_weekends )
VAR calc =
    IF ( minus_weekends IN VALUES ( 'Table (9)'[holiday] ), holiday_adjustment, minus_weekends)
RETURN
    calc

Esto ahora le dará el siguiente día posible después de días festivos consecutivos.

Para que esto funcione para -7, simplemente puede usar el ajuste del VAR de mi medición anterior.

Para -1 puede aprender cómo funciona el ajuste y adaptarlo usted mismo. No estamos aquí para hacer tu trabajo por ti, sino para ayudarte a aprender.

"Su error parece deberse a que está creando una medida, en lugar de una columna".

Respuesta: No, estaba insertando su fórmula en una "nueva columna" (creando una nueva columna). El error sigue ejecutándose.

Muchas gracias por intentar ayudarme y perdón por detenerte el tiempo para intentar resolverlo.

@wendereis - Amplíe su captura de pantalla para mostrar cuál es el error. Ha cortado la captura de pantalla donde se mostraría el error (aunque puedo ver que comienza después de la primera variable).

Aquí hay una captura de pantalla mía para mostrar que el código funciona (nota: he establecido el 27/06 y el 28/06 como días festivos para probar):

mark_endicott_0-1720190000685.png

Hola mi amigo.
además en mi Power BI está apareciendo un mensaje de error después de usar esta fórmula, a usted muestra que funciona en su Power BI como impresión / imagen que muestra, lo estoy marcando como "solución aceptada" para una ayuda total.

Estoy tratando de descubrir cómo hacer que su fórmula funcione para mí sin error, u otra forma de resolver mi problema.

¡¡Muchas gracias!!

Error de mi nueva columna:

Por favor, vea la imagen adjunta ampliada:

Error in VAR.png

@wendereis - Esta captura de pantalla no se ha ampliado. No puedo ver el error. Necesito ver algo como esto:

mark_endicott_0-1720191008566.png

Observe la línea de error en la parte inferior de la ventana de DAX.

Mensaje de error traducido: "se detectó una dependencia circular Painel de Controle - Outbound[1_Teste2], 08daf9f0-f7fb-4f26-a951-77ce88ec6706, Painel de Controle - Outbound[1_Teste2].."

Circular dependency...Error.png

@wendereis - Ok, es un error extraño, pero te prometo que no está siendo causado por mi DAX.

Tiene otra columna llamada 1_Teste2 - ¿Puede eliminar esto y ver qué hace con este error?

¡¡Hola!!

Este video de Youtube me ayuda mucho:

https://youtu.be/RD996KUYM8Q?list=PLzPjvUUXZT62h53QBORroNIyU8TyQILxM

Tilte del video de Youtube:

"Cómo agregar días hábiles en cualquier fecha en Power BI en hindi | Alternativa a WORKDAY en Power BI"

No tengo otra columna que se llame "1_Teste2".

😞

Desafortunadamente, todavía me sigue apareciendo este mensaje.

además de mi Power BI está apareciendo este mensaje de error después de usar esta fórmula, como se muestra funciona en su Power BI como impresión / imagen que muestra, lo estoy marcando como "solución aceptada" para una ayuda total.

Estoy tratando de descubrir cómo hacer que su fórmula funcione para mí sin error, u otra forma de resolver mi problema.

¡¡Muchas gracias!!

Syndicate_Admin
Administrator
Administrator

@wendereis - Si interpreto correctamente su requerimiento, algo como esto funcionará:

VAR CurrentDate = 'Table (8)'[Date]
VAR NumberOfDaysToSubtract = 7
VAR adjustment =
    SWITCH ( WEEKDAY ( 'Table (8)'[Date], 2 ), 1, 4, 2, 5, 3, 3, 4, 2, 5, 2 )
RETURN
    IF (
        OR (
            WEEKDAY ( CurrentDate, 2 ) IN { 6, 7 },
            LOOKUPVALUE ( 'Table (9)'[holiday], 'Table (9)'[holiday], CurrentDate )
        ),
        BLANK (),
        ( CurrentDate - NumberOfDaysToSubtract ) - adjustment
    )

Si no es así, debe proporcionar más datos de muestra y las salidas deseadas.

Sigue mis comentarios:
La tabla y la columna en azul es la columna de fecha Necesito descontar 3 días sin --> Sábados, domingos y días festivos: Por ejemplo:

----------------------------------------------------------------------------------------------------------------------
Columna de fecha (días de descuento en la fórmula) Resultado Nuevo esperado Columna de fecha
28/06/2024 -3 Días (sin sábado, domingo y festivos ) = 25/06/2024

-----------------------------------------------------------------------------------------------------------------------

Nota: He aplicado su fórmula y mi resultado es [incorrecto] 23/06/2024 en lugar de 25/06/2024.


(En este caso solo descuento sábado y domingo. Puede ser en otros casos que tendré que descontar más de 1 día además del sábado y el lunes si es alguna fecha de vacaciones).



------------------------------------------------------------------------------------------------------------
FÓRMULA:

Column_Test (nueva columna) =

FUERON CurrentDate = 'Painel de Controle - Outbound'[1_1_DataPlan_InicioSeparacao]
FUERON NúmeroDeDíasARestar = 3
FUERON ajuste =
INTERRUPTOR ( DÍA LABORABLE( «Painel de Controle - Outbound»[1_1_DataPlan_InicioSeparacao],2 ), 1, 4, 2, 5, 3, 3, 4, 2, 5, 2 )
DEVOLUCIÓN
SI (
O (
DÍA LABORABLE ( Fecha actual, 2 ) EN { 6, 7 },
LOOKUPVALUE ( 'Fecha Días festivos una sola columna LL01' [Fecha Días festivos], 'Fecha Días festivos Columna única LL01' [Fecha Días festivos], CurrentDate )
),
ESPACIO EN BLANCO (),
( CurrentDate - NumberOfDaysToSubtract ) - ajuste
)

@wendereis - Empezaste diciendo que necesitabas -7 días, ahora dices que quieres -3. Esto cambia el ajuste que debe hacer, porque 7 días cruzarán más fines de semana que 3.

Ahora también entiendo lo que hay que hacer con las vacaciones. Lo siguiente ahora debería funcionar para usted:

VAR CurrentDate = 'Table (8)'[Date]
VAR NumberOfDaysToSubtract = 3
VAR weekend_adjustment =
    SWITCH ( WEEKDAY ( 'Table (8)'[Date], 2 ), 1, 2, 2, 2, 3, 2, 0 )
VAR minus_weekends = ( CurrentDate - NumberOfDaysToSubtract ) - weekend_adjustment
VAR minus_holidays =
    IF ( minus_weekends IN VALUES ( 'Table (9)'[holiday] ), 1, 0 )
VAR holiday_adjustment = minus_weekends - minus_holidays
RETURN
    holiday_adjustment

Si funciona, por favor acéptelo como la solución.

Pero tengo que hacerlo con 3 días también y en otra columna con 7 días y en otra columna 1 día de diferencia.

Nota:
En mi prueba de ayer con 7 días, la fórmula descontó más de 7 días.

Error in VAR.png

Syndicate_Admin
Administrator
Administrator

Hola @wendereis : cree una nueva columna en Power BI que descuente 7 días laborables (excluidos sábados, domingos y festivos) a partir de una fecha específica.

Espero que tenga fecha de vacaciones, así que no estoy usando los valores de la tabla de fechas de vacaciones.

Fecha de descuento =
VAR CurrentDate = 'YourTable'[Date]
VAR NumberOfDaysToSubtract = 7
VAR AllDates = CALENDAR(MIN('TuTabla'[Fecha]), MAX('TuTabla'[Fecha]))
VAR FechasDetrabajo =
FILTRO (
AllDates,
NOT ( DÍA DE LA SEMANA ( [Fecha], 2 ) IN { 6, 7 } ) && -- Excluir sábado (6) y domingo (7)
NOT ( [Fecha] IN VALORES ( 'Vacaciones'[FechaVacaciones] ) ) -- Excluir días festivos
)
DEVOLUCIÓN
MAXX (
TOPN (
NumberOfDaysToSubtract + 1,
FILTRO (
Fechas de trabajo,
[Fecha] <= FechaActual
),
[fecha],
DESC
),
[Fecha]
)

¿He respondido a tu pregunta? ¡Marca mi publicación como una solución! ¡Esto ayudará a otros en el foro!
¡Agradezco sus felicitaciones!

Hola @rajendraongole1

He aplicado su fórmula, pero el resultado no descontó los "-7 días". Devuelve la misma "fecha" sin descuento.
La información colorida en azul a continuación es la base de mi columna, y la información en verde es mi tabla de días festivos que contiene solo una columna con las fechas de los días festivos.
¿Puedes ver si hay algún error en la fórmula, por favor?
FÓRMULA:

Fecha de descuento =
FUERON Fecha actual = Panel de control - Saliente[1_1_DataPlan_InicioSeparacao]
FUERON NumberOfDaysToSubtract = 7
FUERON AllDates = CALENDARIO(MIN(Panel de control - Saliente[1_1_DataPlan_InicioSeparacao]), MÁXIMO(Panel de control - Saliente[1_1_DataPlan_InicioSeparacao]))
FUERON Fechas de trabajo =
FILTRO (
AllDates,
NO ( DÍA LABORABLE ( [1_1_DataPlan_InicioSeparacao], 2 ) EN { 6, 7 } ) && -- Excluir sábado (6) y domingo (7)
NO ( [1_1_DataPlan_InicioSeparacao] EN VALORES ( 'Fecha Días festivos Columna única LL01' ) ) -- Excluir días festivos
)
DEVOLUCIÓN
MAXX (
TOPN (
NumberOfDaysToSubtract + 1,
FILTRO (
Fechas de trabajo,
[1_1_DataPlan_InicioSeparacao] <= Fecha actual
),
[1_1_DataPlan_InicioSeparacao],
DESC
),
[1_1_DataPlan_InicioSeparacao]
)
Syndicate_Admin
Administrator
Administrator

Intente crear una columna calculada.

Result Date = 
VAR StartDate = 'YourTable'[Date]
VAR Holidays = SELECTCOLUMNS(HolidayTable, "Date", HolidayTable[HolidayDate])
RETURN 
    CALCULATE(
        MAXX(
            ADDCOLUMNS(
                GENERATESERIES(1, 100),
                "Workday", 
                IF(
                    WEEKDAY(DATEADD(StartDate, -[Value], DAY), 2) <= 5 && 
                    NOT(DATEADD(StartDate, -[Value], DAY) IN Holidays), 
                    DATEADD(StartDate, -[Value], DAY), 
                    BLANK()
                )
            ), [Workday]
        ),
        FILTER(
            ADDCOLUMNS(
                GENERATESERIES(1, 100),
                "Workday", 
                IF(
                    WEEKDAY(DATEADD(StartDate, -[Value], DAY), 2) <= 5 && 
                    NOT(DATEADD(StartDate, -[Value], DAY) IN Holidays), 
                    DATEADD(StartDate, -[Value], DAY), 
                    BLANK()
                )
            ), 
            [Workday] <> BLANK() && RANKX(
                ADDCOLUMNS(
                    GENERATESERIES(1, 100),
                    "Workday", 
                    IF(
                        WEEKDAY(DATEADD(StartDate, -[Value], DAY), 2) <= 5 && 
                        NOT(DATEADD(StartDate, -[Value], DAY) IN Holidays), 
                        DATEADD(StartDate, -[Value], DAY), 
                        BLANK()
                    )
                ), 
                [Workday]
            ) = 7
        )
    )

No era trabajo. Es muy complejo.

Helpful resources

Announcements
July 2024 Power BI Update

Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

July Newsletter

Fabric Community Update - July 2024

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

Top Solution Authors