之前所有的讲解都是基于每个模块的,使得读者对bi的整体认识有些许模糊,这里正好在做一个bi报表,正好用来整体的讲解bi的应用。
首先,看最终的演示:
Power BI 财务报表
无法观看请直接访问源视频
这是一个相对简单的报表,所谓的简单是指数据不多,不需要复杂的建模就可以实现。虽然这个示例简单,但是也涉及到了bi中的很多功能,包括数据处理、数据可视化、报表设计等,而这里面的知识点就更多了,我们在应用中,会用到如下知识:
正所谓‘巧妇难为无米之炊’,我们既然要制作报表,就必须先有数据,所以我们先获取和处理数据。
关于BI加载数据和PQ数据处理的知识,不懂得可以参考之前的文章Power BI----数据处理,这里只讲解更加细节的东西。
原始数据已经加载,但是还不够我们完成这个设计,对于某些数据,需要我们自己创建数据,比如下图中的KPI切片器的数据:
占比指标表 = DATATABLE(“KPI”,STRING,{{“促销费”},{“利润”},{“平台费”},{“推广费”},{“货物成本”},{“运费”},{“退款”},{“销毁成本”}})
说明:1.函数DATATABLE,构建一个表
2.第一个参数:是列名
3.第二个参数:数据类型(要构建的这一列数据的类型)
4.若构建多列,则直接在后面写列名和类型
5.{}里面的是数据,同一行的数据在一个{}中,所有数据在{},也就是两层
很多时候,静态的图表无法满足我们的需求,还需要引入动态分析,通过调节某个维度的增减变化来观察对分析结果的影响,这也正是Power BI中参数的作用。
在PowerBI Desktop中,在“建模”选型卡下,点击“新建参数”,具体如下图:
新建的参数会以切片器的形式出现在报表中,样式如下,它的本质也是一个表,在视图下可以查看:
数据准备好之后,就开始构建需要的度量值,度量值的创建和DAX的基础知识查看之前的文章,DAX讲解,
这里只讲解一些重要的指标公式。
TOP N在日常报表中很常用,效果如下,后面给出TOP N的实现方法。
实现TOP N的度量值构建
top_地区 = CALCULATE([总销售额],FILTER(VALUES(‘cj_bysum’[地区]),[地区排名]<=[参数 值]))
地区排名 = RANKX(all(cj_bysum[地区]),[总销售额])
说明:1.第一个度量值创建top N,第二个度量值创建辅助,
2.rankx函数:第一个参数是表,第二个参数是表达式。这里计算每个地区的销售额在所有地区中的排名
3.FILTER函数:筛选出排名小于参数值的地区
4.CALCULATE函数:结合筛选的地区,展示销售额,达到top N的效果
说起环比数据,很多人第一时间想到的就是智能函数DATEADD,但是改函数有个缺陷,当时间不连续时,就会计算出错,很巧,我的销售数据就是人员离职等情况,导致数据时间不连续,那如何计算环比呢?接着看下面的公式:
说明:
1.最近月的利润,很好算,就是日期最大月份的利润
2.往前推一个月:这里使用两个filter嵌套,出去原本最大月的剩下月份的最大值,这样就不管连续不连续了
3.iferror函数:当出现错误时,用0代替
为了节省报表空间,使得一页尽可能展示更多的信息,常常使用如下的方式,通过切片器点选想要查看的指标,在同一个图表位置展示多个指标。
上述效果时使用了SWITCH函数实现,该函数作用相当于一个开关,当达成条件就打开一个灯,代码如下:
说明:
1.SELECTEDVALUE(‘占比指标表’[KPI]):选取之前建的kpi表制作的切牌器的值
2.“促销费”,[FBA促销费占比]:当切片器选中促销费时,调用[FBA促销费占比]度量值
3.其他类似上面,选择的值不同,返回的数据也不同,达到上述的效果
前两部分完成之后,就是报表的设计和图表的美化了,美化这个因人而异,有人喜欢简约有人喜欢花里胡哨,这里只讲解一些个技巧型设计。
从最上面的视频中,可以看到,不管是主页跳到其他页,还是通过点击上面的导航栏,都可以实现页面的跳转,这种效果的实现就是通过按钮和书签完成的。下面介绍具体的操作:
关于这部分的内容,前面的文章已经讲解,这里不再赘述,有需要的可以参照前文设置。
BI中切片器的使用
这里对创建时的之一事项做一个讲解,如下:
要是还不会设置,看下面两个图,看看展开和隐藏的时候图层变化和书签变化:
隐藏的时候:
展开的时候:
在BI报表中,或多或少都是会使用到表的,表格其实就是excel中的表格样式,同样的,这里的表格也可以设置和excel中一样的,各种复杂且好看的样式,如下:
上面的样式只是个例子,可以设置更加适合样式,这里是演示,实现方法如下:
好看的主页背景,可以使得报表更美观,所以这里提一下背景的设置。
上图中,就是设置背景的地方了,匹配模式一般选择匹配度,更加自然。这里有个画布的概念,要和壁纸分开,壁纸是整个界面的背景,而画布是你可以放视觉对象的区域,如果不是特意的调整,画布会比壁纸小。