数据可视化之分析篇(七)Power BI数据分析应用:水平分析法
https://zhuanlan.zhihu.com/p/103264851
首先,以财务报表分析为例,介绍通用的分析方法论,整体架构如下图所示:

(点击查看大图)
接下来我会围绕这五种不同的方法论,进一步的阐述他们在 PowerBI 中的应用,本文先谈一下水平分析法的应用。
01 | 水平分析法
水平分析法,指将反映企业当前状况的信息与前期或历史某一时期财务状况的信息进行对比,研究企业各项经营业绩或财务状况的发展变动情况的一种财务分析方法。
①绝对增减变动
同比环比
可以适用在收入、成本、利润、费用、税金缴纳、应付周转、应收周转、库存周转、资金周转等分析中
涉及的常用DAX函数
DATEADD
按指定的间隔移动给定的一组日期
DATESBETWEEN
返回两个给定日期之间的日期
DATESINPERIOD
返回给定期间中的日期
DATESMTD
返回此月份中截至当前日期的一组日期(QTD/YTD)
SAMEPERIODLASTYEAR
返回上一年度中当前选择的一组日期
示例
首先创建度量值,验证数据准确性
销售利润 =SUM('订单'[利润])上年销售利润 =CALCULATE('度量值'[销售利润],DATEADD('日期'[日期],-1,YEAR))利润差异 = [销售利润]-[上年销售利润]

并用图表展示出变化的趋势。

从上图可以看出17-18年,利润增幅14.9万,但18-19年利润增幅则只有6.2万,较18年增幅减少。
那究竟是什么原因呢?我们继续向下看。
先来看下是否是收入的影响。
创建度量值
销售收入= SUM('订单'[销售额])上年销售收入 =CALCULATE('度量值'[销售总额],SAMEPERIODLASTYEAR('日期'[日期]))收入差异 = [销售收入]-[上年销售收入]


我们可以看出,19年收入涨幅为124万,大于18年涨幅80万,那为什么19年利润涨幅下降了呢,需要进一步寻找原因?
是成本增加了,还是费用增加了,还是其他因素影响,我们也可以通过使用同样的方式对其他影响因素进行对比分析,寻找影响利润原因。
说明:上面两个差异变化图中16年因是第一年,所以变化是不准确的,这也是需要调整的地方,第一年应为零。
②增减变动率
在某些情况下,绝对增减变动不能反映分析的可比性,那就要借助增减变动率;
例如:两公司的利润情况对比,因环境、体量差异,那他的绝对值可比性就会下降,但对应的比率对比则依然具有可比性.
涉及的常用dax函数:
DIVIDE
能够处理分母为零的情况 ,也被称为Safe Divide 函数
创建度量值:
利润增长变化率 = DIVIDE([利润差异],[上年销售利润])
收入增长变化率 = DIVIDE([收入差异],[上年销售收入])
首先通过下图的利润增长变化率也可以得出我们在前面使用绝对值对比的方法得出的结论,但使用变化率的对比,则剔除掉了基期16年数据的影响,对比下,使用变化率进行分析则更有效。
其次通过收入增长变化率情况,可以更清晰的看出19年收入增长比率为29.26%,而利润增长幅度只有9.97%。
显然利润增长幅度变缓,不是收入的影响,那是什么吞噬掉了利润?需进一步对其他因素进行分析。


瀑布图展示收入和利润的变动情况
今天的内容就暂时写到这里,水平分析方法在分析中可以应用到很多地方,具有很广泛适用性,接下来我将继续分享其他几种方法的使用,希望可以把这些方法灵活的与PowerBI相结合,应用到我们的工作中。
数据可视化之分析篇(七)Power BI数据分析应用:水平分析法的更多相关文章
- 数据可视化之PowerQuery篇(十四)产品关联度分析
		
https://zhuanlan.zhihu.com/p/64510355 逛超市的时候,面对货架上琳琅满目的商品,你会觉得这些商品的摆放,或者不同品类的货架分布是随机排列的吗,当然不是. 应该都听说 ...
 - 数据可视化之PowerQuery篇(十三)Power BI总计行错误,这个技巧一定要掌握
		
https://zhuanlan.zhihu.com/p/102567707 前一段介绍过一个客户购买频次统计的案例: Power BI 数据分析应用:客户购买频次分布. 我并没有在文章中显示总计行 ...
 - 数据可视化之分析篇(六)使用Power BI进行流失客户分析
		
https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...
 - 数据可视化之PowerQuery篇(十六)使用Power BI进行流失客户分析
		
https://zhuanlan.zhihu.com/p/73358029 为了提升销量,在不断吸引新客户的同时,还要防止老客户离你而去,但每一个顾客不可能永远是你的客户,不可避免的都会经历新客户.活 ...
 - 数据可视化之分析篇(八)Power BI数据分析应用:结构百分比分析法
		
https://zhuanlan.zhihu.com/p/113113765 PowerBI数据分析02:结构百分比分析法 作者:海艳 结构百分比分析法,又称纵向分析,是指同一期间财务报表中不同项目间 ...
 - 数据可视化之PowerQuery篇(十七)Power BI数据分析应用:水平分析法
		
https://zhuanlan.zhihu.com/p/103264851 本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之一,她深入浅出的介绍了PowerBI ...
 - 第二篇:Power BI数据可视化之基于Web数据的报表制作(经典级示例)
		
前言 报表制作流程的第一步显然是从各个数据源导入数据,Power BI能从很多种数据源导入数据:如Excel,CSV,XML,以及各类数据库(SQL Server,Oracle,My SQL等),两大 ...
 - 第一篇:Power BI数据可视化概述
		
前言 "可视化之工具,可爱者甚蕃.统计学家独爱R,自Python来,世人盛爱matplotlib.余独爱Power BI之出微软而不染(免费),濯Office而不妖(够精简).......& ...
 - 数据可视化之 图表篇(四) 那些精美的Power BI可视化图表
		
之前使用自定义图表,每次新打开一个新文件时,都需要重新添加,无法保存,在PowerBI 6月更新中,这个功能得到了很大改善,可以将自定义的图表固定在内置图表面板上了. 添加自定义图表后,右键>固 ...
 
随机推荐
- 列表、元组、字典和简单if语句【python实验1】
			
第一次实验报告: 学生姓名 总成绩 tom 90 jack 89 john 96 kate 86 peter 100 实验内容3-1 建立两个列表分别对学生的姓名和总成绩信息进行存储 name=['t ...
 - 如何解析json格式的字符串
			
package com.json; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impor ...
 - 囚徒问题(100 prisoners problem)的python验证
			
密码学课上老师介绍了这样一个问题,囚徒问题(100 prisoners problem):一百个囚徒被关在牢房里,典狱长给他们最后一次机会,100人依次进入一个有100个抽屉的牢房,每个抽屉置乱放入1 ...
 - 如何在VMware虚拟机中安装CentOS6.7系统(下篇)
			
上一篇文章讲到了CentOS6.7的安装教程,安装步骤到时区选择这块了,这篇文章接上篇文章,继续讲述CentOS6.7的安装教程,直至安装完成. 17.设置root的登录密码,日后登录虚拟机,用户名就 ...
 - Windwos安装Redis
			
下载地址:https://github.com/MicrosoftArchive/redis 进入后点击release,下方可看到下载地址,下载mis文件,双击即可安装
 - Java深拷贝和浅拷贝的区别
			
浅拷贝 被复制的对象的所有的变量都与原对象有相同的值,而所有的引用对象仍然指向原来的对象.换言之,浅拷贝 不复制引用对象. 1 class Experience { 2 private String ...
 - trollcave解题
			
这是第一次完整地进行模拟渗透,前前后后一共花了一天时间,花了点时间写了个writeup. 博主是个菜鸡,如果有大神看到,请轻喷...... writeup下载:https://hrbeueducn-m ...
 - 如何下载 Ubuntu 镜像文件?
			
Ubuntu,是一款基于 Debian Linux 的以桌面应用为主的操作系统,内容涵盖文字处理.电子邮件.软件开发工具和 Web 服务等,可供用户免费下载.使用和分享. 但是对于国内的用户来说如果直 ...
 - python黑帽子之udp客户端
			
将上文的TCP客户端简单修改便能得到UDP客户端 import socket target_host = "127.0.0.1" target_port = 80 client = ...
 - egret.sys.TextNode
			
class Test extends egret.Shape{ protected textNode:egret.sys.TextNode; constructor(){ this.width = t ...