另一个也可以的工具是:Tableau
还有一个是:神策,主要是用于互联网的app的数据埋点
数据分析的过程:
数据源--数据清洗(power query)-构建指标 新建度量值(power pivot)-可视化(power view)-报表完成
我使用的PowerBI版本
一 获取数据
1.连接MySQL数据库
如果要连接MySQL,那么在MySQL安装路径下要安装mysql-connect-net,(我是本地电脑,如果数据库在服务端,那么需要放在服务端)下载地址MySQL :: Download MySQL Connector/NET (Archived Versions)
双击安装后
powerBI主页--获取数据--更多--数据库--MySQL数据库
输入数据库和用户后,就可以获取数据库的数据了
2.导入execl数据
导入后,可以查看表之间的关系
二 操作数据(数据清洗)
主页--转换数据--转换数据
打开的是Power Query编辑器
可以编辑数据的类型,行列转换,增删列,提取,分组等操作
设置完即可"关闭并应用"
三 数据可视化
下面的新建列操作是数据建模的一部分:
在数据页面,新建一个某几列数据合在一起计算的列
选择表,右键--新建列--输入公式--确认
1. 地图
比如:查看门店分布及销售情况
1)插入--新建视觉对象
2)对象可以拉到合适的位置。然后,选择对象 --选择"可视化"的"地图"
3)将数据表中的门店的国家字段拉入地图中
把销售额也拉入地图中,最后效果如下:
然后点击上图的"焦点模式"模式
2.着色地图
1.新建视觉对象
2.选择"着色地图"
3)拉入国家和销售额
3. 柱形图、饼状图
4. 矩阵(透视表)
不同产品在不同国家的销售额
设置视觉对象格式,可以优化透视表
美化后效果:(若设置字体大小,搜索"大小",然后进行设置)
5.词云
获取更多视觉对象--word cloud
根据自己的需要进行优化
6.雷达图
获取更多视觉对象--Radar Chart
四 数据建模
(1)管理关系
可以删掉默认的关系,新建自己的关系
(2)新建表
如果要新建表,不要直接用"新建表"的功能,而是通过空白查询的方式(主页--获取数据--空白查询--输入数据--添加表名--确定)
以下是新建一张名称为"度量值表"的表(为了方便下面第(4)步的操作,所以取名"度量值表",也可以根据自己的需要命名)
创建完记得"关闭并应用"
然后,在数据中可查看到新建的表
(3)新建列
最好是用新建度量值,而不用新建列(列会占内存,度量值不会)
(4)新建度量值
常用函数
a.迭代函数
|----------------------|---------------------|
| 函数 | 作用 |
| SUMX('表',算术表达式) | 求和 |
| AVERAGE('表',算术表达式) | 平均值 |
| AVERAGEX('表',算术表达式) | 算术平均值 |
| MAXX('表',算术表达式) | 最大值 |
| MINX('表',算术表达式) | 最小值 |
| COUNTX('表',算术表达式) | 记录数 |
| COUNTAX函数('表',算术表达式) | 计算列中单元格不为空的数目 |
| PRODUCTX('表',算术表达式) | PRODUCTX('表',算术表达式) |
b. 计算函数
FILTER 的表,必须是维度表,唯一表。
Filter 常用方法:
1.搭配Calculate
Calculate(表达式(度量值),Filter('表名',筛选条件))
在Calculate函数中的直接筛选条件里,我们只能输入:
'表'[列]= 固定值 或'表列1<>固定值
'表'[列]>= 固定值或'表'[列]<=固定值'表[列]>固定值或'表[列]<固定值
但是遇到如下情况,就要使用Filter函数
[列]=[度量值]、[列]=公式、[列]=[列]
[度量值]=[度量值]、[度量值]=公式、[度量值]=固定值
运用
<1> 新建度量表
为了统一管理度量值,可以新建一张"度量值表",根据上面(2)操作中的方法
比如要计算store_cost的平均值,那么就新建一个度量值(表工具--新建度量值)。
<2> 使用AVERAGE函数(平均值)
点击"度量值表",右键"新建度量值"
store_cost平均值 = AVERAGE('mayfood sales_fact_1998'[store_cost])
注意:这时候查看度量值时,页面不会有任何的显示
在报表试图中,新建视觉对象,选择"表格",拉入度量值,就可以看出结果
增加门店Id维度
<3> 使用Calculate函数(条件语句)
比如筛选store_cost大于其平均值的数据,并对其进行平均值计算
同样使用度量值
步骤一:筛选store_cost大于其平均值的数据
Filter('表名',筛选条件)
FILTER('mayfood sales_fact_1998','mayfood sales_fact_1998'[store_cost]>=AVERAGE('mayfood sales_fact_1998'[store_cost]))
步骤二: 使用Calculate函数
Calculate(表达式(度量值),Filter('表名',筛选条件))
store_cost大于平均值 = CALCULATE(AVERAGE('mayfood sales_fact_1998'[store_cost]),FILTER('mayfood sales_fact_1998','mayfood sales_fact_1998'[store_cost]>=AVERAGE('mayfood sales_fact_1998'[store_cost])))
增加城市维度
更多筛选条件
A.
多个筛选条件 = CALCULATE(AVERAGE('mayfood sales_fact_1998'[store_cost]),FILTER('mayfood sales_fact_1998','mayfood sales_fact_1998'[store_cost]>=AVERAGE('mayfood sales_fact_1998'[store_cost])),'mayfood sales_fact_1998'[store_id] = "1")
B.
CALCULATE(AVERAGE('mayfood sales_fact_1998'[store_cost]),FILTER('mayfood sales_fact_1998','mayfood sales_fact_1998'[store_cost]>=AVERAGE('mayfood sales_fact_1998'[store_cost])),'mayfood sales_fact_1998'[store_id] in {1,12})
如果in{}里面是文本,那么应该加双引号" "
C. 如果是排除某几个,则用not
(5)分组
结果: