各位数据的朋友,大家好,我是老周道数据,和你一起,用常人思维+数据分析,通过数据讲故事。
上一讲和大家讲到,自定义SQL是用个性化的开发去满足个性化的需求,而分析模型则是用共性的开发去满足个性化的需求。而分析模型的好处显而易见,通过分析模型来开发报表,更灵活、更高效,而且开发及运维的成本非常低。同时,通过举例也让大家看到,构建分析模型并不复杂。
今天我们再来讲一下分析模型中的战斗机——财务分析模型。对于很多IT开发人员来说,响应财务的需求,会感觉是一件非常困难的事情。为什么呢,因为财务分析的需求具备高度的专业性,毕竟人家4年才学一个会计专业,10年才可能做到CFO,想要理解财务的逻辑,难!想要理解并开发CFO的需求,那是难上加难!(点击观看视频)
从专业的角度来看,财务分析的场景确实是很难,为什么这么说呢?
首先,在财务分析场景中,会经常出现余额、发生额两个指标,这两个指标从时间的维度来说,计算的逻辑是不一样的,余额是指截止到某个时间点的数据,而发生额,则是在某个时间范围内的数据总计。就拿我们的银行卡来说,4月初的时候,我卡里有500块,这个月吃了30天的方便面,每天10块钱,共花了300块,到月底的时候,卡里就只有200块了。这时,我们就可以说,期初余额是500(时间条件是等于4月1号),本月发生额是300(时间条件是从4月1号到4月30日),期末余额是200(时间条件是等于4月30号)。
大家理解了余额与发生额针对时间条件的计算逻辑不同,可能也觉得,这也没啥啊,注意点不就可以了吗?
但问题出在,很多财务比率的计算,这两个指标是要放在同一个报表中计算的。比如总资产周转率=销售收入总额/资产平均总额,这里的销售收入就是发生额,平均资产则是(期初余额+期末余额)/2。
如果把难度系数按*号多少标识的话,那么,此时的财务分析难度为:★
我们接下来看,在财务分析中,针对余额或发生额,通常都要进行同比、环比、占比的分析,而针对发生额,则一般还要进行本年累计的计算,并且还要做本年累计同比、本年累计占比等分析。而且,这些字段对于财务分析来说,基本上都是标配。
还有,在财务分析中,一般都要针对预算的完成情况进行分析,所以,看当期实际、当期预算、当期预算达成率、本年累计实际、全年预算达成率这些指标也是稀松平常。
财务分析难度:★★
另外,财务分析还有一个与一般的分析不同的是,财务分析会大量涉及到行与行之间的计算,比如销售分析,通常只针对列进行聚合或计算,其中销售毛利率=销售毛利这一列/销售金额这一列。但行与行之间一般是不会进行计算的,比如按区域看销售数据,各区域之间的数据是独立的,不存在互相计算的关系。但在财务分析中就不一样了,行与行之间是存在计算关系的。比如损益表中,主营业务利润=主营业务收入-成本-费用,利润率=利润/收入,费用率=费用/收入。
说到这里,财务分析:★★★
还不止,我们继续。在财务分析中,涉及到的维度一般都是多层级父子维度。在分析时,通常希望按不同的层级折叠或展开,比如科目体系,有一级科目,二级科目甚至到5-6级科目;责任中心/部门/组织也是有多层级的,时间维度也是多层级的。那多层级的折叠与展开,又加大了难度。
财务分析难度:★★★★
以上这些如果单独来看,都不算可怕,可怕的是,这些难度会组合在一起,不同的维度与指标任意组合,排列组合的各种可能性就让难度指数级增加,这时上升到5颗星都不足以客观评价。
财务分析难度:★★★★★★★★★★
讲到这里,不论是IT开发人员,还是财务分析人员,都应该认同财务分析的复杂度与难度,绝对分析模型中的战斗机。
现在大家是如何来进行财务分析的呢?
刚开始,是通过财务软件自带的报表模块来实现。但,在这种方式下,需要在报表模块中按单元格定义公式,不够灵活,工作量太大。
后来,绝大多数情况下是用第二种方式,也就是将科目余额表导出到EXCEL中手工处理。EXCEL强大的功能相比财务软件来说更灵活,但每次都要导入导出,仍然很麻烦。特别是当我们分析的科目与辅助项目非常多时,尤其痛苦。
再后来,有些公司就想通过报表工具来解决这个痛点。报表软件可以直接对接财务软件的数据库,不再需要导入导出这个动作,也就减轻了财务人员的许多工作量,但在实践中,大家会发现,愿望很丰满,现实却很骨感。报表工具仍然无法满足复杂多变的财务分析需求,只有一些常规且稳定的可视化报表可以在报表工具中实现,遇到一些临时要分析的场景,还是要找IT开发,但IT根本就没有时间响应,就算愿意去开发,等开发出来,黄花菜都凉了。最后财务分析人员又被迫继续导出到EXCEL中自己处理。
有过报表软件经验的财务分析人员都会感同身受,但大家一般不明白,为什么在EXCEL里可以快速解决的问题,报表软件却没办法快速解决呢?因为报表软件在开发财务分析报表时是用硬写的方式来实现的。
什么是硬写的方式?
就拿上面展示的损益表来说,如果你让IT来开发这张报表,首先,因为损益表中的每一行每一列都需要独立计算,比如计算主营业务收入的本月数,则需要在后台找到本月所有一级科目为主营业务收入的下级明细科目的发生额进行汇总得到,如果要计算主营业务收入的本年累计数,则要再重复计算一遍,只是这次的时间条件改为从当年的1月1号到当前月份的最后一天。
按这样的方式,这个表有18行,2列,就需要在后台进行18*2=36次的计算,才能得到这个表。而这36次的计算,都是IT人员敲代码,一个一个计算出来的,这时你就可以想像一下它的工作量有多大了。
所以,当你下次再找IT问能不能再在这个表上加上两列,好看到本月和本年累计分别和去年同期的对比。
无论你的语气多么温柔,无论你的眼睛睁的多大,显得多么水灵,IT人员的心里都是百般不愿意的。他会告诉你:“销售部的XX还有报表需求没有开发完。我现在实在没空。要不你再等两天?”
等两天?一刻都不能等,老板那边还想按组织来看各分子公司的利润情况,以及与去年的同比情况呢,没办法,只能自己在EXCEL中手工处理了。
为了从根本上改变这种情况,奥威BI软件开发了一个专门为财务分析场景的行计算模型建模工具,财务人员不但可以自己建模,还可以在后续科目结构有变化的时候,自行维护,不需要麻烦IT人员。
具体是如何实现的呢,接下来我们来举个例子:
用行计算模型开发财务分析报表
这是一个常见的损益表,包括各科目,以及实际发生额、同比、环比、本年累计、预算及完成率。
在这里可以进行任意期间筛选:
为了让分析更立体,增加了按组织机构横向对比,以及从历史期间来进行趋势分析;
还可以和损益表进行联动,将以前平面的、静态的利润表变成立体动态的,比如我们点击科目当中的营业利润或者费用就可以看到这个科目在各机构的对比情况以及历史情况;
还可以单独看某个机构某个科目的趋势情况。
这是如何实现的呢?其实实现起来也很简单,在财务软件科目余额表或者会计凭证的基础上配置一下就可以。
左下角这个区域就是我们在财务软件中的科目体系,中间这个科目体系就是我们接下来要自定义损益表的科目体系。
1、自定义科目体系
我们就按照刚才那个损益表的样式来构建,依次建立营业收入、营业成本、税金及附加。具体操作如下:
增加【营业收入】:即点击【科目结构】,选择【增加下级菜单】后,将在【科目结构】下增加一个【新建菜单】,点击选中后在右侧编辑菜单中输入维度名称【营业收入】后点击保存。
增加【营业成本】:点击【营业收入】,选择【增加同级菜单】后得到一个【新建菜单】,点击选中后再右侧编辑菜单中输入维度名称【营业成本】后点击保存。
这里的营业毛利润就需要进行计算:根据营业毛利润=营业收入-营业成本-税金及附加的公式,通过拖拉的方式在【计算公式】一栏输入公式,点击保存。
之后继续根据整个损益表的要求依次建立所有科目。之后,我们还可以加入净利率指标。净利率=净利润/营业收入。
完成以上操作后,就要将财务软件里的科目体系和我们刚刚建立的科目体系进行匹配。
2、匹配科目体系
操作很简单,只要把左边的科目拖到中间的科目。
我们再来看一下,如何基于这个分析模型在前端实现任意的自助分析。
3、基于该分析模板制作报表
(1)新建表格,选择刚才那个分析模型
点击BI数据可视化分析报表制作页上方的【+】,点击【表格】;
在左侧数据集构建器下,点击【视图】旁的【+】,点击选择刚刚的分析模型后点击确定即可;
点击【汇总】旁的【+】,勾选科目余额表下的【实际发生额】,点确定;
点击【行维度】旁的【+】,勾选利润表科目下的【科目名称】,点确定。
到这里就需要启用一个核心功能——行计算功能。这样BI系统就可以在历史数据中进行复杂计算。具体操作如下:
点击【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【仅显示当前级别】、【开启行计算】、【开启父子维度】后,点击确定。具体如下图:
在点击【排序】旁的【+】,选择【科目编码】之后,就可以获得一个简单的利润表。
接下来再把其他计算指标一一设置好:
预算:点击【汇总】旁的【+】,勾选【预算】,点击确定;
预算完成率:点击【汇总】旁的【+】,点击【fx】,在【计算成员1】中输入【预算完成率】,勾选左下方【汇总区域】后,通过点击下方指标的方式在【自定义表达式】中输入公式【实际发生额/预算】,点击确定;
上年实际发生额、实际发生额同比:点击【实际发生额】旁的【+】,点击【同期】,勾选【同期比率】,点击确定;
上月实际发生额、实际发生额环比:点击【实际发生额】旁的【+】,点击【同期】,点击同期【月】,勾选【同期比率】,点击确定;
本年累计_实际发生额:点击【汇总】旁的【+】,勾选【实际发生额】,在左下角勾选【本年累计】,点击确定。
(2)添加组织机构对比柱形图、历史趋势图
柱形图制作过程:
点击页面身上的【+】,点击添加柱形图;
点击【汇总】旁的【+】,勾选【实际发生额】、【预算】,点确定;
点击【行维度】旁的【+】,勾选【一级组织】,点击确定;
点击【实际发生额】旁的【…】,点击【排序】,选择【降序】,点击确定;
点击【筛选】旁的【…】,勾选【科目名称】,点击确定。在条件筛选器中,在【是否参数】前输入【营业收入】,点击确定;
点击【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【开启行计算】后,点击确定。
折线图(面积图)制作过程:
点击页面上方的【+】,点击添加面积图。
点击【数据集】旁的【+】,选择柱形图所用的数据集,点确定。点击该数据集旁的【…】,点击【复制】,
点击【行维度】指标【一级组织】旁的【…】,点击【删除】后,点击【行维度】旁的【+】,勾选【时间年】、【时间月】,点击确定,更改行维度指标。
点击【排序】旁的【+】,勾选【时间年】、【时间月】,点击确定。
点击页面上方的【+】,点击【筛选】、【公共筛选】。
(3)添加筛选按钮
年度筛选按钮:点击页面上方的【+】,点击【公共筛选】,在添加筛选控件中勾选【时间年】,左下角选择【按钮(单选)】,点击确定。
期间筛选按钮:点击页面上方的【+】,点击【公共筛选】,在添加筛选控件中勾选【时间月】,左下角选择【按钮(单选)】,点击确定。
通过拖拉的方式将两个筛选按钮拖到页面上方,调整大小即可。
(4)添加联动功能
点击机构对比分析图(柱形图)右上角联动按钮,点击利润表,点击确定。
点击趋势分析图(面积图)右上角联动按钮,点击利润表、机构对比分析图,点击确定。
经过上述的操作,我们就可以得到一个基于行计算分析模型的任意多角度、立体化的财务分析报表。
4、基于该数据分析模型自助分析
当前报表可以看到各个机构的利润情况的对比分析,如果我们想做其他的分析,就可以做任意切换,比如我们要切换成按年度对比分析的利润表,就只需要通过鼠标切换以下维度即可。同时,我们还可以进行任意的筛选,比如按机构查询南京分公司历年的利润情况。
接下来我们再做一些变化,比如增加一个月份,制作一个各月份利润表同比、环比分析的报表,这样就可以看到每个年度、每个月份利润表的发展情况。
自助分析案例1:增加月份指标,分析每个年度、月份利润表的发展情况
点击【行维度】旁的【+】,勾选【时间月】,点击确定。
当然,我们还可以进行任意年度的筛选。这种在手工报表中处理起来工作量很大、很令人头疼的工作在奥威BI软件上却很轻松,只需通过点击增加与去年以及上月进行对比的指标即可。
点击汇总下的【实际发生额】旁的【…】,选择【同期】【年】,勾选【同期比率】,点击确定。
点击汇总下的【实际发生额】旁的【…】,选择【同期】【月】,勾选【同期比率】,点击确定。
保存为方案
其实这种样式的报表我们在日常工作上是经常需要使用的,那么就可以将其保存成一个方案。这样就不需要每次都动态生成了,还可以分享给其他同事或领导使用。也就是说不但可以任意动态变化报表的样式,还可以随时固化下来重复使用,并与其他同事进行协作。具体操作如下:
点击页面右上角【方案】,在新增方案中输入名称【年度利润分析】,点击保存。
自助分析案例2:自助分析、查看本年累计
将汇总下,除【实际发生额】以外的指标一一点击【…】,选择【删除】。然后点击下方刷新按钮,刷新一下报表。之后再点击【汇总】旁的【+】,勾选【实际发生额】,左下角选择【本年累计】,点击确定。如下图:
添加后,点击该指标旁的【…】,点击【重命名】为【本年累计】。
这是我们就可以快速地进行本年累计的同比分析了。
点击【本年累计】旁的【…】,选择【同期】,勾选【同期比率】,点击确定。
自助分析案例3:从各分公司-办事处以及各年度-月份组合来看营业收入这一指标,并期望看到各利润表项目的同比情况。
这个例子包含了组织架构、时间以及利润表科目三个维度,非常复杂。单在奥威BI软件上,同样只需要简单的鼠标操作就可以实现。
再次通过点击指标旁【…】,点击【删除】的方式将汇总中除【实际发生额】之外的指标一一删除,将列维度下的指标也一并删除,然后点击下方的刷新数据按钮对本报表做一次刷新。
点击【筛选】旁的【+】,勾选利润表科目下的【科目名称】,点击确定。在条件筛选器的【是否参数】前输入表达式【营业收入】,点击确定。
点击【行维度】下【科目名称】旁的【…】,点击【删除】。
点击【筛选】下【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【仅显示当前级别】、【开启行计算】、【开启计算父级】后,点击确定。
点击【行维度】旁的【+】,勾选【一级组织】、【二级组织】,点击确定。
点击【汇总】下【实际发生额】旁的【…】,点击【同期】,勾选【同期比率】、【同期差值】,点确定。
点击【列维度】旁的【+】,勾选【时间年】、【时间月】,点确定。
最后效果如下:
我们可以发现在整个设置的过程中,不需要设置任何公式,只要清楚地把要分析的意愿表达出来就可以了。
例子讲完了,大家会发现,通过行计算模型来开发财务分析报表,异常的简单,前端的组合也是非常灵活。是不是再一次感受到分析模型的魔力了呢?如果你是财务分析人员,是不是也非常有信心可以做到?而对于擅长写SQL的IT开发高手们来说,要不要试试,看完成示例中同样的报表,你需要几天的时间才能完成?你们可以借助市面上任意的BI软件或报表软件,欢迎高手们来挑战啊!
老周道数据,和你一起,用常人思维+数据分析,通过数据讲故事,我们下一讲再见!