这个问题很常见,解决起来也不难。 也就是说,按“型号 + 序列号”分组并对后续“日期”列求和:
对于这个问题有很多方法。 当数据量不大时,各种方法在效率上不会有太大差异。 但如果数据量很大,可能会体现出很大的差异。
下面随机生成一个近19万行的数据,分组后仍然超过18万行,通过4种常用方法对比操作和效率,供大家参考。
– 1 –
直接分组法
直接分组的方法很简单,就是直接选择“型号”和“序列号”列,然后“分组”,在分组中通过多次“添加聚合”完成每个日期列的求和:
这种方法从理解上来说是最简单的,而且经过测试,也是最高效的! 但这种方法不好处理这个问题,因为需要手动为每一列添加聚合,不仅麻烦,而且无法适应后期添加列的情况。
– 2 –
直接分组扩展聚合法
直接分组扩展聚合方法是在分组的基础上对分组结果表进行扩展,并在扩展过程中进行聚合的方法。 具体操作方法如下:
Step-01 选择“型号”和“序列号”,进行分组,操作时选择“所有行”,即对每个分组项下的明细进行分组:
Step-02 展开分组得到的表格列,选择“聚合”,查看除用于分组的“型号”和“序列号”列之外的聚合内容,点击确定即可得到最终结果:
这种方法操作起来并不复杂。 它实际上利用了表展开时的“聚合”功能,并在幕后调用 Table.AggregateTableColumn 函数。
关于这个功能,我在之前的文章《》中提到过,效率比较低,应该尽量避免。 在这个例子中,最终的测试结果是这种方法效率最低。
– 3 –
逆透视分组和重新透视方法
不透视分组然后透视应该是解决此类问题的最常见方法。 因为每个日期都是作为一列数据,所以从数据建模角度来说,一般建议转换为每一行(反向视角),不需要汇总横向放置。 但由于这个问题都是在Power Query中处理的,所以反向透视后,可以将“型号”、“序列号”、“日期(属性)”三列进行分组求和,然后再透视即可得到结果。
步骤01 选择“型号”和“序列号”列,然后单击“取消透视其他列”:
步骤02 选择“型号”、“序列号”和“属性”(日期)列,并对“值”列进行分组和求和:
Step-03 选择“属性”列,点击“透视列”,在值列中选择“计数”列:
– 4 –
逆向透视和重新透视
对于这个特定的场景,可以先反转透视,然后在透视时直接聚合。 因此,上述方法中的分组步骤实际上是多余的。 具体步骤如下:
步骤01 选择“型号”和“序列号”列,然后单击“反向透视其他列”:
Step-02 选择“属性”列,点击“透视列”,在弹出的对话框中选择“计数”列作为数值列(此时默认为sum,无需额外操作),然后单击“确定”:
由于可以直接在透视图中进行聚合,因此这种方法也非常高效。 经过测试,这种方法与方法一——直接分组法接近,但这种方法最大的优点是操作简单,可以适应连续的数据列。 增加的情况。
从这个简单的例子中,您可以看到同一问题往往有多种解决方案。 在不同的场景下,不同的方法可能在效率、适应性等方面存在差异。
当数据量不大时,没必要过多关注效率问题。 毕竟几秒或者更长的刷新,其实并不影响大局。
但如果数据量比较大,最初的方法明显影响工作效率,那么就可以尝试不同的方法,比较各种方法的效率差异,尽可能地优化——当然,这些都要建立在熟练程度的基础上。基础知识应用,俗话说:熟能生巧; 实践创造非凡!
– 最新热门文章/合集-
-最通俗易懂的Power系列视频-
购买书籍或购买视频获签名书即可获赠60元视频券