1亿数据分析跑不动,看NiceFlow Python ETL工具如何实现单机查询毫秒出结果

文章介绍了一种名为NiceFlow的工具,它利用DuckDB作为底层引擎,能够在处理超过1亿条数据时实现毫秒级别的查询速度。作者通过实测和案例展示了在资源受限情况下,DuckDB在大数据分析中的高效性能,对比了与Pandas等工具的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 说明

在某些情况下,我们会有这样的一些场景,手中有一些csv需要进行分析,但是数据量很大,超过1亿,写程序执行会非常慢,急需一个工具来解决这类问题,那么你不妨看看NiceFlow,让你1亿数据查询毫秒出结果

在看到这里的时候,你可能会认为博主在吹牛批,然后准备划走,那么你先别划走,博主亲自使用数据测试,保证毫秒出结果的结论100%可靠,下面让我们来看看。

在此先说明,NiceFlow底层所使用的数据分析引擎是DuckDB,NiceFlow则是基于DuckDB基础上扩展更加强大的功能,所以此次测试,我们主要测试DuckDB数据分析处理能力。

看完测试结论后,觉得NiceFlow有那么一勒勒用,可以看看这篇文章Python数据处理还在用Pandas? NiceFlow无需一行代码搞定数据处理

2. 硬件环境

机器数量 1台家用办公电脑
CPU i5 13600K
内存 64G
磁盘 SSD

3. 软件环境

操作系统 Win10
Python版本 3.10
DuckDB 0.9.2

4. 测试数据量

数据生成的仓库 ssb-dbgen

别人都是在linux上生成数据的,我的在windows上生成的,因为我用了TDM-GCC编译器,将上面的代码编译为exe

数据生成的命令

dbgen.exe -s 20 -T l
dbgen.exe -s 20 -T p
dbgen.exe -s 20 -T s
dbgen.exe -s 20 -T d
dbgen.exe -s 20 -T c

生成的数据的信息

SSB表名 行数 磁盘大小 备注
lineorder 119994608 11.2G 商品订单明细表表
customer 600000 55.3M 客户信息表
part 1000000 83.1M 零件信息表
supplier 40000 3.26M 供应商信息表
dates 2556 227K 日期表

5. 建表语句

CREATE TABLE IF NOT EXISTS lineorder (
  lo_orderkey INTEGER ,
  lo_linenumber INTEGER  ,
  lo_custkey INTEGER ,
  lo_partkey INTEGER ,
  lo_suppkey INTEGER ,
  lo_orderdate INTEGER ,
  lo_orderpriority VARCHAR ,
  lo_shippriority INTEGER ,
  lo_quantity INTEGER ,
  lo_extendedprice INTEGER ,
  lo_ordtotalprice INTEGER ,
  lo_discount INTEGER ,
  lo_revenue INTEGER ,
  lo_supplycost INTEGER ,
  lo_tax INTEGER ,
  lo_commitdate INTEGER ,
  lo_shipmode VARCHAR 
) ;

CREATE TABLE IF NOT EXISTS customer (
  c_custkey INTEGER ,
  c_name varchar ,
  c_address varchar ,
  c_city varchar ,
  c_nation varchar ,
  c_region varchar ,
  c_phone varchar ,
  c_mktsegment varchar 
);

CREATE TABLE IF NOT EXISTS dates (
  d_datekey INTEGER ,
  d_date varchar ,
  d_dayofweek varchar ,
  d_month varchar ,
  d_year INTEGER ,
  d_yearmonthnum INTEGER ,
  d_yearmonth varchar ,
  d_daynuminweek INTEGER ,
  d_daynuminmonth INTEGER ,
  d_daynuminyear INTEGER ,
  d_monthnuminyear INTEGER ,
  d_weeknuminyear INTEGER ,
  d_sellingseason varchar ,
  d_lastdayinweekfl INTEGER ,
  d_lastdayinmonthfl INTEGER ,
  d_holidayfl INTEGER ,
  d_weekdayfl INTEGER 
) ;

 CREATE 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值