【BI软件】零编程构建财务分析模型(行计算模型)

news2024/9/21 16:35:04

上一讲和大家讲到,自定义SQL是用个性化的开发去满足个性化的需求,而分析模型则是用共性的开发去满足个性化的需求。而分析模型的好处显而易见,通过分析模型来开发报表,更灵活、更高效,而且开发及运维的成本非常低。同时,通过举例也让大家看到,构建分析模型并不复杂。

今天我们再来讲一下分析模型中的战斗机——财务分析模型。对于很多IT开发人员来说,响应财务的需求,会感觉是一件非常困难的事情。为什么呢,因为财务分析的需求具备高度的专业性,毕竟人家4年才学一个会计专业,10年才可能做到CFO,想要理解财务的逻辑,难!想要理解并开发CFO的需求,那是难上加难!

从专业的角度来看,财务分析的场景确实是很难,为什么这么说呢?

首先,在财务分析场景中,会经常出现余额、发生额两个指标,这两个指标从时间的维度来说,计算的逻辑是不一样的,余额是指截止到某个时间点的数据,而发生额,则是在某个时间范围内的数据总计。就拿我们的银行卡来说,4月初的时候,我卡里有500块,这个月吃了30天的方便面,每天10块钱,共花了300块,到月底的时候,卡里就只有200块了。这时,我们就可以说,期初余额是500(时间条件是等于4月1号),本月发生额是300(时间条件是从4月1号到4月30日),期末余额是200(时间条件是等于4月30号)。

大家理解了余额与发生额针对时间条件的计算逻辑不同,可能也觉得,这也没啥啊,注意点不就可以了吗?

但问题出在,很多财务比率的计算,这两个指标是要放在同一个报表中计算的。比如总资产周转率=销售收入总额/资产平均总额,这里的销售收入就是发生额,平均资产则是(期初余额+期末余额)/2。

如果把难度系数按*号多少标识的话,那么,此时的财务分析难度为:★

我们接下来看,在财务分析中,针对余额或发生额,通常都要进行同比、环比、占比的分析,而针对发生额,则一般还要进行本年累计的计算,并且还要做本年累计同比、本年累计占比等分析。而且,这些字段对于财务分析来说,基本上都是标配。

还有,在财务分析中,一般都要针对预算的完成情况进行分析,所以,看当期实际、当期预算、当期预算达成率、本年累计实际、全年预算达成率这些指标也是稀松平常。

财务分析难度:★★

另外,财务分析还有一个与一般的分析不同的是,财务分析会大量涉及到行与行之间的计算,比如销售分析,通常只针对列进行聚合或计算,其中销售毛利率=销售毛利这一列/销售金额这一列。但行与行之间一般是不会进行计算的,比如按区域看销售数据,各区域之间的数据是独立的,不存在互相计算的关系。但在财务分析中就不一样了,行与行之间是存在计算关系的。比如损益表中,主营业务利润=主营业务收入-成本-费用,利润率=利润/收入,费用率=费用/收入。
在这里插入图片描述

奥威bi软件

说到这里,财务分析:★★★

还不止,我们继续。在财务分析中,涉及到的维度一般都是多层级父子维度。在分析时,通常希望按不同的层级折叠或展开,比如科目体系,有一级科目,二级科目甚至到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人员。
在这里插入图片描述

奥威bi软件

在这里插入图片描述

奥威bi软件

具体是如何实现的呢,接下来我们来举个例子:

用行计算模型开发财务分析报表

这是一个常见的损益表,包括各科目,以及实际发生额、同比、环比、本年累计、预算及完成率。
在这里插入图片描述

奥威bi软件

在这里可以进行任意期间筛选:

为了让分析更立体,增加了按组织机构横向对比,以及从历史期间来进行趋势分析;

还可以和损益表进行联动,将以前平面的、静态的利润表变成立体动态的,比如我们点击科目当中的营业利润或者费用就可以看到这个科目在各机构的对比情况以及历史情况;

还可以单独看某个机构某个科目的趋势情况。

这是如何实现的呢?其实实现起来也很简单,在财务软件科目余额表或者会计凭证的基础上配置一下就可以。

左下角这个区域就是我们在财务软件中的科目体系,中间这个科目体系就是我们接下来要自定义损益表的科目体系。
在这里插入图片描述

奥威bi软件

在这里插入图片描述

奥威bi软件

1、自定义科目体系

我们就按照刚才那个损益表的样式来构建,依次建立营业收入、营业成本、税金及附加。具体操作如下:

增加【营业收入】:即点击【科目结构】,选择【增加下级菜单】后,将在【科目结构】下增加一个【新建菜单】,点击选中后在右侧编辑菜单中输入维度名称【营业收入】后点击保存。

增加【营业成本】:点击【营业收入】,选择【增加同级菜单】后得到一个【新建菜单】,点击选中后再右侧编辑菜单中输入维度名称【营业成本】后点击保存。
在这里插入图片描述

奥威bi软件

这里的营业毛利润就需要进行计算:根据营业毛利润=营业收入-营业成本-税金及附加的公式,通过拖拉的方式在【计算公式】一栏输入公式,点击保存。

之后继续根据整个损益表的要求依次建立所有科目。之后,我们还可以加入净利率指标。净利率=净利润/营业收入。

完成以上操作后,就要将财务软件里的科目体系和我们刚刚建立的科目体系进行匹配。

2、匹配科目体系

操作很简单,只要把左边的科目拖到中间的科目。
在这里插入图片描述

奥威bi软件

我们再来看一下,如何基于这个分析模型在前端实现任意的自助分析。

3、基于该分析模板制作报表

(1)新建表格,选择刚才那个分析模型

点击BI数据可视化分析报表制作页上方的【+】,点击【表格】;

在左侧数据集构建器下,点击【视图】旁的【+】,点击选择刚刚的分析模型后点击确定即可;

点击【汇总】旁的【+】,勾选科目余额表下的【实际发生额】,点确定;

点击【行维度】旁的【+】,勾选利润表科目下的【科目名称】,点确定。

到这里就需要启用一个核心功能——行计算功能。这样BI系统就可以在历史数据中进行复杂计算。具体操作如下:

点击【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【仅显示当前级别】、【开启行计算】、【开启父子维度】后,点击确定。具体如下图:
在这里插入图片描述

奥威bi软件

在点击【排序】旁的【+】,选择【科目编码】之后,就可以获得一个简单的利润表。

接下来再把其他计算指标一一设置好:

预算:点击【汇总】旁的【+】,勾选【预算】,点击确定;

预算完成率:点击【汇总】旁的【+】,点击【fx】,在【计算成员1】中输入【预算完成率】,勾选左下方【汇总区域】后,通过点击下方指标的方式在【自定义表达式】中输入公式【实际发生额/预算】,点击确定;

上年实际发生额、实际发生额同比:点击【实际发生额】旁的【+】,点击【同期】,勾选【同期比率】,点击确定;

上月实际发生额、实际发生额环比:点击【实际发生额】旁的【+】,点击【同期】,点击同期【月】,勾选【同期比率】,点击确定;

本年累计_实际发生额:点击【汇总】旁的【+】,勾选【实际发生额】,在左下角勾选【本年累计】,点击确定。
在这里插入图片描述

奥威bi软件

(2)添加组织机构对比柱形图、历史趋势图

柱形图制作过程:

点击页面身上的【+】,点击添加柱形图;

点击【汇总】旁的【+】,勾选【实际发生额】、【预算】,点确定;

点击【行维度】旁的【+】,勾选【一级组织】,点击确定;

点击【实际发生额】旁的【…】,点击【排序】,选择【降序】,点击确定;

点击【筛选】旁的【…】,勾选【科目名称】,点击确定。在条件筛选器中,在【是否参数】前输入【营业收入】,点击确定;

点击【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【开启行计算】后,点击确定。

折线图(面积图)制作过程:

点击页面上方的【+】,点击添加面积图。

点击【数据集】旁的【+】,选择柱形图所用的数据集,点确定。点击该数据集旁的【…】,点击【复制】,

点击【行维度】指标【一级组织】旁的【…】,点击【删除】后,点击【行维度】旁的【+】,勾选【时间年】、【时间月】,点击确定,更改行维度指标。

点击【排序】旁的【+】,勾选【时间年】、【时间月】,点击确定。

点击页面上方的【+】,点击【筛选】、【公共筛选】。

(3)添加筛选按钮

年度筛选按钮:点击页面上方的【+】,点击【公共筛选】,在添加筛选控件中勾选【时间年】,左下角选择【按钮(单选)】,点击确定。

期间筛选按钮:点击页面上方的【+】,点击【公共筛选】,在添加筛选控件中勾选【时间月】,左下角选择【按钮(单选)】,点击确定。

通过拖拉的方式将两个筛选按钮拖到页面上方,调整大小即可。

(4)添加联动功能

点击机构对比分析图(柱形图)右上角联动按钮,点击利润表,点击确定。

点击趋势分析图(面积图)右上角联动按钮,点击利润表、机构对比分析图,点击确定。

经过上述的操作,我们就可以得到一个基于行计算分析模型的任意多角度、立体化的财务分析报表。

4、基于该数据分析模型自助分析

当前报表可以看到各个机构的利润情况的对比分析,如果我们想做其他的分析,就可以做任意切换,比如我们要切换成按年度对比分析的利润表,就只需要通过鼠标切换以下维度即可。同时,我们还可以进行任意的筛选,比如按机构查询南京分公司历年的利润情况。

在这里插入图片描述

奥威bi软件

接下来我们再做一些变化,比如增加一个月份,制作一个各月份利润表同比、环比分析的报表,这样就可以看到每个年度、每个月份利润表的发展情况。

自助分析案例1:增加月份指标,分析每个年度、月份利润表的发展情况

点击【行维度】旁的【+】,勾选【时间月】,点击确定。
在这里插入图片描述

奥威bi软件

当然,我们还可以进行任意年度的筛选。这种在手工报表中处理起来工作量很大、很令人头疼的工作在奥威BI软件上却很轻松,只需通过点击增加与去年以及上月进行对比的指标即可。

点击汇总下的【实际发生额】旁的【…】,选择【同期】【年】,勾选【同期比率】,点击确定。

点击汇总下的【实际发生额】旁的【…】,选择【同期】【月】,勾选【同期比率】,点击确定。
在这里插入图片描述

奥威bi软件

保存为方案

其实这种样式的报表我们在日常工作上是经常需要使用的,那么就可以将其保存成一个方案。这样就不需要每次都动态生成了,还可以分享给其他同事或领导使用。也就是说不但可以任意动态变化报表的样式,还可以随时固化下来重复使用,并与其他同事进行协作。具体操作如下:

点击页面右上角【方案】,在新增方案中输入名称【年度利润分析】,点击保存。
在这里插入图片描述

奥威bi软件

自助分析案例2:自助分析、查看本年累计

将汇总下,除【实际发生额】以外的指标一一点击【…】,选择【删除】。然后点击下方刷新按钮,刷新一下报表。之后再点击【汇总】旁的【+】,勾选【实际发生额】,左下角选择【本年累计】,点击确定。如下图:
在这里插入图片描述

奥威bi软件

添加后,点击该指标旁的【…】,点击【重命名】为【本年累计】。

这是我们就可以快速地进行本年累计的同比分析了。

点击【本年累计】旁的【…】,选择【同期】,勾选【同期比率】,点击确定。
在这里插入图片描述

奥威bi软件

在这里插入图片描述

奥威bi软件

自助分析案例3:从各分公司-办事处以及各年度-月份组合来看营业收入这一指标,并期望看到各利润表项目的同比情况。

这个例子包含了组织架构、时间以及利润表科目三个维度,非常复杂。单在奥威BI软件上,同样只需要简单的鼠标操作就可以实现。

再次通过点击指标旁【…】,点击【删除】的方式将汇总中除【实际发生额】之外的指标一一删除,将列维度下的指标也一并删除,然后点击下方的刷新数据按钮对本报表做一次刷新。

点击【筛选】旁的【+】,勾选利润表科目下的【科目名称】,点击确定。在条件筛选器的【是否参数】前输入表达式【营业收入】,点击确定。
在这里插入图片描述

奥威bi软件

点击【行维度】下【科目名称】旁的【…】,点击【删除】。

点击【筛选】下【科目名称】旁的【…】,点击【父子维度】,选择主键【faccountid】、父键【fparentid】、全码【无】、级别【1】,勾选【仅显示当前级别】、【开启行计算】、【开启计算父级】后,点击确定。

点击【行维度】旁的【+】,勾选【一级组织】、【二级组织】,点击确定。

点击【汇总】下【实际发生额】旁的【…】,点击【同期】,勾选【同期比率】、【同期差值】,点确定。

点击【列维度】旁的【+】,勾选【时间年】、【时间月】,点确定。

最后效果如下:
在这里插入图片描述

奥威bi软件

我们可以发现在整个设置的过程中,不需要设置任何公式,只要清楚地把要分析的意愿表达出来就可以了。

例子讲完了,大家会发现,通过行计算模型来开发财务分析报表,异常的简单,前端的组合也是非常灵活。是不是再一次感受到分析模型的魔力了呢?如果你是财务分析人员,是不是也非常有信心可以做到?而对于擅长写SQL的IT开发高手们来说,要不要试试,看完成示例中同样的报表,你需要几天的时间才能完成?你们可以借助市面上任意的BI软件或报表软件,欢迎高手们来挑战啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中引用的基本内容

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 引用,其实没啥特别的,就是起外号,或者说起小名。就比如说孙悟空就有很多外号,如…

基于Python实现个人手机定位分析

TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。本文就来用它实现个人手机定位分析,感兴趣的小伙伴可以了解一下 但其实交通时空大数据并不仅仅局限于交通工具产生的数据,我们的日常生活中也会产生大量的数据。比如我们的手机…

前端 百度地图绘制路线加上图片

使用百度官方示例的方法根据起终点经纬度查询驾车路线但是只是一个线路 <template><div class"transportInfo"><div id"mapcontainer" class"map">11</div><div class"collapse"><el-collapse v-mo…

CA(证书颁发机构)

CA 根证书路径/csk-rootca/csk-ca.pem&#xff1b; ~ 签发数字证书&#xff0c;颁发者信息&#xff1a;(仅包含如下信息) C CN ST China L BeiJing O skills OU Operations Departments CN CSK Global Root CA 1.修改证书的路径以及相关配置 vi /etc/pki/tls/op…

el-upload文件上传组件的封装

样式1 样式2 上传的格式 // annexUrl 数据格式如下[{"uid": 1682329534561,"name": "2023/04/24/273f36b860a74e79be3faed3ce20236f.pdf","suffix": ".pdf","url": "http://192.168.0.254:19000/annex/2023/…

JVM系列(十) 垃圾收集器之 Parallel Scavenge/Old

上篇文章我们讲解了单线程垃圾收集器 Serial/SerialOld &#xff0c;与之相对应的多线程垃圾收集器就是 Parallel Scavenge/Old&#xff0c; 本文我们讲解下多线程垃圾收集器 Parallel Scavenge/Old 垃圾收集器 新生代收集器&#xff1a; Serial、ParNew、Parallel Scavenge&…

数据库 | 什么是视图?怎么使用?什么是索引?

目录 一、视图 1 、视图概念 2、为什么要使用视图 3 、性能问题 4 、定义视图 5、查看视图 6、删除视图 二、索引 1、引入索引的问题 2、索引是什么 3、索引为什么选择b树 一、视图 1 、视图概念 视图&#xff08;View&#xff09;是一种虚拟存在的表&#xff0c;对…

【DRF配置管理】如何建立完善的DRF自带接口docs文档

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 DRF应用和管理 【DRF配置管理】Django使用DRF框架 【DRF配置管理】如何实现JWT认证 【DRF配置管理】如何在视图函数配置参数(一) 【DRF配置管理】如何…

okcc呼叫问题的解决方法(建议收藏)

很多客户开始使用OKCC呼叫中心系统&#xff0c;运营经常遇到的问题是呼叫打不通&#xff0c;无话单&#xff0c;呼叫秒挂&#xff0c;语音提示"您没有使用业务的权限"等等异常情况&#xff0c;而且反馈线路正常&#xff0c;使用呼叫系统拨打就是呼不通。 OKCC系统…

史上最烂 spring aop 原理分析

盗引中篇spring aop spring aop: jdk 动态代理和 cglib 动态代理的特点、区别、使用方式、原理及各自对反射的优化、二者在 spring 中的统一、通知顺序、从 Aspect 到 Advisior、静态通知调用、动态通知调用。 版本 jdk&#xff1a;8spring&#xff1a;5.3.20spring boot&…

华为OD机试(20222023)真题目录 + 考点 + 复盘思路

大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助1000同学顺利通过OD机考&#xff0c;发现新题目&#xff0c;随时更新。 以下为华为OD机试真题题库。 1、华为OD机试真题&#xff08;Java&#xff09;&am…

创建型模式-原型模式

原型模式 介绍 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。具体原型类&#xff1a;实现抽象原型类的 cl…

Linux文本处理三大利器Grep、AWK、Sed

写在前面 Linux三剑客是文本处理工具&#xff0c;它们可以帮助我们快速、高效地对文本进行处理。其中包括了grep、awk、以及sed这三个强大的命令行工具。 Linux 三剑客主要作用: grep&#xff0c;它可以根据正则表达式查找相关内容并打印对应的数据。awk&#xff0c;它可以根…

redhat8配置vsftpd服务

目录 一、匿名访问模式 1.1、ftp服务器端修改配置&#xff08;配置文件&#xff1a;/etc/vsftpd/vsftpd.conf&#xff09; 1.2 修改ftp目录的权限 1.3 设置selinux服务对ftp服务的访问规则策略为允许 1.4 防火墙添加ftp服务 1.5 测试 二、本地用户模式 2.1 服务端修改配…

6、什么是类型断言?

虽然 TypeScript 很强大&#xff0c;但有时还不如我们了解一个值的类型方便&#xff0c;这时候我们更希望 TypeScript 不要帮我们进行类型检查&#xff0c;而是交给我们自己来&#xff0c;所以就用到了类型断言。类型断言有点像是一种类型转换&#xff0c;它把某个值强行指定为…

Vue收集表单数据学习笔记

收集表单数据 v-model双向数据绑定&#xff0c;收集的是input框的value&#xff0c;单选按钮不存在value&#xff0c;就像代码中的男女选项&#xff0c;即使绑定性别v-model“sex”&#xff0c;控制台依然不能接收性别的值&#xff0c;因为没有value值&#xff0c;&#xff0c…

python 第二章——数据类型详解

文章目录 前言一、什么是数据类型1.变量2.注释 二、数字三、字符串四、布尔五、列表六、元组七、集合八、字典总结 前言 本系列教程目录&#xff0c;可点击这里查看&#xff1a;Python教程目录 学习一门编程语言&#xff0c;第一件事就应该是熟练掌握这门编程语言的基本数据类…

[Java]JavaWeb开发中的MVC设计模式

一、有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet&#xff0c;如何编写jsp及如何更新浏览器中显示的内容。但是我们之前自己编写的应用一般存在无条理性&#xff0c;对于一个小型的网站这样的编写没有任何问题&#xff0c;但是一但…

MCDF代码详解,mcdf_rgm_pkg.sv代码超详细注释

寄存器模块代码详解 好戏开始: `include "param_def.v" package mcdf_rgm_pkg; import uvm_pkg::*; `include "uvm_macros.svh" import reg_pkg::*; //具有uvm_reg类型的专用寄存器描述[write-red-reg] class ctrl_reg extends uvm_r…

机器人教学中游戏化课程案例尝试

本文内容严格按创作模板发布&#xff1a; 2023年LPL春季赛季后赛正在火热进行中&#xff0c;你们心中的总冠军是哪支队伍呢&#xff1f;作为热爱游戏的程序猿&#xff0c;一起来聊聊你那些有意义的游戏开发经历吧&#xff01; 游戏化ROS机器人课程的优势有以下七点&#xff1a…