df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

读多个分片

中等 20-io 读取文件 iocsvglobmulti-filefilename

订单数据按月切成了多个 CSV 分片,放在 data/ 目录下。读取所有匹配 data/orders_2026_0*.csv 的文件,合并成一张表,并标明每一行来自哪个文件。

  • 每个分片都有表头,列为 order_id, customer_id, amount,逗号分隔。目录里可能还有其它不匹配这个模式的文件,不要读。
  • 有的分片可能只有表头没有数据;customer_id 可能为空(读成 null)。
  • 类型:order_id、customer_id 为整数,amount 为浮点数。
  • 新增一列 source_file:该行所在文件的文件名,不含目录,例如 orders_2026_01.csv。

输出

列为 order_id, customer_id, amount, source_file,行顺序不限。

工作目录里的文件 (case base)

data/orders_2026_01.csv
order_id,customer_id,amount
1001,1,25.5
1002,2,100.0
1003,1,8.25
共 4 行
data/orders_2026_02.csv
order_id,customer_id,amount
2001,3,60.0
2002,4,15.75
共 3 行
data/orders_2026_03.csv
order_id,customer_id,amount
3001,2,42.0
3002,5,9.9
3003,6,120.0
3004,1,33.3
共 5 行

期望输出 (case base,行顺序不限)

#order_idInt64customer_idInt64amountFloat64source_fileString
1 1001 1 25.5 orders_2026_01.csv
2 1002 2 100.0 orders_2026_01.csv
3 1003 1 8.25 orders_2026_01.csv
4 2001 3 60.0 orders_2026_02.csv
5 2002 4 15.75 orders_2026_02.csv
6 3001 2 42.0 orders_2026_03.csv
7 3002 5 9.9 orders_2026_03.csv
8 3003 6 120.0 orders_2026_03.csv
9 3004 1 33.3 orders_2026_03.csv
共 9 行