Python数据处理还在用Pandas? NiceFlow无需一行代码搞定数据处理

NiceFlow是一款轻量级的ETL工具,它利用Python和基于插件的架构,提供了无GUI的CLI命令,简化数据分析过程。特别强调了其SQL功能,能自动读取多种格式文件并转换为数据库,支持自定义函数和多行SQL查询,使用DuckDB保证快速查询性能。
摘要由CSDN通过智能技术生成

NiceFlow是一个类似Kettle数据ETL工具,同时比Kettle更加易用和轻量,目前还没有GUI界面

git地址

gitee

github

特性

  • 基于python的插件机制,目前提供70+插件,同时支持自定义插件
  • 基于json的flow任务,支持自定义任务配置
  • 提供好用的cli命令,无需写代码,完成数据分析工作

安装依赖

pip install NiceFlow

cli sql 执行查询分析任务

对于经常需要在excel,csv,json数据中做一些过滤、筛选、关联、去重的人来说,这样一件事情是比较麻烦和耗时的,手工处理容易出错,写程序有些费时,最简单的办法是将数据倒入数据库,然后用sql进行查询,但是这需要我们安装数据库,安装数据库查询工具,还需要导入数据到数据库,一顿操作下来也是比较麻烦。

NiceFlow 提供了一些好用的cli方式执行数据查询任务,其中一个模式是NiceFlow sql ,它可以配置一个资源路径(res_path),程序会自动读取该路径下的csv,excel,json,parquet等文件,将其转化为表,然后提供sql_path或者sql_script参数,让我们可以使用sql进行愉快的数据查询,提供result_path将查询结果导出为csv,excel,json,parquet等,同时提供function_path可以将python文件中的方法注册为函数,直接就在sql中使用,可谓方便至极,下面看看使用方法。

# --sql_script,"sql脚本语句,支持多行"
# --sql_path,"sql脚本文件,支持多行,和sql_script二选一"
# --db_path, "输入b数据库的路径,不存在则为内存模式[可选]"
# --res_path,"输入文件路径,该路径下的文件会被自动加载到db中[可选]"
# --function_path,"输入函数路径,该路径为python文件,可以作为数据库自定义函数使用[可选]"
# --result_path,"输入结果路径,支持csv,json,parquet,txt,excel,clipboard当输入为clipboard时,结果直接写入剪贴板"

# NiceFlow sql --help 查看参数选项

# 执行示例
NiceFlow sql \
--sql_path 1.sql \   
--res_path 'C:/Users/xw/Desktop/22/test' \
--function_path 'C:/Users/xw/Desktop/22/test/1.python' \
--result_path C:/Users/xw/Desktop/22/test/result/result.parquet

# sql语句,支持多行sql,只会将最后一行的sql查询语句结果写入到result_path中
select f_print(d_date) from msd_2024 where d_date = '2023-12-31';

# python文件中定义函数
def f_print(x:str)->str:
    return x+"___";

cli sql 查询实战截图

  • 执行load.bat文件 ,文件中的内容如下
NiceFlow sql \
--sql_path 1.sql \   
--res_path 'C:/Users/xw/Desktop/22/test' \
--function_path 'C:/Users/xw/Desktop/22/test/1.python' \
--result_path C:/Users/xw/Desktop/22/test/result/result.parquet

在这里插入图片描述

  • 程序自动加载total_RQ_DEVICE_20240130.xlsx,SID.csv,msd_2024.csv三个文件,其它文件或者文件夹自动忽略,加载到表名自动去除.xlsx,.csv等,该目录下不要有不合法的文件名,比如1.csv这种,稍微改个正常的名称程序就可以识别。

在这里插入图片描述

  • 执行1.sql查询语句,进行数据分析,sql语句可以为多行,每一行都会执行,但是只会将最后一行作为结果返回
select * from total_RQ_DEVICE_20240130 ;

show tables;

select * from SID;

select SRCID from total_RQ_DEVICE_20240130 where SRCID  in (select SID from SID);

select * from total_RQ_DEVICE_20240130 as a left join SID as b on a.SRCID = b.SID
UNION
select * from total_RQ_DEVICE_20240130 as a right join SID as b on a.SRCID = b.SID;

select * from msd_2024 limit 10;
  • console控制台打印结果

在这里插入图片描述

  • 返回result.csv结果文件
    在这里插入图片描述

其它

  • 本次仅介绍了cli 中的sql功能,其它功能可以到gitee或者github中查看
  • 程序内核使用Duckdb,所以不需要担心导入速度慢,查询速度慢这种问题,超越pandas不在话下,如果没有超越,github上给duckdb提issue,让别人优化性能。
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值