寫在前面
研究問題:非日歷日的時(shí)間換算
使用工具:POWER BI
實(shí)現(xiàn)方法:DAX函數(shù)
計(jì)算思路
對(duì)于許多制造業(yè)來說,每日產(chǎn)能計(jì)算不是根據(jù)日歷日(00:00:00-24:00:00)來計(jì)算的,而是把前一日開班時(shí)間到后一日開班時(shí)間這段間隔作為一個(gè)工作日。
比如,某工廠的每日開班時(shí)間為06:00:00,如果某個(gè)產(chǎn)品在2019/5/8 03:00:00被生產(chǎn)出來,那么依然認(rèn)為它的生產(chǎn)日期是2019/5/7。因此,對(duì)這種工作日≠日歷日的情況,要對(duì)實(shí)際生產(chǎn)日期進(jìn)行換算。


生產(chǎn)記錄中展示了每個(gè)產(chǎn)品的實(shí)際生產(chǎn)日期和時(shí)間,生產(chǎn)時(shí)間安排表中記錄了每個(gè)生產(chǎn)地的開班時(shí)間,當(dāng)實(shí)際生產(chǎn)完成時(shí)間小于開班時(shí)間時(shí),應(yīng)將生產(chǎn)日期換算為前一日。
計(jì)算過程
1.建立關(guān)系

2.新建度量值
換算日期 = IF(MAX('生產(chǎn)記錄'[生產(chǎn)完成時(shí)間])<MAX('生產(chǎn)時(shí)間安排表'[每日生產(chǎn)開始時(shí)間]),MAX('生產(chǎn)記錄'[生產(chǎn)完成日期])-1,MAX('生產(chǎn)記錄'[生產(chǎn)完成日期]))
如果實(shí)際生產(chǎn)完成時(shí)間小于開班時(shí)間,那么換算日期就是實(shí)際生產(chǎn)日期前一日,否則,等于實(shí)際生產(chǎn)日期。
由于每種產(chǎn)品只有一條,因此聚合方式用MAX\MIN\SUM結(jié)果都相同。因?yàn)槭嵌攘恐?,因此不可不進(jìn)行聚合,否則認(rèn)為值太多,會(huì)報(bào)錯(cuò)!
(每個(gè)生產(chǎn)地開班時(shí)間不同,采用新建列處理行不通,若開班時(shí)間是恒值,則可采取新建列方式解決,新建列無需聚合。)
3.結(jié)果展示

結(jié)果如上圖所示,其中,手炮、風(fēng)暴戰(zhàn)斧、八蛛矛、元素槍、阿戈摩托之眼都是在開班時(shí)間前完成的,因此它們的換算時(shí)間都是實(shí)際生產(chǎn)日期的前一天。