关于如何用Excel处理200万行以上数据问题,现在已经完全没有压力了,虽然Excel工作表本身只支持1048576行数据,而且如果真的在一个表里数据导到100万行以上,这个表基本就跑不动了。

但是,随着Excel2016的内置新功能Power Query、Power Pivot等(Excel2010或Excel2013可到微软官方下载相应的插件)的推出,这个问题已经得到很好的解决。

理论上,Power Query和Power Pivot支持的数据行数是没有限制的,但Power Pivot仅支持2G以下的数据文件。

大神高飞曾就Power Query和Power Pivot对大数据支持做过相关测试,情况如下:

Excel 一亿行数据分析实践(总结篇)

高飞 PowerBI极客

测试目的

本次测试目的并非与其他数据分析方法对比优劣、而是尝试介绍一种完全基于EXCEL的本地化大数据集处理方式。

分析人员常用的大数据处理方式

本次演示的方式

这种方式的优点

降低成本。减少工具间的切换成本,直接使用Excel作为存储和分析工具。

展现灵活。展现端继续使用Excel,发挥它灵活、自定义程度高的优势。

便于交付。其他方式得到的结果为了便于交付,还要导出为Excel,而现在整个分析流都在Excel内部完成。

结果可交互。PowerPivot相当于一个存储了源数据的OLAP引擎,通过控制切片器等外部筛选条件,可以迅速、动态的查看结果,使用其他方法,可能需要返回分析端改变计算条件重新导出。

测试项目一:数据导入和耗时

向Excel导入大数据,有两种方式:

PowerPivot导入,直接导入,不支持数据转换和清洗操作。

PowerQuery导入,在导入前可以对数据做预处理。

本次使用的测试数据集共有19列,有多列需要进行格式转换和日期提取操作,使用第一种方式,需要导入后在PowerPivot内部进行,使用方式二可以在载入前完成,很明显的是,对于方式二,预处理步骤越多,加载时间会越长。

下图展示了不同量级不同导入方式的耗时情况(单位:秒)

为了直接对比PowerQuery和PowerPivot的加载效率,增加了一个*号方式,这种方式不对数据做任何清洗转换,直接加载到模型,与PowerPivot步骤相同。

现象

对比前两行结果,PowerQuery的数据导入效率与PowerPivot不分伯仲。

PowerQuery没有数据量的限制,而PowerPivot不到导入超过2G的文件。

清洗步骤和数据量的增多,都会显著增加PowerQuery的导入时间,比如一亿行数据,即使三个简单的清洗步骤,用时已经超过了30分钟

结论

PowerPivot导入方式使用的是Access连接器,受限于Access文件本身的限制,不能导入超过2G的数据,这也说明,PowerPivot数据存储能力超过了Access。

PowerQuery是轻型ETL工具,处理大数据集性能不强(基于Excel版本的 PQ)。

如果尝试使用Buffer函数缓存数据,会发现这个缓存过程非常漫长,实际上,Buffer函数并不适合缓存大数据集,因为无法压缩数据,内存可能会很快爆掉。

测试项目二:文件压缩比率

对比不同导入方式生成的文件大小,与数据源文件做比较。

影响文件压缩比率的因素,主要是数据集本身的特征和PowerPivot引擎的性能

结论:

数量级越大,压缩比率越高。

同一数据量级,清洗步骤越多,最终文件会越大,并且随着数据量的增加,这种现象会越明显。

测试项目三:简单分析的效率

我们真正关心的内容是,Excel能否快速、高效的对大数据集开展分析。

简单分析定义的场景是,逐月统计有多少位顾客发生了购买。做法是把年和月拖入透视表行字段,将CustomerKey拖入值区域,修改值汇总方式为统计不重复值。

测试发现,即便使用一亿行数据,这个计算过程的用时也很短,小于1s。于是我增加了一点难度,加入两个切片器对结果做交叉筛选,计算用时仍然小于1s,看来PowerPivot处理这类分析比较轻松,最终此项测试没有计时。

测试项目四:复杂分析的效率

新客统计:逐月计算当月产生购买的顾客中,有多少是新客户(第一笔购买发生在当月)

为了获取到PowerPivot引擎的计算时间,测试在DAX Studio内完成,同时为了模拟透视表的计算结果,需要对公式做一点改动。

计算用时(毫秒)

二次运算的用时指的是首次运算结束后,不清空缓存再次执行重复计算所花费的时间。相比第一次运算,节约时间在30%左右。原因是DAX的两个引擎中,有一个可以缓存计算结果,被缓存的内容可以在之后被公式内部调用,也可以跨公式调用。

结合这个知识,对DAX的表达式进行优化,可以获得更好的性能表现,下面是新客统计优化之后的写法,我们来对比计值时间的变化。

优化后计算用时(毫秒)

可以看出引擎的缓存起到了显著效果,二次计算直接调用首次运算的结果,计算时间不随数据量的增加而增加。

以一亿行数据集的结果为例,对比算法优化前后的用时:

复杂统计测试项目二,流失客户统计

与新客的呈现方式相同,依然是逐月计算当月的流失客户,不同的是流失客户的定义更为复杂。

自定义一个流失天数,被判定流失的客户需同时满足以下两个条件:

所有在当月之前最后一次购买的日期+自定义流失天数,落在当前时间区间内。

当月如果发生购买,第一次购买日期不能早于判定流失的日期。

流失客户公式和计算结果

计值流如此复杂的一个公式,PowerPivot会耗时多久呢,我只用了一亿行数据的文件做测试,结果是首次计算4093ms,二次计算1720ms。

说明:

1. 以上测试模拟了透视表的呈现布局,而且你可以加入切片器改变公式的上下文条件,迅速得出特定产品、特定商户和特定促销活动的新客户以及流失客户,非常方便。

2. 时间统计基于少量的测试结果,存在一定偶然性,仅供参考。

测试环境

电脑配置也是影响计算性能的重要因素,需要说明的是,以上进行的所有测试都基于台式机,在做现场分享的时候,我在笔记本电脑上重新运行了一遍流失客户公式,两个环境的用时如下:

结合平时其他测试,我的笔记本执行同样的计算,用时平均在台式机的两倍左右。两台电脑的配置如下

注意:提升CPU主频、核心数、1、2、3级缓存;内存的大小和频率都会提升引擎的性能表现。

总结

对于本地化大数据集的分析,本文提供了一种新的可能,严格来讲,2010年的时候你已经可以使用,只不过彼时它羽翼未丰,计算性能和稳定性难堪大任。

而现在,你已经见识到了这套工具(PowerPivot+PowerQuery)的能力,无论大数据还是复杂运算,Excel公式和VBA已经无法望其项背。

一般说来,积累通常是好事,财富可以通过积累不断增加、写作能力可以通过积累不断增强,但在某些知识领域,迭代是如此的快速和彻底,以至于底层的方法论都将被淘汰掉,过去的知识成为此刻的负担,你最好尽快丢掉过去,拥抱未来

从上面可以看出,使用Excel处理200万行的数据完全没有问题,那么,Power Query和Power Pivot怎么用呢?可以参考以下系列内容:

Power Query从入门到实战80篇

Power Pivot基础及Dax入门15篇

更多精彩内容,敬请关注【Excel到PowerBI】

私信我即可下载60+Excel函数、数据透视10篇及Power系列功能95篇汇总训练材料

我是大海,微软认证Excel专家,企业签约Power BI顾问

让我们一起学习,共同进步!

excel处理几十万行数据_如何用Excel处理200万行以上数据?相关推荐

  1. python向数据库写入数据_如何用Python向Mysql中插入数据

    我们使用Python经常会和Postgresql进行搭配,很少将python和mysql进行搭配.下面小编给大家分享如何用Python向Mysql中插入数据. 工具/原料 Pycharm 方法/步骤 ...

  2. 查询时拼接两列数据_如何用VBA代码查询两列数据差异?

    爱就一个字,我只说一次-- 北京市第三交通委提醒您:代码千万条,注释第一条,命名不规范,修订两行泪-- 咳,给大家拜晚年了,再提前祝大家元宵快乐-- 我们今天和大家分享的内容是如何用VBA代码查询两列 ...

  3. excel两个指标相关性分析_如何用excel分析两组数据的相关性

    在Excel进行数据分析的时候,经常要分析两组数据的相关性.求出的值越接近1,那就说明相关性越大:越接近0,说明相关性越小.下面就说说具体步骤. 具体步骤如下所示: 1. 数据分析,以比较男女两组身高 ...

  4. 数据透视表怎么刷新数据_数据模型的Excel数据透视表刷新错误

    数据透视表怎么刷新数据 A simple data change can cause a strange pivot table refresh error, if you added the dat ...

  5. mysql数据库导入到excel表格数据_[转载]将EXCEL表格中的数据导入mysql数据库表中(两种方法)...

    今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行: 在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保 ...

  6. 怎样用excel剔除异常数据_(如何剔除excel表格中重复的数据)excel表格怎么剔除异常数据...

    请问 Excel 如何剔除与平均数偏差较大的数字再求平均数?谢谢. 把问题作为内容(邮件主定要包含"excel",本人以此据辨别非垃圾邮件,以免误删).excel样件(请特别注意: ...

  7. java将jsp页面表格导出excel表格数据_简单的POI导出JSP页面表格数据到excel

    数据库中的equipment表数据: 读取数据库中表数据的代码TestExcel.java public class TestExcel extends BaseAction{/** * @param ...

  8. java统计excel数据_数据分析实战——EXCEL实现复购率计算

    这是数据分析实战的第三篇(复购率计算篇),本文提供真实数据(脱敏),并梳理复购率计算思路和技巧,通过15分钟的阅读和实践,读者即可根据自己的订单数据灵活计算业务涉及到的复购率了.(实战数据在文末) 相 ...

  9. excel日期相减去除周末_仅在Excel中允许周末日期

    excel日期相减去除周末 With Excel Data Validation, you can add rules to a data entry sheet, and control what ...

  10. excel函数:汉字转全拼_星期五的Excel函数:带过滤器的小计和总和

    excel函数:汉字转全拼 Last week, we used the Excel SUBTOTAL function to sum items in a filtered list, while ...

最新文章

  1. linux下查看nginx,apache,mysql,php的编译参数
  2. 其他发行版本安装深度音乐播放器
  3. 【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
  4. 支付宝支付-提现到个人支付宝
  5. java坦克大战源码下载
  6. android 后台耗时,android教程之使用asynctask在后台运行耗时任务
  7. (19)FPGA脉冲计数器设计(第4天)
  8. scrapy简单爬取图片
  9. 提交失败重连java_RxJava出错重连
  10. Rust : Json Web Token
  11. 使用 MQL5 绘制阻力和支撑级别
  12. 手机连接linux共享打印机,连接Linux共享打印机
  13. 论文写作中插入公式间距变大怎么办?
  14. GLUE数据集免费下载 (MNLI, QQP, QNLI, SST-2, CoLA, STS-B, MRPC, RTE, WNLI)
  15. 蓝牙通信的简要设计与开发(附加题)
  16. 爬虫mysql数据清洗_爬虫分析之数据存储——基于MySQL,Scrapy
  17. 鼠标悬停出现遮罩或图片放大效果
  18. 鲲鹏鸿蒙概念股,华为鲲鹏概念新龙头股一览 华为鲲鹏概念股有哪些
  19. 初次了解polyfill
  20. 解决夜神模拟器连接eclipse的问题

热门文章

  1. SAP 查询物料的非限制库存、质检库存、冻结库存
  2. Entrez Direct学习笔记
  3. RTMP协议视频平台EasyDSS点播配置中视频转码方式中软件转码和硬件转码的差别
  4. 夏普PC_1500计算机使用,夏普PC-1500袖珍计算机的检修(续)
  5. Moo Slidebox
  6. Netty和Tomcat有什么区别
  7. 深度学习关于分布式任务调度平台XXL-JOB框架详解
  8. Python列表基础--仅index()获取元素全部索引
  9. 科学计算机符号大全,计算机符号代码大全
  10. java 标准偏差_Java Streams-标准偏差