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?
v-haibl-msft
@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.
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.
v-haibl-msft
En respuesta a CraigBlackman
@CraigNegro
También podemos crear una columna calculada mientras usamos el modo DirectQuery.
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.
v-haibl-msft
En respuesta a CraigBlackman
@CraigNegro
Habilite la siguiente opción y vuelva a intentarlo.
Atentamente,
Herbert
CraigBlackman
En respuesta a v-haibl-msft
Hola @ v-haibl-msft
Ya tengo esto habilitado.
v-haibl-msft
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.
v-haibl-msft
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] )
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
v-haibl-msft
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.
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:
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?