Tableau系统中已经存在“期间”、“实利收入”、“开票收入”三个字段,
目的:想核算各单位“不同期间”的“管理费用”(开票收入-实得收入)占实得收入的占比。
如:一个单位本年度内的费用收入比、一个单位各月的费用收入比。
方法:创建一个“计算”字段。
问题:聚和公式的写法逻辑不同,导致分析结果与实际工作大相径庭,甚至南辕北辙!!!
内容见下:
方法一:AVG([费用工资占比])
其中,费用工资占比:([开票收入]-[实得收入])/[实得收入]
方法二:费用收入占比:SUM([开票收入]-[实得收入])/sum([实得收入])
聚和[费用收入占比]
方法三:SUM([费用工资占比]),这个是完全错误的,根本无意义!
其中,费用工资占比:([开票收入]-[实得收入])/[实得收入]
示例:
1、如果以期间的最小单位"月"计算占比,则每个占比计算都是正确的!
2、按“年”统计,有一个结果发生错误!
方法一,直接先算得各月的占比,将各月占比累加后除以月数,得出月占比的平均数!!
方法二,将各月的实得收入、开票收入,先进行累加,然后进行占比运算!并没有进行平均计算。
总结:
两种方法各有所长,但切计:不能将第一种方法做成:SUM([费用工资占比]),那们会将各月的占比加和,结果就是完全错误的!
///////////////////////////////////////////////计算字段求和发生错误!!!
创建计算字段:人力总成本
人力总成本=SUM([劳务费]+[社保福利])
只要加数有一项为NULL,如劳务费或社保福利有一个项目值为NULL的,和值就是NULL!人力总成本值就是空的,这是为什么呢?只有两项都不是空的,求和值才是正确的!!!
困扰中!!!
解决了,在TABLEAU中,有个函数IFNULL(表达式1,表达式2),如果表达式1为NULL,则返回值表达式2,否则返回表达式1的值!
人力总成本= SUM(IFNULL([劳务费],0)+IFNULL([社保福利],0))
正常了!!
可通过参数与计算字段来实现。设置日期参数,结合计算字段,用日期函数与日期参数结合写出下一天的抄表值,与当天的抄表值,再相减,得出当天的消耗值
=datediff(yyyy,生日,getdate())