← All guides Free

How to check a Parquet file's schema and column stats

A Parquet file stores its schema in the footer, so you can see every column and type without reading the rows. In Parquet Reader, click Columns for names and types, then right-click a column header and choose View Statistics for null counts and min and max values. No code is needed and nothing is uploaded.

Check it in Parquet Reader

  1. Open the file. The card at the top shows the row and column counts.
  2. Click Columns or press โŒ˜โ‡งB. The sidebar lists every column with its type, such as BIGINT, VARCHAR, DOUBLE or DATE.
  3. Right-click a column header and choose View Statistics.

The statistics sheet shows:

The statistics in the file are optional

Parquet can store min, max and null count for each column in each row group. A writer may leave them out, so they are not guaranteed. A file written with write_statistics=False in pyarrow has none at all.

Parquet Reader calculates its numbers from the data itself, so a file without stored statistics still gets a full sheet. The trade-off is that the app has to read the column, which takes longer on a large file than reading the footer.

Other ways to read the schema

DuckDB command line

Column names and types:

duckdb -c "DESCRIBE SELECT * FROM 'orders.parquet'"

The statistics stored in the file, one line per column per row group:

duckdb -c "SELECT path_in_schema, type, stats_min_value, stats_max_value, stats_null_count FROM parquet_metadata('orders.parquet')"
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ path_in_schema โ”‚    type    โ”‚ stats_min_value โ”‚ stats_max_value โ”‚ stats_null_count โ”‚
โ”‚    varchar     โ”‚  varchar   โ”‚     varchar     โ”‚     varchar     โ”‚      int64       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ order_id       โ”‚ INT64      โ”‚ 1001            โ”‚ 1005            โ”‚                0 โ”‚
โ”‚ status         โ”‚ BYTE_ARRAY โ”‚ paid            โ”‚ refunded        โ”‚                0 โ”‚
โ”‚ country        โ”‚ BYTE_ARRAY โ”‚ DE              โ”‚ UA              โ”‚                0 โ”‚
โ”‚ amount         โ”‚ DOUBLE     โ”‚ 15.5            โ”‚ 120.0           โ”‚                1 โ”‚
โ”‚ order_date     โ”‚ INT32      โ”‚ 2026-01-03      โ”‚ 2026-02-02      โ”‚                0 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Two things to read carefully here. type is the physical type: the date is stored as INT32 and text as BYTE_ARRAY, while DESCRIBE shows DATE and VARCHAR. And on a file written without statistics, the last three columns are all NULL. That means nothing was stored, not that the column is empty.

pyarrow

import pyarrow.parquet as pq

f = pq.ParquetFile("orders.parquet")
print(f.schema_arrow)
print(f.metadata.num_rows, f.metadata.num_row_groups)
print(f.metadata.row_group(0).column(3).statistics)

parquet-cli prints the same footer information from a terminal.

What the free version does not do

Everything on this page is free. Opening a folder of files as one dataset is Pro. See the guide to partitioned folders.

Get Parquet Reader

Free for single files. No account needed. macOS 13 or later.

Get it on the App Store

On Windows or Linux? Free builds are in the download section.