前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用PowerBI分析上市公司财务数据(二)

用PowerBI分析上市公司财务数据(二)

作者头像
公众号PowerBI大师
发布2019-10-28 18:03:18
3.9K0
发布2019-10-28 18:03:18
举报
前面在“用PBI分析上市公司财务数

那么如何才能建立合理模型呢?

笔者认为要具备以下条件:一是理解业务数据,知道主要分析的指标及潜在的报表分析需求;二是对DAX表达计算逻辑、特性有一定的了解。

题外话:

EXCEL中最难的函数可能就是查找引用函数了,如vlookup,index,match,lookup等,特别这些函数的数组用法,如果涉及到三维引用,大部分人都会弄晕,可能一个公式半天都弄不明白,也许好不容易弄明白了,过段时间又忘记了。不过这些在PBI中将不会存在,PBI将通过模型的建立,表与表之间的关联不再与数据呈现的物理位置有关,只需要理解“上下文”这个概念。

言归正传,下面来讲下如何建立模型:


第一步:分析数据特点

从数据的结构来讲,上市公司历年的财务报表,数据关系还是比较简单的,但是,数据也有其特点,如果没有财务基础知识的话,可能在写度量值时会犯一些错误。

首先要清楚:资产负债表是一类,利润表和现金流量表属另一类!

资产负债表是时点数据,它实际上是反映公司自成立以来每个时点资产负债情况,如果在后面度量值写成=SUM(资产负债表项目),那这个度量值在一个时间段内将毫无意义,因为把各个时点的数据直接相加,没有实际意义。

利润表和现金流量表则是时期数据,是反映一个时间段内收入、利润、现金流量变化的数据,但是由于利润表和现金流量表是本年累计数,即报表日期中2019年3月31日是指1-3月累计数,2019年6月30日是指1-6月累计数,由于这个原因,直接写度量值=SUM(利润)可能也没有意义,但SUM(利润)在一季度、二季度、三季度、四季度单独的筛选下又有意义,比如筛选一季度数据,则SUM(利润)代表所有年份一季度利润的合计。

第二步:确定分析维度

首先,时间公司名称这两个维度是必须,也很容易发现。但是后面报表科目应该怎么处理呢?其实我们能够发现,后面的报表科目其实也是一个维度,按照“用PBI分析上市公司财务数据(一)”处理完成后的数据,其实是一个二维表.

如果后续导出到EXCEL使用,或是直接打印出来阅读,或是用来做某几个指标的数理统计分析,这类二维表是合适的,但如果需要在PBI中分析,呈现更细致的微观分析报告,那么需要对数据进行降维处理,也就是要将后面的科目列进行逆透视操作。具体操作如下:

在PQ编辑器中对查询生成的资产负债表选择除公司代码、报告日期之外的其他列后右击,选择逆透视列,完成后更改下列名,如下:

利润表和现金流量表也按这样操作,最后三张财务报表列数完全相同,都是四列,分别为公司代码、报告日期、科目、值。为了后续能够最大限度实现度量值的复用,维护简单,我们可以接下来将这三张表合并:选择这三张表

然后在功能区中选择追加查询=》将查询追加为新查询

最后,将生成的本表改名为财务报表。

虽然分析维度可以在模型建立后反复修改或添加,但由于分析维度对模型建立影响较大,因此,模型建立初最好要确定主要的分析维度


第三步:确定分析模型所需的表, 并设定表与表之间的关系

根据上面第二步分析得知,我们至少要有三个维度表,即时间、公司、科目维度表,有了这三个维度表后,我们就可以在后面分析中根据这些维度对数据进行切片计算。

1、建立时间表/日期表

由于待分析的财务报表数据中,日期字段仅一个即报表日期,因此建立日期表我们无需考虑过多因素,直接用DAX函数 calendarauto()建立,该函数直接扫描现有模型中的日期,自动建立涵盖现有日期字段的日期表。

具体操作如下:点击建模=》新表 ,输入 :日期表 = CALENDARAUTO()

这时模型中自动生成了Date 字段 ,然后依次点击新建列 分别建立以下字段:

年 = YEAR([Date])

季度 = ROUNDUP(MONTH([Date])/3,0)

季度名称 = "Q"&[季度]

年季名称 = [年]&[季度名称]

在自动生成的日期建立这些字段主要是便于后期筛选和计算。

2、 建立公司维度表

公司维度表,即待分析的公司基本信息,在“用PBI分析上市公司财务数据(一)”中其实就已经在上交所网上得到了相关的数据,如下:

我们把它单独保存一张表,以便形成后续在公司维度上进行。

3、 建立科目维度表

通过前面的分析,我们还需要一张表科目信息表用来关联财务报表数据,由于科目维度信息表比较固定,更新次数少,我们可以先在EXCEL中手工维护好后导入PBI中。我们将科目维度表整理成以下样式,其中科目对照列是用来与财务报表建立关联的列

这里需要注意:由于科目对照列是主键,需要值唯一,由于现金流量表中的补充资料用到了部分利润表及资产负债表项目,导致值重复,为了实现值唯一,还需要对现金流量表的项目特殊处理,如下:

在PQ中选择现金流量表科目列=》在功能区选择转换=》格式=》添加后缀

这个后缀可以随便加,主要是为了和利润表、资产负债表区分,保证唯一,不过为了美观,我建议加了一个人眼看不出来的字符,但计算机又视为不同,经测试下面这个字符符合要求,字符代码为127

我们把这个字符复制后粘贴到下面输入框中,确定后即更新后完成整理。

同样,我们也在科目维度表中有关现金流量表科目的后面增加这个字符。

考虑到原来的科目中每个都有万元,直接显示显示出来不好看,因此,我们增加一列用来在报表可视化中显示出来的名称即项目名称列,为了让显示出来的项目显示出层级,更加好看,可以在项目名称的前后增加这个字签,模拟缩进效果,(该字符在查询时可见,在可视化时不可见)如下:

另外,考虑到科目显示排序的问题,我们由PQ自动生成一列索引列。同时回到建模界面,将项目名称设置按列排序=》索引

最后,我们将日期表、公司信息表、科目维度表,财务报表 这四张表建立如下关系。


第四步:编写度量值

先编写一个基础度量值:

值合计 = SUM('财务报表'[值])

1、资产负债表项目

资产负债表项目我们一般是分析期初和期末金额及结构的变化,因此我们需要建立以下度量:

(1)期末金额

代码语言:javascript
复制
期末 =
VAR EndDate=MAX('日期表'[Date])
//取得所选日期的最大值
VAR EndAmount=CALCULATE([值合计],
   '日期表'[Date]=EndDate)
//计算期末金额
return
  IF(EndAmount=0,BLANK(),EndAmount)
//隐藏项目金额为0的科目

(2)年初金额

代码语言:javascript
复制
期初 =
VAR CURyear=MAX('日期表'[年])
VAR beginAmt=CALCULATE([期末],
  FILTER(ALL('日期表'),
  '日期表'[年]=CURyear-1 
  && '日期表'[季度]=4))
return
    beginAmt

(3)变动金额

代码语言:javascript
复制
变动 = IF(ISBLANK([期末]),
          BLANK(),
          [期末]-[期初])

(4)变动率

代码语言:javascript
复制
变动率 = DIVIDE([变动],[期初])

(5)重点关注指标

代码语言:javascript
复制
期末流动比率 = 
DIVIDE(
 CALCULATE([期末] , 
   '科目表'[科目对照]="流动资产合计(万元)"),
 CALCULATE([期末] , 
   '科目表'[科目对照]="流动负债合计(万元)"))
代码语言:javascript
复制
期末资产负债率 = 
DIVIDE( 
  CALCULATE([期末] , 
  '科目表'[科目对照]="负债合计(万元)"), 
  CALCULATE([期末] , 
  '科目表'[科目对照]="资产总计(万元)"))
代码语言:javascript
复制
期末现金比率 = 
DIVIDE( CALCULATE([期末] , 
 '科目表'[科目对照] in
 {"货币资金(万元)","交易性金融资产(万元)"}), 
CALCULATE([期末] , 
'科目表'[科目对照]="流动负债合计(万元)"))

第五步,数据可视化

1. 资产项目,选择矩阵

依次将相关度量值,加入值,项目名称加入到行

同时将科目表的类型字段,加入到该矩阵的筛选器,并筛选资产

2. 负债项目与资产项目一样,可直接将矩阵复制一个,将筛选器改为权益

3、选择卡片图,依次将流动比率、现金比率、资产负债率用三个卡片图显示

4、将公司简称、年、季度名称分别加入到三个切片器

调整格式,效果如下:

本节主要介绍了如何建立一个简单模型的思路和方法,选取的也是相对简单的有关资产负债表项目的度量值编写,有关利润表和现金流量表的分析将在后续文章介绍

作者 张震 | 编辑 沐笙

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI大师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档