Shanmugarajan
Hola,
¿Puedo saber cómo crear la función DÍA DE TRABAJO en powerBI con la función DAX? No tengo vacaciones para agregar. Tengo una columna con fechas y otra columna con números. Solo quería obtener el resultado en una nueva columna con el día laboral agregando números a mi columna existente. ¿Hay alguna manera de hacerlo directamente sin tablas adicionales, por favor?
Eric_Zhang
En respuesta a Shanmugarajan
@Shanmugarajan escribió:
Estimado @Phil_Seamark
Gracias por la respuesta.
En su sintaxis, no pude averiguar dónde ingresar mi día personalizado para agregar para cada fila.
He adjuntado mis datos de muestra. La columna C es mi requisito. ¿Podrías echar un vistazo?
¡Gracias por adelantado!
@Shanmugarajan
Puede crear una tabla de calendario como se muestra a continuación
dimdate = VAR onlyWorkdays = FILTER ( CALENDAR ( "2017-01-01", "2017-12-31" ), WEEKDAY ( [Date] ) <> 1 && WEEKDAY ( [Date] ) <> 7 ) RETURN ADDCOLUMNS ( onlyWorkdays, "Index", RANKX ( onlyWorkdays, [Date],, ASC, DENSE ) )
Luego, conecte su tabla de origen a la tabla de calendario, cree una medida como
exw date = VAR DateIndex = MAX ( dimdate[Index] ) VAR LeadTime = MAX ( 'Table'[Lead Time] ) RETURN MAXX ( FILTER ( ALL ( dimdate ), dimdate[Index] = DateIndex + LeadTime ), dimdate[Date] )
Vea más detalles en el archivo pbix.
Phil_Seamark
En respuesta a Shanmugarajan
Hola @Shanmugarajan
Esta es una forma de hacerlo como columna calculada. Simplemente reemplace Table3 con su propio nombre de tabla
exw date = VAR myDate = ADDCOLUMNS(FILTER(CALENDAR(Table3[Order Date],TODAY()),WEEKDAY([Date],3)<5),"Days",1) VAR Cumulative = ADDCOLUMNS( myDate, "D", SUMX(filter(myDate,[Date]<EARLIER([Date])),[Days]) ) RETURN MINX(FILTER(Cumulative,[D]='Table3'[Lead Time]),[Date])
Phil_Seamark
Hola @Shanmugarajan
Podría intentar agregar esta columna calculada a su tabla de fechas
WORKDAY = SWITCH( WEEKDAY([Date],1), -- Is Sunday -- 7,0, -- Is Saturday -- 1,0, -- Else -- 1 )
Shanmugarajan
En respuesta a Phil_Seamark
Estimado @Phil_Seamark
Gracias por la respuesta.
En su sintaxis, no pude averiguar dónde ingresar mi día personalizado para agregar para cada fila.
He adjuntado mis datos de muestra. La columna C es mi requisito. ¿Podrías echar un vistazo?
¡Gracias por adelantado!
Eric_Zhang
En respuesta a Shanmugarajan
@Shanmugarajan escribió:
Estimado @Phil_Seamark
Gracias por la respuesta.
En su sintaxis, no pude averiguar dónde ingresar mi día personalizado para agregar para cada fila.
He adjuntado mis datos de muestra. La columna C es mi requisito. ¿Podrías echar un vistazo?
¡Gracias por adelantado!
@Shanmugarajan
Puede crear una tabla de calendario como se muestra a continuación
dimdate = VAR onlyWorkdays = FILTER ( CALENDAR ( "2017-01-01", "2017-12-31" ), WEEKDAY ( [Date] ) <> 1 && WEEKDAY ( [Date] ) <> 7 ) RETURN ADDCOLUMNS ( onlyWorkdays, "Index", RANKX ( onlyWorkdays, [Date],, ASC, DENSE ) )
Luego, conecte su tabla de origen a la tabla de calendario, cree una medida como
exw date = VAR DateIndex = MAX ( dimdate[Index] ) VAR LeadTime = MAX ( 'Table'[Lead Time] ) RETURN MAXX ( FILTER ( ALL ( dimdate ), dimdate[Index] = DateIndex + LeadTime ), dimdate[Date] )
Vea más detalles en el archivo pbix.
Phil_Seamark
En respuesta a Eric_Zhang
Hola @Shanmugarajan
Lo que @Eric_Zhang ha sugerido funciona perfectamente para un medida calculada.
Esta es la sintaxis que puede usar si desea tener el valor como columna calculada
dimdate = VAR onlyWorkdays = FILTER ( CALENDAR ( "2017-01-01", "2017-12-31" ), WEEKDAY ( [Date] , 2 ) < 6 ) RETURN ADDCOLUMNS ( onlyWorkdays, "Index", RANKX ( onlyWorkdays, [Date],, ASC, DENSE ) )
Cree una relación entre esto y su tabla existente, luego agregue esta columna calculada
EXW Date = VAR DateIndex = RELATED('dimdate'[Index]) RETURN CALCULATE( MAX('dimdate'[Date]), FILTER(dimdate,dimdate[Index] = DateIndex + 'Table1'[Lead Time]) )
Shanmugarajan
En respuesta a Phil_Seamark
@Phil_Seamark
Querido Phil,
Tengo una pequeña duda en nuestra discusión anterior. Me has ayudado a agregar un no particular. de días a una fecha y luego encontrar un nuevo día laboral. así que, por ejemplo, si tenemos column1 + day1 = column2, en nuestra fórmula nunca hacemos referencia a nuestra columna1 en ningún lugar, entonces, ¿cómo detecta y calcula la fórmula? Tuve esta duda cuando quise realizar lo mismo para otra columna nueva. ¿Puedes ayudar por favor?
Phil_Seamark
En respuesta a Shanmugarajan
Hola @Shanmugarajan
Parece que el foro que les di simplemente proporciona un número de DÍA LABORAL para cada día laborable del año desde el comienzo del año.
¿Quería mostrar el número de días laborables desde otro punto de partida?
Shanmugarajan
En respuesta a Phil_Seamark
Estimado @Phil_Seamark
Sí, tengo un estado de punto de partida al que necesito agregar un número particular de días para formar una nueva columna de día laboral.
como en mi imagen adjunta, mi punto de partida será OrderDate y tengo que agregar Lead time para formar el resultado EXWdate.
¡Gracias!
Phil_Seamark
En respuesta a Shanmugarajan
Hola @Shanmugarajan
Esta es una forma de hacerlo como columna calculada. Simplemente reemplace Table3 con su propio nombre de tabla
exw date = VAR myDate = ADDCOLUMNS(FILTER(CALENDAR(Table3[Order Date],TODAY()),WEEKDAY([Date],3)<5),"Days",1) VAR Cumulative = ADDCOLUMNS( myDate, "D", SUMX(filter(myDate,[Date]<EARLIER([Date])),[Days]) ) RETURN MINX(FILTER(Cumulative,[D]='Table3'[Lead Time]),[Date])
Jerelle
En respuesta a Phil_Seamark
Hola Phil: ¡Gracias por la elegante solución! ¿Es posible modificar esto para tener en cuenta también las vacaciones?
Shanmugarajan
En respuesta a Phil_Seamark
Estimado @Phil_Seamark
lo siento, estaba fuera de la oficina y no pude responder rápido.
Funciona perfectamente.
¿Puedes ayudarme a entender cuál es el valor? [Date] ¿recoger?
otra parte de la fórmula, según tengo entendido.
¡Gracias!
Shanmugarajan
En respuesta a Phil_Seamark
Estimado @Phil_Seamark,
Disculpas por la respuesta tardía ya que estaba fuera de la ciudad.
He probado la solución que me ha dado y funciona perfectamente para una columna calculada que es mi necesidad. Todavía estoy tratando de decodificar las funciones y tratando de aprender la lógica de cómo funciona. Las funciones de DAX son nuevas para mí.
Puede que me haya perdido algo en mi consulta anterior. Quería comprobar cómo se pueden evitar los días festivos al hacer el (cálculo de la fecha del día laborable + el tiempo de entrega). Por ejemplo, si tengo dos conjuntos diferentes de días festivos, uno para Malasia y otro para Tailandia, durante el cálculo, si los datos de mi fila pertenecen a Malasia, el resultado debe excluir los días festivos de Malasia solamente y si la fila es para Tailandia, entonces debe excluir las vacaciones de Tailandia solo. ¿Podría darme un consejo?
PD: En este momento en Excel, las vacaciones de un país son una en una columna. Entonces tengo de 3 a 4 columnas, y mientras uso la función DÍA DE TRABAJO, simplemente mapeo a la columna respectiva.
¡Gracias por su gran apoyo!
@Eric_Zhang muchas gracias por recomendar la solución a través de Measure.
Phil_Seamark
En respuesta a Shanmugarajan
Ajá, lo entiendo. No estaba seguro de lo que hacía la función DÍA DE TRABAJO, pero su imagen ayuda. Le echaré un vistazo a esto esta noche.
Shanmugarajan
En respuesta a Phil_Seamark
@Phil_Seamark
¡Muchas gracias! Mi error, no he sido claro en el mensaje anterior.
¡Esperará!