1. Power BI数据清洗与规范
1. 数据规范
前言
1.1 数据规范
PowerBI数据需要遵循一下规范:✏️
- 数据由标题行(字段)和数据部分(记录)组成
- 数据表第一行是表的字段名称,不能重复
- "第二行起是数据部分,数据部分的每一行数据成为一条记录,
- 并且数据部分不允许出现空白行和空白列,数据要保持完整性"
- 一个单元格只记录一个属性数据,切勿复合记录,有一说一
- 数据表中不能有合并单元格存在
- 数据表需要以一维表的形式存储
备注:只有一维表才能做数据分析,二维表在分析前必须转换为一维表
1.2 二维表和一维表的区别

二维表:数据表中的数据,以列的形式存储,每一列代表一个属性,每一行代表一条记录
一维表:数据表中的数据,以行的形式存储,每一行代表一条记录,每一列代表一个属性
1.2.1 将二维表转换为一维表

步骤如下:
- 导入数据 NO.1 数据规范到PowerBI中,选择素材表,点击转换数据



逆透视其他列:将其他列的数据,转换成行数据,

好了,这样就可以将二维表转成一维表了
1.3 一维表转二维表

步骤:
将原始的excel表格导入到PowerBI中,点击转换数据,将第一行作为列名 👇

选中表,点击转换,选择透视列

在弹出的对话框中,选择是否完成,不要聚合

- 效果如下:👇

如果要数字,可以在第二个框中,选择计数
2. 日期时间格式处理
前言
3. 不规则数据处理
前言

这些数据在excel无法进行计算,因为或多或少存在一些不可见的数据,影响数据处理,但是导入到PowerBI中,可以进行计算
- 导入Excel数据,选择素材表,点击转换数据

- 首选可以删除一些不必要的列,然后选择保留的列,右击删除其他列,然后关闭并应用

- 新建一个列,并求3列的和,然后修改列名👇



4. 缺失数据处理
前言

- 导入数据,选择素材表,点击转换数据

- 选择含有缺失值的列,点击转换,填充,向下填充

- 这样就完成了缺失值的填充

2. 案例实战
2.1 PowerBI完成人事报表分析可视化
PowerBI完成人事报表分析可视化
最终效果图:
1. 数据源,导入数据,直接导入即可

这里的数据源,可以是excel,也可以是数据库,也可以是其他的数据源,只要是可以导入到PowerBI中的数据源,都可以导入到PowerBI中,然后进行数据处理,然后进行可视化

首先进入Power Query中,将身份证信息这一列改成文本,这样可以正常显示


弹出对话框,点击替换当前列,
然后我们发现这2张表要形成关系,需要对身份证进行处理,点击使用left函数取出身份证信息中的前2位 籍贯 = LEFT('员工表'[身份证号],2),用来和籍贯表关联


接下来在模型视图中,将2张表,通过籍贯字段进行关联,这样就完成了数据的关联

接着我们要将身份证中的出生日期取出来,第7-14位,使用多个函数,将这个字符串转换为日期格式
公式:出生日期 = DATE(MID('员工表'[身份证号],7,4),MID('员工表'[身份证号],11,2),MID('员工表'[身份证号],13,2)

接着取出年龄,使用公式,将出生日期和当前日期进行计算,得到年龄
公式: 年龄 = DATEDIFF('员工表'[出生日期],TODAY(),YEAR)

紧接着,取出工龄,使用公式,将入职日期和当前日期进行计算,得到工龄
公式: 工龄 = DATEDIFF('员工表'[入职日期],TODAY(),YEAR)

如果无法出结果,就在编辑查询中,将入职日期的格式改成日期格式,然后保存应用即可。
这样几个辅助列我们就建立好了,接下来我们就可以创建其他的辅助表
2. 创建一个日期的辅助表
首先创建一个新表,使用函数创建--日期表
公式:日期表 = CALENDARAUTO() 这个公式会自动生成一个日期表,包含了1900-2050年所有的日期


接下来,根据第一列,我们抽取出 年 ,月,季度等信息 👇
公式:年 = YEAR('日期表'[Date])月 = MONTH('日期表'[Date])季度 = "第"&FORMAT('日期表'[Date],"Q")&"季度"


接下来将日期辅助表和员工表中的入职日期进行关联,这样就完成了日期辅助表的建立 👇


3. 在员工表中创建度量值用来可视化操作

首先创建员工总人数,和在职员工人数,和离职人数
公式:
员工人数 = DISTINCTCOUNT('员工表'[员工工号])在职人数 = CALCULATE('员工表'[员工人数],'员工表'[员工状态]="在职")离职人数 = CALCULATE('员工表'[员工人数],'员工表'[员工状态]="离职")

还有大于50岁员工的占比,首先算出大于50岁员工的数量,然后除以员工总人数,得到比例
公式:>50岁员工人数 = CALCULATE('员工表'[员工人数],'员工表'[年龄]>50)>50岁员工人数占比 = DIVIDE('员工表'[>50岁员工人数],'员工表'[员工人数])

至此,数据处理就完成了,接下来我们就可以进行可视化操作
4. 参考示例图,建立图表
4.1 左侧的图表视图,使用切片器,完成年份 季度,在职,离职,占比等视图

同样操作,完成季度 👇
选择卡片图,展示在职,离职,占比 👇

依葫芦画瓢,完成离职人数,占比 👇

4.2 完成中间部分的
- 柱状图完成 按部门在职人数分布情况

- 使用三方导入的图表
蝶蝶结图表.pbiviz,完成 在职人员按性别学历情况


- 导入文字云组件,完成 在职员工按籍贯前10 分布情况

接着采用筛选器,将前10的籍贯筛选出来,然后进行可视化

- 按学历在职人数占比

- 按职称在职人数占比







