Forum Discussion

robandemmy's avatar
robandemmy
Frequent Visitor
3 years ago
Solved

Calculating Machine Production

I have the below table:   MACHINE LOADTIME UNLOADTIME Process Time (Unload-Load) M01 2022/08/04 6:32:00 2022/08/04 14:42:00 490 M07 2022/08/04 6:15:00 2022/08/04 13:57:00 462 M...
  • v-jianboli-msft's avatar
    3 years ago

    Hi robandemmy ,

     

    I forgot to modifiy something in the E shift calculation, it has been changed now. Please try:

    M shift = 
    VAR _a =
        DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
            + TIME ( 7, 0, 0 )
    VAR _b =
        DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
            + TIME ( 19, 0, 0 )
    VAR _c =
        DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) )
            + TIME ( 7, 0, 0 )
    VAR _sameday =
        SWITCH (
            TRUE (),
            [LOADTIME] < _a
                && [UNLOADTIME] < _b, DATEDIFF ( _a, [UNLOADTIME], MINUTE ),
            [LOADTIME] < _a
                && [UNLOADTIME] >= _b, DATEDIFF ( _a, _b, MINUTE ),
            [LOADTIME] >= _a
                && [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ),
            [LOADTIME] >= _a
                && [LOADTIME] <= _b
                && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _b, MINUTE ),
            [LOADTIME] >= _b
                && [UNLOADTIME] >= _b, 0
        )
    VAR _diffday =
        SWITCH (
            TRUE (),
            [LOADTIME] < _b
                && [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], _b, MINUTE ),
            [LOADTIME] < _b
                && [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _b, MINUTE ) + DATEDIFF ( _c, [UNLOADTIME], MINUTE ),
            [LOADTIME] >= _b
                && [UNLOADTIME] < _c, 0,
            [LOADTIME] >= _b
                && [UNLOADTIME] >= _c, DATEDIFF ( _c, [UNLOADTIME], MINUTE )
        )
    RETURN
        IF ( _a = _c, _sameday, _diffday )
    
    E shift = 
    VAR _a =
        DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
            + TIME ( 7, 0, 0 )
    VAR _b =
        DATE ( YEAR ( [LOADTIME] ), MONTH ( [LOADTIME] ), DAY ( [LOADTIME] ) )
            + TIME ( 19, 0, 0 )
    VAR _c =
        DATE ( YEAR ( [UNLOADTIME] ), MONTH ( [UNLOADTIME] ), DAY ( [UNLOADTIME] ) )
            + TIME ( 7, 0, 0 )
    VAR _sameday =
        SWITCH (
            TRUE (),
            [LOADTIME] < _a
                && [UNLOADTIME] < _b, DATEDIFF ( [LOADTIME], _a, MINUTE ),
            [LOADTIME] < _a
                && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], _a, MINUTE ) + DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
            [LOADTIME] >= _a
                && [UNLOADTIME] < _b, 0,
            [LOADTIME] >= _a
                && [LOADTIME] <= _b
                && [UNLOADTIME] >= _b, DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
            [LOADTIME] >= _b
                && [UNLOADTIME] >= _b, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE )
        )
    VAR _diffday =
        SWITCH (
            TRUE (),
            [LOADTIME] < _b
                && [UNLOADTIME] < _c, DATEDIFF ( _b, [UNLOADTIME], MINUTE ),
            [LOADTIME] < _b
                && [UNLOADTIME] >= _c, DATEDIFF ( _b, _c, MINUTE ),
            [LOADTIME] >= _b
                && [UNLOADTIME] < _c, DATEDIFF ( [LOADTIME], [UNLOADTIME], MINUTE ),
            [LOADTIME] >= _b
                && [UNLOADTIME] >= _c, DATEDIFF ( [LOADTIME], _c, MINUTE )
        )
    RETURN
        IF ( _a = _c, _sameday, _diffday )

    Final output:

    Best Regards,

    Jianbo Li

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.