Definir las horas de inicio y finalización de la jornada laboral.

Un usuario Pregunto ✅

CraigBlackman

Hola a todos,

Tengo un pequeño problema porque estoy tratando de informar la cantidad de artículos que fabricamos en un período determinado de 24 horas en base a turnos de 2 x 12 horas. El segundo turno funciona de 7 a. M. A 7 p. M. Y luego de 7 p. M. A 7 a. M.

Entonces, en lugar de mostrar hti sdata en un período de reloj de 24 horas, el período de 24 horas comenzaría a las 7 am y terminaría a las 7 am del día siguiente.

¿Cómo hago para hacerlo?

@CraigNegro

En este escenario, el problema clave debería ser la fecha definida. Necesitamos crear otra columna Fecha basada en su definición.

El tipo de datos de la siguiente columna de tiempo debe ser «tiempo».

Time =
TIMEVALUE ( Table1[wo_built_datetime] )

La columna Tipo de datos de la siguiente hora debe ser «Fecha».

Defined_Date = 
    IF (
        TIMEVALUE ( Table1[Time] ) >= TIMEVALUE ( "07:00:00" )
            && TIMEVALUE ( Table1[Time] ) <= TIMEVALUE ( "23:59:59" ),
        Table1[wo_built_datetime].[Date],
        IF (
            TIMEVALUE ( Table1[Time] ) < TIMEVALUE ( "07:00:00" )
                && CONTAINS (
                    Table1,
                    Table1[wo_built_datetime].[Date], Table1[wo_built_datetime].[Date] - 1
                ),
            Table1[wo_built_datetime].[Date] - 1,
            Table1[wo_built_datetime].[Date]
        )
)
Defined_Shift = 
    IF (
        TIMEVALUE ( Table1[Time] ) >= TIMEVALUE ( "07:00:00" )
            && TIMEVALUE ( Table1[Time] ) <= TIMEVALUE ( "23:59:59" ),
        "Day Shift",
        IF (
            TIMEVALUE ( Table1[Time] ) < TIMEVALUE ( "07:00:00" )
                && TIMEVALUE ( Table1[Time] ) >= TIMEVALUE ( "00:00:00" )
                && CONTAINS (
                    Table1,
                    Table1[wo_built_datetime].[Date], Table1[wo_built_datetime].[Date] - 1
                ),
            "Night Shift",
            "Night Shift"
        )
)

Entonces podemos usar la columna Defined_Shift en lugar de la columna wo_built_datetime en el gráfico de columnas.

Defina las horas de inicio y finalización para el día laborable_1.jpgDefinir las horas de inicio y finalización para el día laborable_2.jpg

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

Hola @ v-haibl-msft

Estoy usando Direct Query, por lo que me cuesta un poco aceptar esto como una columna calculada.

En respuesta a CraigBlackman

@CraigNegro

También podemos crear una columna calculada mientras usamos el modo DirectQuery.

Defina las horas de inicio y finalización para el día laborable_1.jpg

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

Hola @ v-haibl-msft

Recibo el siguiente error al crear la columna defint_date

La función ‘ISEMPTY’ no está permitida como parte de las expresiones DAX de columna calculadas en modelos DirectQuery.

En respuesta a CraigBlackman

@CraigNegro

Habilite la siguiente opción y vuelva a intentarlo.

Defina las horas de inicio y finalización para el día laborable_1.jpg

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

Hola @ v-haibl-msft

Ya tengo esto habilitado.

En respuesta a CraigBlackman

@CraigNegro

¿Por qué necesita utilizar la función ISEMPTY en su expresión de columna calculada?

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

@ v-haibl-msft

Ese es el mensaje que recibo usando la fórmula proporcionada. Estoy perplejo en cuanto a por qué Sop esperaba que pudieras aclararme.

En respuesta a CraigBlackman

@CraigNegro

¿Podría dar una captura de pantalla para la fórmula y el mensaje en su Power BI Desktop?

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

@ v-haibl-msft

He creado un nuevo proyecto con solo works_order, este es el mensaje de error que recibo, se configuró como un informe de consulta directa.

La referencia de columna a ‘wo_built_datetime’ en la tabla ‘works_order’ no se puede usar con una variación de ‘Fecha’ porque no tiene ninguna.

Defined_Date =
SI (
TIMEVALUE (orden_trabajo[Time] )> = TIMEVALUE («07:00:00»)
&& TIMEVALUE (orden_trabajos[Time] ) <= TIMEVALUE ("23:59:59"),
orden_trabajos[wo_built_datetime].[Date],
SI (
TIMEVALUE (orden_trabajo[Time] ) && CONTIENE (
orden_trabajos,
orden_trabajos[wo_built_datetime].[Date], orden_trabajos[wo_built_datetime].[Date] – 1
),
orden_trabajos[wo_built_datetime].[Date] – 1,
orden_trabajos[wo_built_datetime].[Date]
)
)

CraigBlackman

En respuesta a CraigBlackman

@ v-haibl-msft

Sigo viendo este problema y aún no se ha resuelto. Alguna idea sobre mi error

En respuesta a CraigBlackman

@CraigNegro

Para resolver el mensaje de error anterior, primero podemos crear una columna de fecha con la siguiente fórmula.

wo_built_date = 
DATE ( YEAR ( Table1[wo_built_datetime] ), MONTH ( Table1[wo_built_datetime] ), DAY ( Table1[wo_built_datetime] ) )

Luego reemplace algunas expresiones con el nombre de la columna anterior en la columna Definded_Date.

Defined_Date = 
    IF (
        TIMEVALUE ( Table1[Time] ) >= TIMEVALUE ( "07:00:00" )
            && TIMEVALUE ( Table1[Time] ) <= TIMEVALUE ( "23:59:59" ),
        Table1[wo_built_date],
        IF (
            TIMEVALUE ( Table1[Time] ) < TIMEVALUE ( "07:00:00" )
                && CONTAINS (
                    Table1,
                    Table1[wo_built_date], Table1[wo_built_date] - 1
                ),
            Table1[wo_built_date] - 1,
            Table1[wo_built_date]
        )
)

Pero seguirá recibiendo el mensaje: la función ‘ISEMPTY’ no está permitida como parte de las expresiones DAX de columna calculadas en los modelos DirectQuery.

Eso es porque la función CONTAINS () no se puede utilizar en el modo DirectQuery. ¿Podría intentarlo con el modo de importación?

Atentamente,

Herbert

CraigBlackman

En respuesta a v-haibl-msft

@ v-haibl-msft

Funciona bien con la importación, solo directquery, ese es el problema, que es mi ruta preferida para darme estadísticas en vivo, especialmente en esta época del año en la que estamos realmente ocupados.

Anónimo

¿Puede agregar una columna «Fecha de recuento» en Power Query, p. Ej.

#"Added Conditional Column" = Table.AddColumn(#"YOUR PREVIOUS STEP", "Tally Date", each if Time.Hour([Shift Date Time]) < 7 then Date.AddDays(DateTime.Date([Shift Date Time]), -1) else DateTime.Date([Shift Date Time]),
#"Changed Type" = Table.TransformColumnTypes(#"Added Conditional Column",{{"Tally Date", type date}})

luego usa eso (como una fecha) para tus cálculos?

bullius

Hola @CraigBlackman

¿Cómo quiere visualizar estos datos?

CraigBlackman

En respuesta a bullius

Hola @bullius

En la actualidad lo tengo mostrado por fecha y luego cambio ay turno b por día con el total de artículos fabricados. El problema es que los artículos que se producen después de la medianoche en el turno de 7 p.m. a 7 a.m. se trasladan al día siguiente.Capture.PNG

bullius

En respuesta a CraigBlackman

Puede agregar una columna calculada que siga esta lógica:

SI (

[Time Column] > = HORA (7, 0, 0) && <= HORA (23, 59, 59),
[Date Column],

FECHA (AÑO ( [Date Column] ), MES ( [Date Column] ), DÍA ( [Date Column] ) – 1)
)

Esto devolverá una fecha que trata de 12 a. M. A 7 a. M. Como el día anterior.

Avísame si te funciona.

CraigBlackman

En respuesta a bullius

@bullius, recibo el siguiente error, No estoy muy seguro de cómo superar esto.

La sintaxis de ‘<=' es incorrecta. (DAX (IF (works_order[wo_built_datetime] > = HORA (7, 0, 0) && <= HORA (23, 59, 59), orden_trabajo[wo_built_datetime], FECHA (AÑO (orden_trabajos[wo_built_datetime] ), MES (orden_trabajos[wo_built_datetime] ), DÍA ( [Date Column] ) - 1)))).

BuildDate = IF (trabajo_orden[wo_built_datetime] > = HORA (7, 0, 0) && <= HORA (23, 59, 59), orden_trabajo[wo_built_datetime], FECHA (AÑO (orden_trabajos[wo_built_datetime] ), MES (orden_trabajos[wo_built_datetime] ), DÍA (orden_trabajos[wo_built_datetime] ) - 1))

bullius

En respuesta a CraigBlackman

Ok, me apresuré un poco y me perdí una parte de la fórmula. Sin embargo, no creo que funcione con sus datos de todos modos porque tiene una columna de Fecha / Hora en lugar de columnas de Fecha y Hora separadas.

Esto es lo que necesitas hacer:

1. En el Editor de consultas, duplique su Fecha y hora columna, [wo_built_datetime]

2. Cambie el tipo de su columna original a Fecha y cámbiele el nombre a «wo_built_date»
3. Cambie el tipo de su nueva columna a Hora y cámbiele el nombre a «wo_built_time»

4. En la ventana de Power BI Desktop, agregue una nueva columna a su tabla con la siguiente fórmula:

Build Date = 
IF (
	works_order[wo_built_time] >= TIME ( 7, 0, 0 ) && works_order[wo_built_time] <= TIME ( 23, 59, 59 ), 
	works_order[wo_built_date], 
	DATE ( YEAR ( works_order[wo_built_date] ), MONTH ( works_order[wo_built_date] ), DAY (	works_order[wo_built_date] ) - 1 )
)

Lo probé con algunos datos de ejemplo y produjo la siguiente tabla:

Table.png

CraigBlackman

En respuesta a bullius

Hola @bullius

Bien, he hecho esto y lo que está haciendo es mover todos los pedidos por 1 día y no respetar el filtro de tiempo colocado en esto. ¿Por qué sería eso?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *