博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
个人永久性免费-Excel催化剂功能第37波-把Sqlserver的强大分析函数拿到Excel中用...
阅读量:5050 次
发布时间:2019-06-12

本文共 3452 字,大约阅读时间需要 11 分钟。

本人一直钟情于使用Sqlserver数据库的一大原因是其提供了非常好用、高效的数据分析函数(窗口函数),可以在做数据清洗和数据分析场合等多个场景使用。只需简单的一个函数即可做出常规SQL语句很难以实现的效果。

这么好用的函数,如今Excel催化剂已部分将其搬到Excel的环境内使用,同样带来了极大的数据处理、分析的便利性和简化操作。

文章出处说明

原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。

功能修复与更新

  • 20171017 新增分组字符拼接函数,同样可满足按排序列来排序后拼接的效果
    详情见:功能修复与更新汇总篇之六 

背景介绍

自从Excel催化剂推出了可返回多值的自定义函数,在函数的使用上已经突破了许多过往很难想像的功能突破,例如在过往教程中经常使用到的GetFiles函数,上一波的序列函数等。

只需一次计算就立马返回所有运算结果值。对于性能的提升也是立竿见影。如传统在一个数据表中加入SUMIF、COUTIF等函数,之所以每每运算效率低下,是因为其不断地在每一行中做了大量的重复计算。

例如第1,5,9行的值为A,统计A出现的次数,将重复统计3次(可能Excel内部会有一些性能优化的算法,但如果是二次开发的自定义函数就估计很难有优化空间)。

今天推出的众多分组计算函数中,同样采用了一次返回多值的方式,计算上仅需只算一次,对数据量大的情况下,性能改善明显。

 

60万行数据求COUNTIF计数仅需3秒时间
60万行数据求COUNTIF计数仅需3秒时间

一般来说,通用型函数的开发,没有说为哪个特定业务场景的需求而开发,但只要业务场景匹配到,通用型的函数发挥的可应用的场景是很丰富的。

若对今天介绍的函数想更进一步的扩展了解Sqlserver的原型函数,可百度上搜索Sqlserver窗口函数关键词即可有大量的文章。

函数介绍

此篇为分组计算函数,即对一列或多列的去重后出现的组成员中,通过排序列的排序依据,对某指标进行汇总聚合、生成序号、排名、和取其同一组内的某一列的某个值(上一个、下一个、开头、结尾)等功能。

可在部分场合完美替代SUMIF/COUNTIF/SUMIFS/COUNTIFS/MAXIF/MINIF/AVERAGEIF等常用函数的使用。

函数列表
函数列表

小缺点说明

一次多值返回的函数为数组函数,有以下的不足之处

  • 不能在有数据公式的表中进行排序操作。
  • 不能在智能表里输入数组函数
  • 不能更改数组函数内的多个单元格的任一单元格函数内容。

若需要进行以上所提及的操作,请先对返回结果的自定义函数进行数值化处理或删除操作。

 

数组函数扩展功能
数组函数扩展功能

分组计数

类似COUNTIF函数的效果,若分组列为多列时,类似COUNTIFS函数的效果,但性能更优,因一次性返回多值,仅一次运算即可。

 

分组计数函数,分组列为一列
分组计数函数,分组列为一列
分组列为两列时的效果
分组列为两列时的效果

分组序号

分组序号函数特点,在分组内的记录数中,每一行返回从1开始的不重复的递增的序列,基于排序列定义的顺序,分组列,排序列可以为多列,当排序规则下的排序列相同,将从上往下填充递增序号。

使用场景:对于数据清洗工作尤其有用,当数据有重复时,需要去根据分组的唯一值进行去重是保留最开始出现的记录还是最后出现的记录时,只需配合排序列的升序或降序处理,即可仅保留序号为1的记录,其他记录删除的方式实现数据清洗。

排序列的重复值较多,但不影响返回的序列的递增唯一性
排序列的重复值较多,但不影响返回的序列的递增唯一性
当排序列为多列时的效果
当排序列为多列时的效果

当出现多个分组列时,因自定义函数参数位置固定的原因,只有第1参数才是分组列的输入参数,故需要嵌套FZJS分组列合并函数,用于合并多个分组列。

多个分组列下的单个排序列效果
多个分组列下的单个排序列效果

分组排名

类似以上的分组序号,返回递增的序列值,但此处对重复的值有相同的排名

同时对重复值排名区分了美式排名和中式排名两种

分组排名效果
分组排名效果

分组求和

结果类似SUMIF和SUMIFS函数的求和效果,因采用一次计算多值返回的手段,效率性能对大数据量有极大的提升

类似SUMIF的单组求和效果
类似SUMIF的单组求和效果
类似SUMIFS的多组求和效果
类似SUMIFS的多组求和效果

取某一位置值

在需要取某一位置的值时,可以灵活地提取上一元素、下一元素、首元素、末元素。

使用场景:可用于计算买家连续两次购买时间段的间隔时长、首次购买时间、末次购买时间等

可在分组情况下实现上一元素、下一元素、首、末元素的提取
可在分组情况下实现上一元素、下一元素、首、末元素的提取

总结

当Excel不再纯粹只是一个Excel时,大量的外界的力量可以给Excel插上翅膀,让它飞得更高更远。此篇借鉴了Sqlserver等数据库的分析函数的功能,在Excel上使其可供使用,大大地武装了Excel对数据的处理和分析能力。同时在使用传统COUNTIF/SUMIF等函数普遍感到效率性能低下时,提供了全新的解决方案,让性能得到极大的提升。

系列文章

关于Excel催化剂

Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!

Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!

Excel催化剂插件下载链接:

因插件使用VSTO开发技术完成,插件的安装需要电脑满足相关的环境配置才能运行,且需可连接外网的方式实现自动更新机制,若下载安装过程中有任何疑问或需要离线版安装等,尽量不单独私聊询问,加QQ群可高效解决(群内已汇集了VSTO开发、Powerbi技术、Sqlserver商业智能等方面的国内顶尖大牛人物,进群的好处不用多说了)

Excel催化剂插件交流群群二维码
Excel催化剂插件交流群群二维码

 

联系作者.png
联系作者.png

 

公众号.png
公众号.png

 

取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。

最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。*Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!

关于Excel催化剂作者

姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。

服务过行业:零售特别是鞋服类的零售行业,电商(淘宝、天猫、京东、唯品会)

技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。

历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。

擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。

2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。

和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。)

转载于:https://www.cnblogs.com/ExcelCuiHuaJi/p/10775246.html

你可能感兴趣的文章
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&&打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
【转载】 IP实时传输协议RTP/RTCP详解
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
Linux系统的数据写入机制--延迟写入
查看>>
css3动画——基本准则
查看>>
javaweb常识
查看>>
Java注解
查看>>
时间>金钱
查看>>
元数据元素
查看>>
Visual Studio Code 构建C/C++开发环境
查看>>
web自己主动保存表单
查看>>
一个小的日常实践——高速Fibonacci数算法
查看>>