2019-08-26

学习POWER BI有一段时间了,第一次发一点实操,分享给大家。

先上建模关系:

以下是工厂分步成本核算相关业务报表建模关系图,通过款号将期初成本、本期投入成本、本期数量收发存及历史累计数据进行关联。

2019-08-26_第1张图片

按下来是写DAX函数编写

废话不多说,上代码:

Version:0.9StartHTML:00000097EndHTML:00013811StartFragment:00000199EndFragment:00013773evaluate

//获取款号/获取期初成本

ADDCOLUMNS(ADDCOLUMNS(ADDCOLUMNS(ADDCOLUMNS(ADDCOLUMNS(

//取各阶段涉及材料的款号(投料款号+期初款号+裁剪收发存款号)

summarize(

union(

VALUES('投料透视'[款号]),VALUES('1 1WIP-Material'[Style]),VALUES('2_1 DL OH for cutting'[Style])

)

,[款号]),

//取各阶段期初数量/LOOKUPVALUE查找函数

"裁片期初",LOOKUPVALUE('裁片'[期初结存],'裁片'[款号],[款号]),

"缝制期初",LOOKUPVALUE('缝制'[期初结存数量],'缝制'[款号],[款号]),

"后道期初",LOOKUPVALUE('后道'[期初结存],'后道'[款号],[款号]),

"本期实裁数",LOOKUPVALUE('裁片'[本月实裁数],'裁片'[款号],[款号]),

//取期初成本/SUMX/FILTER筛选上下文求和

"期初面料",SUMX(FILTER('1 1WIP-Material','1 1WIP-Material'[Style]=[款号]),'1 1WIP-Material'[Fabric]),

"期初辅料",SUMX(FILTER('1 1WIP-Material','1 1WIP-Material'[Style]=[款号]),'1 1WIP-Material'[Accessories]),

"期初加工费",SUMX(FILTER('1 1WIP-Material','1 1WIP-Material'[Style]=[款号]),'1 1WIP-Material'[Subcontract]),

"期初外购",SUMX(FILTER('1 1WIP-Material','1 1WIP-Material'[Style]=[款号]),'1 1WIP-Material'[Outsourcing]),

//取本期投料成本/LOOKUPVALUE查找函数

"本期面料投入",LOOKUPVALUE('投料透视'[Fabric],'投料透视'[款号],[款号]),

"本期辅料投入",LOOKUPVALUE('投料透视'[Accessories],'投料透视'[款号],[款号]),

"本期外购投入",LOOKUPVALUE('投料透视'[Outsourcing],'投料透视'[款号],[款号])),

//计算加权平均单价/DIVIDE安全计算单价

"面料单价",DIVIDE([期初面料]+[本期面料投入],[裁片期初]+[缝制期初]+[后道期初]+[本期实裁数]),

"辅料单价",DIVIDE([期初辅料]+[本期辅料投入],[裁片期初]+[缝制期初]+[后道期初]+[本期实裁数]),

"外购单价",DIVIDE([期初外购]+[本期外购投入],[裁片期初]+[缝制期初]+[后道期初]+[本期实裁数]),

"加工费单价",DIVIDE([期初加工费],[裁片期初]+[缝制期初]+[后道期初]+[本期实裁数]),

//取成品入库数量及核算完工成品成本

"成品入库数量",LOOKUPVALUE('成品'[Finished QTY],'成品'[款号],[款号])),

"完工面料成本",[面料单价]*[成品入库数量],

"完工辅料成本",[辅料单价]*[成品入库数量],

"完工外购成本",[外购单价]*[成品入库数量],

"完工加工费成本",[加工费单价]*[成品入库数量],

//取报废及其他数量并核算相应成本/LOOKUPVALUE查找函数

"报废及其他数量",LOOKUPVALUE('裁片'[疵片数量],'裁片'[款号],[款号])+LOOKUPVALUE('裁片'[调整数量],'裁片'[款号],[款号])

+LOOKUPVALUE('缝制'[船样],'缝制'[款号],[款号])+LOOKUPVALUE('缝制'[遗失等],'缝制'[款号],[款号])

+LOOKUPVALUE('后道'[次品数量],'后道'[款号],[款号])+LOOKUPVALUE('后道'[遗失等],'后道'[款号],[款号])),

"报废及其他面料成本",[面料单价]*[报废及其他数量],

"报废及其他辅料成本",[辅料单价]*[报废及其他数量],

"报废及其他外购成本",[外购单价]*[报废及其他数量],

"报废及其他加工费成本",[加工费单价]*[报废及其他数量]),

//取期末结存数量并核算结存成本

"期末裁床数量",LOOKUPVALUE('裁片'[期末结存],'裁片'[款号],[款号]),

"本期缝制数量",LOOKUPVALUE('缝制'[期末结存数量],'缝制'[款号],[款号]),

"本期后道数量",LOOKUPVALUE('后道'[期末结存数量],'后道'[款号],[款号]),

"期末面料成本",[期初面料]+[本期面料投入]-[完工面料成本]-[报废及其他面料成本],

"期末辅料成本",[期初辅料]+[本期辅料投入]-[完工辅料成本]-[报废及其他辅料成本],

"期末外购成本",[期初外购]+[本期外购投入]-[完工外购成本]-[报废及其他外购成本],

"期末加工费成本",[期初加工费]-[完工加工费成本]-[报废及其他加工费成本]

)

此代码最终生成的报表如下 图:

由于涉及到公司内部数据,只截了其中一部分数据,请大家参考。

总结:DAX给我的感觉是一次建模,终身受用,关键是业务建模和DAX函数的编写,相当麻烦,还好有DAX Studio。

你可能感兴趣的:(2019-08-26)