赢得美女同事的青睐,只因我用DuckDB快速帮她处理了一份数据

“书中自有颜如玉”,至少在那一刻我是愿意相信的,哈哈哈。

知识的力量在那一刻被具象化了。

缘由

她很着急地找到我,说是她的领导要让她做一个数据,比较着急,她尝试了很多方法都不太理想。要处理的数据说多也多,说不多也确实不算多,手动慢慢处理也可以做完,但是现在就是没有太多时间了。

看着她十分焦急,我也就当仁不让了。

凭借好多年都不怎么使用过Excel了,果然折腾了大约十分钟也是无果。

毕竟是从业十几年了,怎么可能在这样一个小事上翻车呢?更何况还是此情此景。

灵光一闪,我想到了DuckDB。

问题

现在有两张表格:直播时间表live和订单表order

  • 直播时间表

记录了主播直播的时间段。

日期 直播时间段 主播
2023-10-08 19:20-21:30 主播A
2023-10-09 17:00-18:00 主播A
2023-10-09 19:00-21:00 主播B
2023-10-09 14:00-16:00 主播C
2023-10-10 14:00-15:30 主播D
2023-10-10 16:00-19:00 主播D
2023-10-10 13:30-14:00 主播A
2023-10-10 19:30-20:30 主播C
  • 订单表

记录了主播直播时的用户下单数据。

支付时间 金额
2023-10-10 18:27:22 299
2023-10-10 18:15:29 129
2023-10-10 18:05:01 299
2023-10-10 17:49:30 299
2023-10-10 17:48:57 129
2023-10-10 17:37:44 99
2023-10-10 16:33:02 249
2023-10-10 21:50:11 299
2023-10-10 13:38:48 99

现在需要计算每位主播带来的成交金额?

这个场景在职场还是比较常见的,如果是你,你会怎么处理呢?如果有更好的处理方法,欢迎评论。

解决

且看我是如何一步步解决这个问题的

  1. 使用DBeave创建DuckDB数据库

对于该步骤还不熟悉的同学可以查看文章结尾的相关文章

  1. 查看数据
select * from 'E:\live.csv';
select * from 'E:\order.csv';

  1. live表进行处理

我们的目的是要得到直播的开始时间和结束时间,所以需要先把直播时间段分割后,然后再与日期列进行合并。

select *, string_split(直播时间段, '-') tm from 'E:\live.csv';

通过观察,使用string_split函数将字符串分割。分割后tm列为数组

然后将日期列与tm列拼接,生成start_timeend_time列。

select *, strptime
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值