Power BI学习(数据可视化)
2)对象可以拉到合适的位置。然后,选择对象 --选择“可视化”的“地图”3.在数据页面,新建一个某几列数据合在一起计算的列。法三:柱形图、饼状图(其他的图形根据需要选取)选择表,右键--新建列--输入公式--确认。3)将数据表中的门店的国家字段拉入地图中。然后点击上图的“焦点模式”模式。2.查看导入的表之间的关系。4.查看门店分布及销售情况。1)插入--新建视觉对象。1.导入execl数据。2.选
另一个也可以的工具是: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
根据自己的需要进行优化
上面中文的分词不大好用,可以用Python进行分词,再导入词云显示
6.雷达图
获取更多视觉对象--Radar Chart
7.卡片图
显示某个度量值(具体看下面的“四 数据建模”的“新建度量值”部分)
8.文本
9.筛选器
9.1视觉筛选器
选中视觉对象,进行筛选
9.2页面级筛选器
不选中任何视觉对象,将要筛选的字段拖入页面级筛选器中,那么每一个报表都会被筛选
10.帕累托图
10.1 先建个表(我命名为“省销量表”)对分组进行统计
省销量表 = SUMMARIZE('xx2024_info - 副本','xx2024_info - 副本'[province],"销售额",SUM('xx2024_info - 副本'[price]))
10.2 计算累计百分比
累计百分比 = SUMX(FILTER('省销量表',EARLIER('省销量表'[销售额])<='省销量表'[销售额]),'省销量表'[销售额]/SUM('省销量表'[销售额]))
10.3 折线和堆积柱形图
11.切片器
切片器其实就是另一种筛选器
11.1 创建切片器
方式:点击画布空白位置--“可视化”选择“切片器”
11.2 切片器效果
勾选不同的选项(按住 Ctrl 键选择多个名称),对应模块会跟着改变
11.3 选择不受切片器影响的视图
选择切片器--格式--编辑交互:不受切片器影响的视图右上角选择“无”
画布
美化视图
共享
先发布到power bi 工作区,然后共享(需要账号升级才可以共享)
权限编辑
四 数据建模
(1)管理关系
可以删掉默认的关系,新建自己的关系
a.不同表之间的字段匹配
产品名称 = LOOKUPVALUE('product'[product_name],'product'[product_id],'sales_fact_1997'[product_id])
结果
b. 关联表
多端找一端:RELATED函数
一端找多端:RELATEDTABLE函数
列1 = RELATED('product'[product_name])
(2)新建表
如果要新建表,不要直接用“新建表”的功能,而是通过空白查询的方式(主页--获取数据--空白查询--输入数据--添加表名--确定)
以下是新建一张名称为“度量值表”的表(为了方便下面第(4)步的操作,所以取名“度量值表”,也可以根据自己的需要命名)
创建完记得“关闭并应用”
然后,在数据中可查看到新建的表
(3)新建列
最好是用新建度量值,而不用新建列(列会占内存,度量值不会)
(4)新建度量值
DAX函数大全
-
常用函数
a. 迭代函数
函数 | 作用 |
SUMX('表',算术表达式) | 求和 |
AVERAGE('表',算术表达式) | 平均值 |
AVERAGEX('表',算术表达式) | 算术平均值 |
MAXX('表',算术表达式) | 最大值 |
MINX('表’,算术表达式) | 最小值 |
COUNTX('表',算术表达式) | 记录数 |
COUNTAX函数('表',算术表达式) | 计算列中单元格不为空的数目 |
PRODUCTX('表',算术表达式) | PRODUCTX('表',算术表达式) |
b. 计算函数
FILTER 的表,必须是维度表,唯一表。
Filter 常用方法:
1.搭配Calculate
Calculate(表达式(度量值),Filter('表名',筛选条件))
在Calculate函数中的直接筛选条件里,我们只能输入:
‘表'[列]= 固定值 或 ‘表列1<>固定值
‘表'[列]>= 固定值 或 ‘表’[列]<=固定值‘表[列]>固定值 或 ‘表[列]<固定值
但是遇到如下情况,就要使用Filter函数
[列]=[度量值]、[列]=公式、[列]=[列]
[度量值]=[度量值]、[度量值]=公式、[度量值]=固定值
c. 日期函数
函数 | 作用 |
YEAR(日期) | 返回年(四位数) |
MONTH(日期) | 返回月 |
DAY(日期) | 返回日 |
QUARTER(日期) | 返回季度 |
WEEKDAY(日期) | 返回星期几(一周的第几天) |
WEEKNUM(日期) | 返回第几周 |
EDATE(日期,num) | 返回num月后的日期 |
EOMONTH(日期,num) | 返回往后推num月的月底的日期 |
DATEDIFF(data1,data2,interval) | 返回两个日期之间的间隔 |
DATESYTD(Dates) | 返回此年中截止当前日期的一组日期 |
DATESMTD(Dates) | 返回此月份中截止当前日期的一组日期 |
DATESQTD(Dates) | 返回此季度中截止当前日期的一组日期 |
DATEADD(Dates,NumberOfIntervals,Interval) | 按指定的间隔移到给定的一组日期 |
计算累加值:
计算累计有两类常用的时间智能函数:
1. DATESYTD 为代表的返回日期值的表函数(不推荐)
DATESYTD (<Dates>,[<YearEndDate>])
2. TOTALYTD 为代表的返回标量值的函数(推荐)
总销售= sum('表'[销售])
年初至今=TOTALYTD([总销量],'表'[日期])
TOTALYTD (<表达式>,<日期列>,[<筛选器>],[截止日期])
参数 | 属性 | 描述 |
TOTALYTD (<表达式>,<日期列>,[<筛选器>],[截止日期]) | 返回标量值的表达式 | |
日期列 | 包含日期的列 | |
筛选器 | 可选 | 应用于当前上下文的筛选器参数,可以是布尔表达式或表表达式 |
截止日期 | 可选 | 带有日期的文本字符串,用于定义年末日期,默认值为12月31日 |
计算本年的年初至今(YTD)、季初至今(QTD)和月初至今(MTD)
总销售= sum('表'[销售])
年初至今=TOTALYTD([总销售],'表'[日期])
年初至今1= TOTALYTD([总销售],'表'[日期],FILTER('表','表'[销售]<50))
年初至今1=TOTALYTD([总销售],'表'[日期],FILTER('表','表'[销售]<50),"03/31")
DATEDIFF
-
函数运用
<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
<4>时间函数
- 年
first_opened时间筛选 = YEAR('mayfood store'[first_opened_date])
- 季度
first_opened时间筛选 = QUARTER('mayfood store'[first_opened_date])
- 第几周
- 返回往后推num月的月底的日期
- 两个日期之间的间隔
DATEDIFF('mayfood store'[first_opened_date],'mayfood store'[last_remodel_date],YEAR)
- 按指定的间隔移到给定的一组日期
= CALCULATE(SUM('order'[sales]),DATEADD('order'[year],-1,YEAR))
- 计算同比、环比(DIVIDE函数)
同步增长率:(今年第N月-去年第N月)/去年第N月
环比增长率:连续两个单位周期的比较,比如 N月-[N-1月]/[N-1月]
同比增长率 = DIVIDE('度量值表'[总sale]-'度量值表'[上一年sale],'度量值表'[上一年sale])
(5)分组
结果:
更多推荐
所有评论(0)