另一个也可以的工具是: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 计算累计百分比

有关EARLIER()详解

累计百分比 = 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)分组

 

结果:

Logo

永洪科技,连续七届荣获BI第一名的数据技术厂商,提供数据/智能分析、数据资产及治理、实施等能力。

更多推荐