Power BI数据查询编辑

CDA老师1

Power BI
# Power BI数据查询编辑 ## 数据导入 使用Power BI Desktop进行数据分析,需要先获取数据,Power BI Desktop支持从文件、数据库、Power Platform等多种数据源获取数据。为了方便练习,我们选择从文件导入Excel工作簿的数据。 步骤1:获取数据。 启动Power BI Desktop,在“主页”选项卡下的“数据”组中单击“获取数据”按钮。 在弹出的获取“获取数据”对话框,选择要连接的文件类型,单击“连接”按钮。 ![image.png](/z_anli/upload/pgc/202212/071320f1d5da18cc44cf428188d7fa42.png) 步骤2:选择文件。在弹出的“打开”对话框中,找到文件的保存位置,选中要导入的文件,单击“打开”按钮。 ![image.png](/z_anli/upload/pgc/202212/9cdfde802d3b6bef9f618dbfa3a3fca0.png) 步骤3:加载数据。Power BI Desktop会加载工作簿并读取内容,然后在“导航器”对话框的左侧显示工作簿中的工作表名称列表。勾选工作表名称左侧的复选框,在右侧界面可以预览该工作表中的数据,单击“加载”按钮。 ![image.png](/z_anli/upload/pgc/202212/58a43eb9e98df17ee108982074c7431b.png) 步骤4:完成导入。加载完成后,在Power BI Desktop右侧的字段窗格中会显示可用的工作表名称和字段列表,在左侧的视图区单击“数据”可查看加载完成的数据,但是数据视图中的数据只能查看,是无法编辑的,如果需要对数据进行修改和加工的操作,需要在Power Query编辑器中完成。 ![image.png](/z_anli/upload/pgc/202212/75699ba5e14b815760565c9d74c1809c.png) ## 理解数据结构 在数据分析的工作中,常用的数据结构有表格结构、关系型表结构和非关系型表结构。 ### 表格结构 表格结构的数据,通过单元格的列标和行号定位一个单元格或单元格区域,支持对任意单元格内容的增删改,支持合并单元格,主要应用于EXCEL、WPS等工具。 ![image.png](/z_anli/upload/pgc/202212/cf62baae894c6842ee8388c3e8174340.png) 表格结构的数据是以单元格为单位进行存储和计算的,单元格之间相互独立,所以数据间关系较弱。若数据量较大或计算规则过于复杂时,不仅容易出现遗漏、重复计算,还非常耗时。 ### 关系型表结构 相比于表格结构,关系型表结构数据更加规范,表中的列称为字段,表中的行称为记录,以字段为单位进行存储和计算。每个字段必须有字段名,且同一个表中的字段名不能重复。每个字段的数据类型必须一致,每个字段的行数相同。关系型表结构适用于EXCEL、Python、Power BI、关系型数据库等多种工具。 ![image.png](/z_anli/upload/pgc/202212/96a1f6a5b5a765c2741f27820a9a5793.png) 关系型表结构通过表间连接拓展了数据间的价值,实现多维数据探索和分析。 ### 非关系型表结构 非关系型表结构的数据是多层级嵌套的关系,以键值对形式进行存储和计算,可以根据关键词获取对应值,因此关键词不重复。主要应用于Python中的字典和Power BI中的 Power Query等。 ![image.png](/z_anli/upload/pgc/202212/0b4f4651c9d5176eca35ef5f038c7578.png) 非关系型表结构可以很方便的根据关键词查找特定值,让我们更高效地进行数据处理和分析。在Power BI中使用Power Query编辑器进行数据处理时,就是以非关系型表结构来组织和管理数据的。 ## Power Query编辑器 在Power BI Desktop中,数据的编辑与整理是使用Power Query编辑器来完成的,它可以高效的进行数据清洗,让数据更加规范,为数据的可视化分析提供高质量的数据基础。 在主页选项卡中单击“转换数据”按钮,就可以启动Power Query编辑器,它是一个独立的编辑界面,可以对加载后的数据进行修改、清理和转换,并将整合后的数据重新加载到Power BI Desktop中。 Power Query编辑器主页面分布着不同的功能,方便进行数据的清洗和整理。 ![image.png](/z_anli/upload/pgc/202212/0f0ea594d782ed18bad5f2bce7f646dc.png) ![image.png](/z_anli/upload/pgc/202212/563208ac4556f4259cc65cc5fe6dcaaa.png) ### 删除行 我们导入的原始数据是不规范的,表中的前两行是注释信息,加载到Power BI后没有匹配到列名,所以显示为默认的列名。我们在Power Query编辑器将表中前两行不规范的数据删除。 步骤1:删除最前面的几行。在“主页”选项卡的“减少行”组中单击“删除行”按钮,在展开的列表中单击“删除最前面几行”选项。 ![image.png](/z_anli/upload/pgc/202212/d38cf31eacce11620acb119e68d26fe3.png) 步骤2:设置删除行数。在弹出的对话框中输入行数,单击“确定”按钮即可。 ![image.png](/z_anli/upload/pgc/202212/4897be9704e385296aea90a6b1bc9ef7.png) ### 将第一行用作标题 删除前两行以后,显示在第一行的内容实际是表中的标题行,我们可以选择将第一行提升为标题。 步骤1:在“主页”选项卡的“转换”组单击“将第一行用作标题”按钮,就可以将第一行记录提升为列名。 ![image.png](/z_anli/upload/pgc/202212/1811644ed1cf9e5abfc257b486ff86dd.png) ### 修改字段名 在Power Query编辑器中,如果需要修改字段名可以在“转换”选项卡中操作。 步骤1:在表预览窗口选中需要修改名称的字段,然后在“转换”选项卡的“任意列”组中单击“重命名”按钮。 ![image.png](/z_anli/upload/pgc/202212/d4d1eb315c8f7204cf348788b269c6cb.png) 步骤2:此时列标题呈可编辑状态,输入新的列标题后按下【Enter】键,就可以完成列标题的重命名。 ![image.png](/z_anli/upload/pgc/202212/9fa0a3b9ddac99a4dc70b9f1d4c1291d.png) ### 删除列 在Power Query编辑器中可以看到产品表中最后两列数据显示为null,这是因为导入的原始数据中存在空值,我们可以将这两列数据直接删除。 步骤1:在表预览窗口选中要删除的字段,在“主页”选项卡的“管理列”组中单击“删除列”按钮,就可以将选中的字段删除。 ![image.png](/z_anli/upload/pgc/202212/355b1b65b2b5aaa05172f4b8d7f545ee.png) ### 添加自定义列 如果原始数据中的字段不能满足用户的分析需求,可以使用自定义列功能来添加新的字段。如销售一表和销售二表中的金额这一列是以百万为单位存储的,而我们在分析报表中需要以元为单位进行可视化呈现,就可以通过添加自定义列来计算。 步骤1:在“转换”选项卡的“常规”组中单击“自定义列”按钮,弹出的自定义列对话框,在“新列名”文本框中输入自定义列的列名,在“可用列”列表框中选择用于定义新列公式的字段,双击字段名或选中字段后单击“插入”按钮,公式输入完成后单击“确定”按钮。 ![image.png](/z_anli/upload/pgc/202212/c4060561142b20e69b2dd2ab3ce87e2d.png) 步骤2:添加完成后,在Power Query编辑器中可以看到新添加的字段。如果要修改自定义列,可在右侧的“查询设置”窗格中双击“已添加自定义”的步骤,将再次打开自定义列对话框进行修改。 ![image.png](/z_anli/upload/pgc/202212/4d10683c8b3d35c831cbe4f4e3c53364.png) ### 修改数据类型 在Power BI中对数据进行分析时,可使用的函数与该数据的类型有关。例如,文本型的数据就不能使用数学函数进行运算。因此,需要在Power Query编辑器中确认数据的类型是否正确,对于数据类型与实际不符的字段需要手动修改。 默认情况下,Power BI会自动对加载的数据进行检测并设置相应的数据类型,但Power Query编辑器中添加的自定义列,默认显示的数据类型为任意,例如,我们添加的“销售金额”这个字段,而我们进行可视化分析时往往需要对“销售金额”按照不同的维度进行统计,因此需要将这个字段的数据类型修改为整数型,才可以进行汇总分析。 步骤1:选中需要修改数据类型的字段,在“主页”选项卡的“转换”组中的数据类型列表框中,选择合适的数据类型即可。 ![image.png](/z_anli/upload/pgc/202212/766ef70a9a36cda949fd7e13949a7ea6.png) ### 追加查询 追加查询是在现有表的下方添加另一张或多张表的数据,提前是现有表和要添加的表,它们的字段个数、顺序、数据类型和字段名必须完全一致,是将具有相同结构的表的数据进行纵向追加。如果表的结构不同,在追加时可能会出现错误。 在Power Query编辑器中可以看到销售一表和销售二表的结构是一样的,表中都是记录了每一笔订单的订单编号、客户ID、产品编号、客户名称、产品所属的行业和领域,以及每一笔订单的下单日期、发货日期和订单金额,表中字段的个数、顺序、数据类型和字段名都是一样的,这种情况下我们可以把这两张表追加为一张表。 在Power Query编辑器左侧的“查询导航栏”中选中“销售一表”,在左下角的状态栏中可以看到,这张表中目前是有9列,963行的数据。我们把销售一表的数据追加到这张表中,那么表中记录行数就会增加了。 步骤1:在“主页”选项卡的“组合”组中单击“追加查询”按钮。在弹出的追加对话框中,因为我们只需要将销售一表和销售二表的数据进行追加,因此保持默认的“两个表”即可,如果对两张以上的表进行追加,就可以选择三个或更多表。在下方的“可用表”列表框中选择要追加的表,我们当前选中的是销售二表,需要将销售一表中的数据追加到销售二表,让两张表的数据都在销售二表中显示,所以在下方要追加的表中选择销售一表,单击“确定”按钮即可。 ![image.png](/z_anli/upload/pgc/202212/d7be55063bbebb07117d4bac448f6b77.png) 步骤2:操作完成后,在左下角的状态栏可以看到销售二表中的记录行数变多了,也就是我们把销售一表的数据追加到销售二表当中了,所以现在销售二表中包含两张表所有的订单记录。 ![image.png](/z_anli/upload/pgc/202212/66ffc987955488738b0ca03c478fc0c8.png) 如果在Power Query编辑器中对数据执行了错误的操作或多余的操作,想要撤销该操作,可在右侧的“查询设置”窗格的“应用的步骤”中单击该操作前代表删除功能的按钮来删除该操作。 ## M函数 当每次在Power Query编辑器中使用以上功能按钮对数据进行操作时,其后台都是调用相对应的脚本来执行的。该脚本是由Power Query Formula Language编写而成的,此种语言简称为M。 虽然Power Query编辑器中已将一些简单常用的M语言进行了界面化,但是Power Query提供的更多更丰富的功能依然需要通过编写M语言来实现。因此,如果想要更好地使用Power BI对复杂数据进行深入分析,就需要学习M语言的使用。 ### 编辑M语言 当我们使用Power Query编辑器来处理数据时,其实M语言无处不在。M语言的函数公式有三个地方可以进行查看和编写: ž 在添加自定义列的时候可以使用M语言编写公式。 ![image.png](/z_anli/upload/pgc/202212/ad15c26cf2e19fedd7878b0cf1365edb.png) ž 在右侧的“查询设置”窗格中,选中“应用的步骤”中的某一个操作步骤,在编辑栏中就可以看到该步骤对应的M语言。 ![image.png](/z_anli/upload/pgc/202212/2707d54dce253ad3c04d779f2108b4ee.png) ž 在“主页”选项卡的“查询”组中单击“高级编辑器”按钮,在弹出的高级编辑器对话框中,可以看到“应用的步骤”中每一个操作步骤对应的M语言。 ![image.png](/z_anli/upload/pgc/202212/56c1aa068e010e26185a8ee142339460.png) ### M表达式 M语言基本表达式:let…in…,其中,let用于封装计算结果,并为计算结果命名;in用于显示结果。 ### M书写规范 ž M语言对大小写敏感,每一个字母必须按规范书写,第一个字母都是大写 ž 表被称为Table,每行的内容是一个Record,每列的内容是一个List ž 行标用大括号{ },比如取第一行的内容:=表{0} //Power Query的第一行从0开始 ž 列标用中括号[ ],比如取某一列的内容:=表[列名] ž 取第一行某一列的内容:=表{0}[列名] ### M中的关键字和函数 M语言中常用的函数有聚合函数、文本函数、日期函数、条件函数等,常用的关键字有#shared、#date、#datetime等,本节会主要介绍几个常用的M函数和关键字。 M语言支持的函数有很多,我们也不可能全部都记住,那么如何查找M函数呢,我们可以在Power Query编辑器“主页”选项卡的“新建查询”组中单击“新建源”菜单列表中“空查询”命令,然后在编辑栏中输入=#shared并按下【Enter】键。 ![image.png](/z_anli/upload/pgc/202212/896a82aca3cec5a0d10452000cdb51fd.png) #shared关键字会加载M语言中所有的内置函数,并返回一个记录列表。选中某一个函数后,Power BI会在下方窗口处显示该函数的定义及使用方法和使用示例。 接下来我们使用Power Query编辑器制作一个时间维度表,在练习的过程中更好的了解M语言的使用。 ## 制作时间维度表 时间维度表的制作整体分为两步:第一步先创建一个日期序列,第二步根据这个日期序列再添加更多的列。 步骤1:创建一个空查询,在“主页”选项卡的“查询”组中单击“高级编辑器”按钮,在弹出的高级编辑器对话框中,可以看到M表达式。 ![image.png](/z_anli/upload/pgc/202212/5a67ed00aa970149f191975223c4e49a.png) 在这个表达式中let后面指定输入,in后面指定输出。所以在这个公式中输入了#shared并把它赋值给“源”,然后又输出了“源”。 步骤2:将高级编辑器中的表达式修改为 ![image.png](/z_anli/upload/pgc/202212/d03ec670ea9387c027395dc61fb43670.png) ![image.png](/z_anli/upload/pgc/202212/1121d8ce95bcf91bebab4167a8038cbb.png) 输入完成后单击“完成”,在Power Query编辑器中就可以看到输出的日期。 ![image.png](/z_anli/upload/pgc/202212/373e6be8d0b17fc129d73d71f072736b.png) 有了起始日期之后,我们再输入一个截止日期并生成日期序列。 步骤3:再次启动“高级编辑器”,输入一个截止日期,再指定输入一个日期序列。这个日期序列用大括号里面指定起始值和终止值,来创建一个数值列表,起始值和终止值之间有两个圆点分隔,然后用Number.From函数将日期转换为数值,然后指定输出这个数值序列。 ![image.png](/z_anli/upload/pgc/202212/2ab85831849d48727883a8f2cad7e285.png) ![image.png](/z_anli/upload/pgc/202212/d02ffe7b59cb68b840974cb57fed42dd.png) 输入完成后,可以看到Power Query编辑器中显示的是一列数值。 ![image.png](/z_anli/upload/pgc/202212/e492265f22d0292cc8c40b8035128c21.png) 需要把这个数值序列转换为日期序列,但是在Power Query编辑器中列表是无法修改数据类型的,我们要先将列表转换为表,然后在表中修改某一列的数据类型。 步骤4:在“列表工具”的“转换”选项卡中单击“到表”按钮,在弹出的对话框中,保持默认选项,再单击【确定】完成转换。 ![image.png](/z_anli/upload/pgc/202212/ad227e4b5e4b921f3a694975117253c5.png) 转换之后的表,再修改这个字段的数据类型和字段名即可。 ![image.png](/z_anli/upload/pgc/202212/5280341b32802359eeaa5adb07541e68.png) 接下来再添加一列年份。 步骤5:先选中第一列的日期,然后在“添加列”选项卡的“从日期和时间”组中的单击“日期”,在菜单列表中“年”对应的扩展选项中单击“年”命令。 ![image.png](/z_anli/upload/pgc/202212/92ff54b0b9c5974d62b61f6dca22663f.png) 在Power Query编辑器中就会添加一个新的字段显示第一列日期中对应的年份。 ![image.png](/z_anli/upload/pgc/202212/0d87e8a9959e6eb7d769a96918589e08.png) 同样的方法,在添加月份、季度、天、星期四列。 ![image.png](/z_anli/upload/pgc/202212/58686e3c270102736537a55967f3e94c.png) 此时再启动“高级编辑器”,可以看到我们前面执行的每一个操作步骤以及对应的M函数,其实我们也可以在高级编辑器中编辑M表达式实现同样的操作。 ![image.png](/z_anli/upload/pgc/202212/bfb7d2b01e4ee20b36a2b0e90a578953.png)
1.2948 4 0 关注作者 收藏 2022-12-19   阅读量: 420

评论(0)


暂无数据