Predicate pushdown skips row groups using only the footer's min/max stats. Whether that skipping actually helps depends on one thing: was the data sorted on the filtered column before it was written.
This file has no partitioning at all — one file, 8 row groups, one column: customer_id (integers 0-999). Toggling regenerates each row group's min/max.
Red tick marks the filter value on each row group's 0-999 range.
This file has zero partitioning — there is no customer_id=.../ directory anywhere. All pruning shown above comes purely from footer min/max stats on row groups within a single file that was already opened. That is the distinction Parquet Internals makes explicit: partition pruning skips whole files using directory metadata before any file is opened; row-group statistics skip row groups inside a file you already decided to read.
date would not have helped this query at all — the filter is on customer_id, a column that was never a partition key. Sorting the write, not adding a partition column, is what makes this query cheap.