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

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
Syndicate_Admin
Administrator
Administrator

Determinar el número de día laborable del mes

Hola a todos

Hice una búsqueda en mensajes anteriores pero no pude encontrar mi caso de usuario:

en nuestra organización marcamos los días laborables del mes como WD1, WD2, WD3, etc. Por ejemplo, si el 1 de marzo es de lunes a viernes, será WD1 y así sucesivamente. Por ejemplo, si observamos el mes actual de octubre:

cfugge_0-1697615390481.png

En todos nuestros conjuntos de datos PBI tenemos una tabla de calendario y me gustaría agregar una columna personalizada que contenga el número WD como en la tabla anterior. En una etapa posterior, es posible que también desee considerar las vacaciones... ¿Alguna conjetura sobre cómo hacerlo?

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @Ahmedx , he modificado su función de columna con mis nombres de tabla y columna:

Número de día laborable2 =
DÓNDE _WeekDayNumber = DÍA LABORABLE([Fecha],2)
DÓNDE _Year_Month_Number = Dim_Dates[MesDeAño]
DÓNDE _DayNumber = Dim_Dates[Fecha]-EOMONTH([Fecha],-1)
DÓNDE _tbl_Filter1 = FILTRO(Dim_Dates,Dim_Dates[MesDeAño] =_Year_Month_Number)
DÓNDE _tbl_Filter2 = FILTRO('Dim_Dates',Dim_Dates[DayOfWeekName] en {"Domingo","Sábado"})
DÓNDE Countweekend (en inglés) = CALCULAR(COUNTROWS(),_tbl_Filter1,_tbl_Filter2, FECHASENTRE(Dim_Dates[Fecha],_DayNumber,Dim_Dates[Fecha]))
DEVOLUCIÓN
SI ( NO Dim_Dates[DayOfWeekName] en {"Domingo","Sábado"},
_DayNumber - Countweekend (en inglés)
)
Desafortunadamente, los valores devueltos son fechas en lugar de números, como en su caso:
cfugge_0-1697632281497.png

¿Alguna pista de por qué?

Syndicate_Admin
Administrator
Administrator

Gracias @Ahmedx, pero ¿dónde debo ingresar el código a continuación?

Working day number2 = 
VAR _WeekDayNumber = WEEKDAY([Date],2)
VAR _Year_Month_Nomber = 'Calendar'[Year Month Number]
VAR _DayNumber = 'Calendar'[Date]-EOMONTH([Date],-1)
VAR _tbl_Filter1 = FILTER('Calendar','Calendar'[Year Month Number]=_Year_Month_Nomber)
VAR _tbl_Filter2 = FILTER('Calendar','Calendar'[Day name] in {"Sunday","Saturday"})
VAR Countweekend = CALCULATE(COUNTROWS(),_tbl_Filter1,_tbl_Filter2, DATESBETWEEN('Calendar'[Date],_DayNumber,'Calendar'[Date]))
RETURN
IF ( NOT 'Calendar'[Day name] in {"Sunday","Saturday"},
    _DayNumber - Countweekend
)

Syndicate_Admin
Administrator
Administrator

Crear un calendario

Calendar = 
 
VAR BaseCalendar =
    CALENDAR ( DATE ( 2023, 10, 1 ), DATE (2024, 12, 31 )) 

RETURN
    GENERATE (
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR YearDate = YEAR ( BaseDate )
        VAR MonthNumber = MONTH ( BaseDate )
        VAR YearMonthNumber = YearDate * 12 + MonthNumber - 1
        RETURN ROW (
            "Year", YearDate,
            "Month Number", MonthNumber,
            "Month", FORMAT ( BaseDate, "mmmm"),
            "Year Month Number", YearMonthNumber,
            "Year Month", FORMAT ( BaseDate, "mmm yy"),
            "Day name", FORMAT ( BaseDate, "dddd")
        ))

Crear una nueva columna

Working day number2 = 
VAR _WeekDayNumber = WEEKDAY([Date],2)
VAR _Year_Month_Nomber = 'Calendar'[Year Month Number]
VAR _DayNumber = 'Calendar'[Date]-EOMONTH([Date],-1)
VAR _tbl_Filter1 = FILTER('Calendar','Calendar'[Year Month Number]=_Year_Month_Nomber)
VAR _tbl_Filter2 = FILTER('Calendar','Calendar'[Day name] in {"Sunday","Saturday"})
VAR Countweekend = CALCULATE(COUNTROWS(),_tbl_Filter1,_tbl_Filter2, DATESBETWEEN('Calendar'[Date],_DayNumber,'Calendar'[Date]))
RETURN
IF ( NOT 'Calendar'[Day name] in {"Sunday","Saturday"},
    _DayNumber - Countweekend
)

Syndicate_Admin
Administrator
Administrator

@Ahmedx ,

Su solución se ve perfecta. Desafortunadamente, solo puedo ver el resultado y no cómo lo hiciste, ya que tu .pbix está hecho con una versión más reciente de PBI Desktop. ¿Alguna posibilidad de cortar y pegar aquí la función DAX o el código M?

Syndicate_Admin
Administrator
Administrator

Basándome en su descripción, creé datos para reproducir su escenario. Al final, se adjunta el archivo pbix.

https://1drv.ms/u/s!AiUZ0Ws7G26Riy2npIw414Vc7ZER?e=rhBoF6

Helpful resources

Announcements
Feb2025 Sticker Challenge

Join our Community Sticker Challenge 2025

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors