也是最近有个需求业务,恰好必须使用powerBI,所以这里就记录一下powerBI的探索过程
想看官网文档的 点击此处
1. 什么是powerBI
Power BI 是软件服务、应用和连接器的集合,它们协同工作以将相关数据来源转换为连贯的视觉逼真的交互式见解。 数据可以是 Excel 电子表格,也可以是基于云和本地混合数据仓库的集合。 使用 Power BI,可以轻松连接到数据源,可视化并发现重要内容,并根据需要与任何人共享。
我自己理解的意思就是,将各种来源的标准格式数据,如mysql表,excel表里面的数据导入到powerBI里面,通过这个软件,将复杂的数据转化成以各种图表的方式展现出来。
Power BI 包含 Windows 桌面应用程序(称为Power BIDesktop)、联机SaaS(软件即服务)服务(称为Power BI 服务),及移动 Power BI应用(可在 Windows 手机和平板电脑及 iOS和Android 设备上使用)。
这三个元素 -Desktop、服务和移动,旨在使用户通过最有效的方式创建、共享和使用商业见解。如下图所示。
2. PowerBI客户端
上面大致介绍了powerBI,我们现在先讲讲其客户端,因为客户端是在我们使用powerBI中会经常使用到的,它可用于连接到数据、转换数据并实现数据的可视化效果。 使用Power BI Desktop,你可以连接到许多不同的数据源,并将其合并(通常称为建模)到数据模型中。 通过此数据模型,可生成视觉对象,以及可作为报表与组织内其他人共享的视觉对象集合。虽然其服务端也有大部分处理数据,建立图表的功能,但服务端主要是管理图表,数据集,发布等功能,如果想着重开发报表,还得是在客户端上。
Power BI Desktop 的最常见用途如下
- 连接到数据
- 转换和清除该数据,以创建数据模型
- 创建视觉对象,如提供数据的可视化表示形式的图表或图形
- 在一个或多个报表页上创建作为视觉对象集合的报表
- 使用 Power BI 服务与其他人共享报表
下面我就按照我得一个开发步骤介绍一下怎么使用power BI客户端的吧
2.1 连接数据源
进入客户端,通过 “主页” -> “获取数据” 可以选择需要导入的各种数据源,我这里用的是连接sqlServer数据库
点击 “连接” 就弹出了具体的连接界面,输入对应的信息,就会把你所有的表展示出来,这个时候你选择你需要处理的表就可以了
当选择了表之后,powerBI 会在数据页面展示导入的数据表,你就可以对这些数据进行各种处理,我一般就处理一下时间字段,或者判断字段,如下导入的期间字段不是标准的日期格式,想在powerBI里面以日期为维度进行筛选,就还要自己去新建列然后转换一下字段就可以了
接下来就可以到图表页进行图表的开发了,具体如下图,这个就不做过多的介绍了
2.2 度量值
这里单独写一下度量值的原因,是因为其重要性,在刚开始的时候也是有点懵逼,因为我需要在图表里面展示各种同比数据,环比数据,抵消总额数据等等,而这些数据是通过其它数据进行计算而得,我都差点写sql,通过sql计算这些值,然后连接数据库导进来了,但是多看看关于powerBI 的一些资料,就会发现度量值这个东西,其实就是Excel 的DAX函数,关于这个DAX的一些函数比较多,我就不过多介绍了,我就把我在整个开发中使用的列出来,供大家参考一下。
环比 = DIVIDE([成本-累计成本总额]-CALCULATE(成本-累计成本总额], DATEADD(‘DateDimension’[Date], -1, MONTH)),[成本-累计成本总额],0)
同比 = DIVIDE([成本-累计成本总额]-CALCULATE([成本-累计成本总额], SAMEPERIODLASTYEAR(DateDimension[Date])), [成本-累计成本总额],0)
成本-累计主营成本 = CALCULATE(
SUM(‘成本-基本查询’[amount_calculation]), FILTER(‘成本-基本查询’,[expend_type] in {“人工成本”,“其他成本”,“间接生产费用”,“原材料”})
)
生成日期表的
DateDimension = ADDCOLUMNS (
CALENDAR ( FIRSTDATE(‘收入-基本查询’[period_new]), LASTDATE(‘收入-基本查询’[period_new] )),
“年”, YEAR ( [Date] ),
“季度”, ROUNDUP( MONTH ( [Date] )/3,0 ),
“月”, MONTH ( [Date] ),
“周”, WEEKNUM([Date]),
“年季度”, YEAR ( [Date] ) & “Q” & ROUNDUP( MONTH ( [Date] )/3,0 ) ,
“年月”, YEAR ( [Date] ) * 100 + MONTH ( [Date] ),
“年周”, YEAR ( [Date] ) * 100 + WEEKNUM ( [Date] ),
“星期几”, WEEKDAY([Date])
)
新增列处理字段
收入类型关联 = IF( [acc_class] = “主营业务收入” && [relevany] =“关联”, “主营业务收入-G”, IF( [acc_class] = “主营业务收入” && [relevany] =“非关联”, “主营业务收入-3rd”,IF( [acc_class] = “其他业务收入” && [relevany] =“关联”, “其他业务收入-G”,IF( [acc_class] = “其他业务收入” && [relevany] =“非关联”, “其他业务收入-3rd”, “”))))
基本上就用到的这些函数,然后加上本身的筛选功能,已经可以做到大部分需求了
2.3 导入自定义视觉对象
powerBI里面的每个图表就是一个视觉对象,软件本身自带了很多,比如柱状图,折现图,散点图,饼图,地图等等等等,但是总有一些需求的图比较刁钻,这个就可以去找了
点击下面这两个地方就可以进入对应的商店
下面就是视觉对象的商店,里面有免费的,也有收费的,找到自己想要的添加进来就可以了
2.4 视觉对象使用
不管是导入的自定义视觉对象,还是软件自带的视觉对象,使用方法都是一样的,像我这里导入的旭日图,双击小图标之后就可以在左边的图表区看到该视觉对象的效果了,然后添加对应的数据字段,整个图表的的完整样子就出来了
2.5 发布
我们开发完整个图表之后就可以进行发布了,这个发布相当于存储到对应的服务端,发布很简单,通过 “主页” -> “发布” 随便点两下就好了
整个客户端开发流程就差不多这样
1. 连接数据源(可以不同数据源混搭,如mysql,oracle,excel这些多个数据来源)
2. 选择视觉对象(将数据拖入到视觉对象中去)
3. 发布
powerBI客户端还有角色管理,参数传入等等,这些也都比较简单,就不过多描述,有需要的朋友可以自行百度
角色管理:https://www.jianshu.com/p/bdd503cf6fe9
参数传入:https://www.cnblogs.com/qiu-hua/p/12788809.html
3. PowerBI服务端
差不多说完客户端,然后就是powerBI的服务端,服务端的作用基本上就是管理 数据集和图表集,也可以对相应的图表进行修改。Power BI 服务最重要的功能之一就是能够控制工作共享方式。 你可创建工作区,让你和你的同事能够在这里协作处理报表和仪表板。 然后,你可将它们捆绑成应用并进行分发。 你还可共享数据集本身,让其他人能够根据这些数据集自行创建报表。但是这些功能对孤独的开发者来说用处不大,用处比较大的还是发布成网站,供开发者嵌入自己的系统中使用。
4. 进阶操作
动态展示图表,具体效果就跟下面这个动态图效果展示一样,点击左边的切片器,右边的指标含义,指标公式,以及趋势图都要变化
首先建一个新的表数据,将要选择的都加上去,以该表的这个字段创建一个切片器就可以了
指标含义和指标公式在该表下面各创建一个新的度量值就可以了,具体DAX公式如下截图
部分公式如下
能力分析选择-指标公式 =
SWITCH(TRUE(),
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "权益资本利润率ROE", "权益资本利润率ROE= 税后净利润/0.5*(所有者权益总额期 初+所有者权益总额期末)",
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税后投入资本利润率ROIC (after tax)", "税后投入资本利润率ROIC (after tax)= 息前税后经营利润/0.5* (投入资本期初+投入资本期末)")
能力分析选择-指标含义 = SWITCH(TRUE(),
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "权益资本利润率ROE", "反映股东权益的收益水平,用以衡量公司运用 自有资本的效率。指标值越高,说明投资带来的 收益越高。该指标体现了自有资本获得净收益 的能力。",
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税后投入资本利润率ROIC (after tax)", "息前税后利润与投入资本的比例关系, 表示每元投入资本(包括股东的权益资 本和付息债务资本)所带来的利息和净 利润。指标越高,表示投入资本的盈利 能力越强。")
最后趋势图部分其实跟上面的差不多,只是把文本框换成了折线图,公式如下
能力分析选择 =
SWITCH(TRUE(),
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "权益资本利润率ROE", '利润-基本查询'[利润-权益资本利润率],
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税后投入资本利润率ROIC (after tax)", '利润-基本查询'[利润-税后投入资本利润率],
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税收总资产盈利力ROA (after tax)", '利润-基本查询'[利润-税后总资产盈利力],
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税前投入资本利润率ROIC (before tax)", '利润-基本查询'[利润-税前投入资本利润率],
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "税前总资本盈利力ROA (before tax)", '利润-基本查询'[利润-税前总资产盈利力],
SELECTEDVALUE('利润-盈利能力分析表'[分析类型]) = "销售利润率ROS", '利润-基本查询'[利润-销售利润率]
,'利润-基本查询'[利润-权益资本利润率])