If the objects in S3 are named according to hive conventions, it will do what you would hope and not read any files with no data to match the query.
It will even use range requests in S3 to avoid fetching the entire blob.
See here for the details https://duckdb.org/2021/06/25/querying-parquet.html#automati...