partitionBy(event_date, country) builds a rigid directory tree
On the canvas
Four date directories, each fanned out by country. Hundreds of folders holding 2–3 MB files. The filtered query still reads 240 of them.
In plain English
Hive-style partitioning encodes column values into the path: /event_date=2026-09-10/country=US/. A filter on those columns prunes whole directories before a single file is opened. The paths are the layout — which is also why changing the choice means rewriting the entire table.
Without this step
Partition on something high-cardinality like user_id and you get one folder per value: millions of 200 KB files, where listing the table costs more than reading it.
Pruning works, but you picked those columns a year ago. What if the filters moved?