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

2019-12-03 15:29:03 浏览数 (1)

今天分享利润表相关度量值的编写及其可视化。

在用power bi 分析上市公司财务数据(二)中我们知道利润表的数据资产负债表数据有所不同,一般情况下,我们选择某月或某个季度,对利润表而言,往往首先是想知道在当月或当季下的值,由于我们获得到的财务报表是年累计数,因此,要想知道每个季度的值,需要用本年累计数减去本年至上个季度的累计数(一季度除外)。

有关度量值DAX表达式如下:

1、本年累计= IF([值合计]<>0,[值合计])

2、本期

代码语言:javascript复制
本期 = IF ( 
VALUES ( '日期表'[季度名称] ) = "Q1", 
  [本年累计],  
IF (ISBLANK ( [本年累计] ),   
  BLANK (),   
  [本年累计] - 
    CALCULATE ([本年累计],
      FILTER (ALL ( '日期表' ),
       '日期表'[季度] = MAX ( '日期表'[季度] ) - 1      
        && '日期表'[年] = MAX ( '日期表'[年] )   
       )//计算前一年季度的累计金额 
          )))

3、同比增长 = IF( ISBLANK([本期]), BLANK(), [本期]-[去年同期])

4、同比增长率

代码语言:javascript复制
同比增长率 = 
IF (
   ISBLANK ( [本期] ),
   BLANK (),
IF ( [去年同期] > 0, 
   DIVIDE ( [本期], 
   [去年同期] ) - 1, 
    1 - DIVIDE ( [本期], [去年同期] ) )
)//注意负数情况

接下来将这几个度量值加入矩阵,项目名称通过筛选,选择利润表的类型

通过格式调整我们得到这样一张利润表

由于这个矩阵项目较多,因此,可以提炼出一些关键项目,做成条形图,让读图者更容易抓住重点:

选择簇状条形图,将本期和项目名称加入到该可视化对象。

项目名称通过筛选器,适当筛选,选择一些主要的项目:

最后可得到如下条形图:

显然,这个条形图更容易发现,这家公司亏损主要是因为营业外支出导致的。

除了本期的数据及结构外,变化趋势也是一个重要的关注方面。

选择折线图

将日期表中的 Date作为横坐标轴,本期 作为值 加入该可视化对象,我们点击矩阵中利润表的项目,可以发现该趋势图会随我们点击的项目变化而变化,这个是PBI交互式响应的特点,但是,有两个明显的问题

一是如果没有点击利润表项目,则显示所有显示的汇总值,显然是没有意义的。

二是在切换利润表项目时,并没有标题指明是哪个项目的变化趋势,可能导致在演示时,不够直观。

要做图,先做表,其实所有的图背后都是一张数据表格,要形成这样的动态趋势图,目前主要缺少两个度量值,一是没有点击情况下的默认本期金额度量值,二是取得当前筛选下的利润表项目的度量值,下面编写这两个度量值,如下:

1、趋势图 本期

代码语言:javascript复制
趋势图 本期 =
IF (
    HASONEVALUE ( '科目表'[项目名称] ),
    [本期],
    CALCULATE ( [本期], 
    '科目表'[项目名称] = "营业总收入" )
)

2. 趋势图 标题

代码语言:javascript复制
趋势图 项目标题 =
CONCATENATE (
    IF ( HASONEVALUE ( '科目表'[项目名称] ), 
    VALUES ( '科目表'[项目名称] ),
     "营业总收入" ),
    "变化趋势"
)

我们把趋势图 本期替换原来那个度量,并把趋势图 项目标题这个度量值用卡片图设置,最后可得到如下趋势图:

当我点击矩阵中的利润表项目,标题和趋势图都会自动变化。

最后,为了丰富报表,我们可以再建立几个关键的指标用卡片图显示出来

如:

销售净利率

代码语言:javascript复制
销售净利率 =
DIVIDE (
    CALCULATE ( [本期], 
  '科目表'[科目对照] = "净利润(万元)" ),
    CALCULATE ( [本期], 
   '科目表'[科目对照] = "营业总收入(万元)" )
)

毛利率

代码语言:javascript复制
毛利率 =
DIVIDE (
   CALCULATE ( [本期], '科目表'[科目对照] = "营业总收入(万元)" )
  - CALCULATE ( [本期], '科目表'[科目对照] = "营业成本(万元)" ),
 CALCULATE ( [本期], '科目表'[科目对照] = "营业总收入(万元)" )
)

期间费用率

代码语言:javascript复制
期间费用率 =
DIVIDE (
   CALCULATE ( [本期], '科目表'[科目对照] 
   IN { "销售费用(万元)", 
   "管理费用(万元)", 
   "财务费用(万元)" } ),
   CALCULATE ( [本期], 
     '科目表'[科目对照] = "营业总收入(万元)" )
)

通过调整格式,一个简单的利润表项目分析仪表就完成了。

当然,利润表分析相关的指标还很多,如这里只有本期数,没有本年累计数,也没有结构百分比指标(各项目占收比)等。为了简化教程,这里不再阐述,原理和上面一样,大家可以自行探索。

0 人点赞