(一) 仔细检查公式栏
不同的公式可以达到同样的效果,所以观察产生结果的公式就很重要,别把公式栏给隐藏了,需要打开它,如图1所示。例如:删除列和删除其他列可能得到的效果是一样的,但是如果数据有变动刷新后得到的结果却有可能不同。
代码语言:javascript复制Table.RemoveColumns(源,{"成绩", "学科"})
Table.SelectColumns(删除的列,{"姓名"})
(二) 删除不必要更改的类型
很多时候错误的原因在于改变数据类型的时候出错,尤其是在提升标题等动作后会自动生成,如图2所示。在Power Query中对于数据的类型要求比较严格,如果在中间步骤不是计算必要的数据类型,可以暂时不更改,而等到最后的时候在进行数据类型的更改,这样也能够更方便的发现问题的所在。
(三) 使用动态参数而不是固定参数
如果数据不是固定格式,会有变动,那使用固定参数就非常有可能会在刷新数据的时候进行报错,这时就可以使用动态参数来进行。例如:表格中的标题列名称可能会进行变化,但是位置不会变,那此时就可以使用变量参数来进行,而不是直接使用列名称来进行操作,如图3所示,此时不管第2列的标题改为什么,只要第2列是代表数字的,这样使用动态参数都不会产生错误。
(四) 筛选的技巧
一般来说筛选很简单,只需要在界面进行操作即可,但是有时候需要注意的是,计算机识别出的操作和人的操作思想不一样,
1. 逻辑不一样
同样的筛选结果,如果只希望选择大于90份的结果,直接选择和逻辑选择会不同。
2. 不完整的数据中筛选
如果数据量很大,就会有可能产生未全部加载完成的数据,因为这里直接筛选的数据依据的只是前1000行,有可能展现出来的筛选数据并不完整。
(五) 移动列的差异
一般情况下,移动列的顺序使用的是Table.ReorderColumns函数,也就是重新把列名给排下序,如图7所示。
在此函数中,使用的列排序都是常量,而不是变量,如果只想让成绩这个字段根据所需要的位置进行插入,用变量的方式最好,只需要在列的名称上进行改变。例如:要把成绩放到最后一列,甚至都不清楚列的数量及列的名称的情况下来实现操作。
(六) 删除数据列
删除列以及选择列都是属于删除数据的一种操作。这个时候可以利用此类操作函数的第3个参数来避免产生错误。正常的删除是没有问题的,如图9所示。
如果常量参数填写错误,则就会出错,如图10所示。
此时可以使用此函数的第3参数来规避错误,3个参数分别可以用0,1,2代表,如图11所示。
这样就能避免产生错误,可以使得操作继续进行,如图12所示。
(七) 拆分数据列
在进行列的拆分时,大部分会使用类似Excel中的分割功能,把数据分割成多个列,但是其中会有一个问题就是如果后续更新的数据需要拆分的列数量不一致就有可能会漏拆分,如图13所示拆分成如图14所示。
你当然可以这样拆分,但是有一个问题,仔细查看公式(避免错误的第一个方法),其中的列名都是自动生成的,是根据现有数据能拆分成几行就写了几个对应的字段名和格式。但是如果下次的数据比本次所拆分的更多,那在刷新时就无法进行同步更新,就会出错。此时最好的做法就是把数据拆分成行,这样就能避免固定的列的限制,如图15这样的操作。
(八) 合并数据列
在合并数据列的时候也需要注意一点,组合的列必须是文本列,如果是其他格式会自动转换成文本格式,如图16所示,如果合并的只是文本,会直接合并。如果是其他格式的话,则会自动进行格式的转换,先转换成文本格式在进行合并,如图17所示。
如果仔细观察,在合并非文本列的时候,操作都是一样的,但是在公式中会对原有的表格中需要合并的列进行格式转换,所以要合并的列不管是不是文本格式,都可以预先给转换成文本格式,这样在后续的合并中就不会出错。
(九) 合并查询中的展开表
合并查询在Power Query中使用的比例还是相对挺高的,在使用后都会把匹配的数据给展开,这里就会涉及到一个注意事项,如图18所示,合并查询展开时的公式,
这里同样有一个问题,就是所有的参数都使用了常量参数,这样就会导致之后如果数据有变动则会产生错误,尽量的使用可替代的来实现其相同的逻辑。主要是第3参数,同样可以使用List.RemoveItems或者List.Difference来实现去掉匹配列来展开所有的其他列。
(十) 删除重复项
在创建维度表的时候,会常用的操作就是去除重复项,要不然在Power BI中会产生多对多的关系,就会引起错误,不过在去除重复项的时候也需要进行仔细辨别。
1. 字母的大小写
在Power BI的模型关系中,不会区分大小写,如果只是大小写的区分,则会直接判断为多个关系,所以在Power Query中进行清洗的时候就要特别留意,以避免因为大小写产生的错误导致数据表之间的关系错误。
2. 不可见的符号
此外就是不可见的符号了,这种也会经常导致匹配错误或者删除重复项时未完全成功,所以在执行删除重复项之前使用修整和清除来把数据给清洗下。
如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。