# Read a columnar file

Acquire / file

read Parquet, ORC, Avro, Arrow, Iceberg, Delta

Page: <https://meridian.online/operations/read-a-columnar-file>

## Status

Runs as a SQL step.

arcform carries it as a `sql:` step today.

## The DuckDB step

read Parquet

It reads the `orders` table the proofs share. Create it first:

```sql
CREATE TABLE orders AS SELECT * FROM (VALUES
  (1,  'Alice Ng',      'north', DATE '2026-01-03', 120.00, 'widget', 'a|b',   '{"channel":"web","items":[1,2]}'),
  (2,  'alice ng',      'north', DATE '2026-01-05',  80.50, 'gadget', 'b',     '{"channel":"shop","items":[3]}'),
  (3,  'Bob  Okafor',   'south', DATE '2026-01-05', 300.00, 'widget', 'a|c',   '{"channel":"web","items":[4,5,6]}'),
  (4,  'Carla Díaz',    'east',  DATE '2026-01-09',  NULL,  'gizmo',  NULL,    '{"channel":"web","items":[]}'),
  (5,  'Bob Okafor',    'south', DATE '2026-01-12',  45.25, 'gadget', 'c',     '{"channel":"phone","items":[7]}'),
  (6,  'Dev Patel',     'west',  DATE '2026-01-12', 510.00, 'widget', 'a',     '{"channel":"web","items":[8,9]}'),
  (7,  'Carla Diaz',    'east',  DATE '2026-01-20',  99.99, 'gizmo',  'b|c',   '{"channel":"shop","items":[10]}'),
  (8,  'Dev Patel',     'west',  DATE '2026-02-02', 510.00, 'widget', 'a',     '{"channel":"web","items":[8,9]}'),
  (9,  'Eve Larsen',    NULL,    DATE '2026-02-03',  15.00, 'gadget', NULL,    '{"channel":"web","items":[11]}'),
  (10, 'Alice Ng',      'north', DATE '2026-02-10', 220.00, 'gizmo',  'a|b|c', '{"channel":"phone","items":[12,13]}')
) t(order_id, customer, region, order_date, amount, product, tags, meta);
```

Then run the statement:

```sql
COPY orders TO '<your_scratch_dir>/orders.parquet' (FORMAT parquet);
CREATE TEMP TABLE result AS
SELECT count(*) AS n, sum(amount) AS total FROM read_parquet('<your_scratch_dir>/orders.parquet');
SELECT * FROM result;
SELECT CASE WHEN ((SELECT n = 10 AND total = 1900.74 FROM result)) THEN 'as expected' ELSE error('the Parquet file did not read back as 10 rows totalling 1900.74') END AS verdict;
```

Replace `<your_scratch_dir>` with a directory of your own that you can write to before running the statement.

The statement writes `orders.parquet` itself, in `<your_scratch_dir>`.

It needs nothing installed beyond DuckDB itself.

## Variants

- [Read an Arrow file or stream](https://meridian.online/operations/read-a-columnar-file/read-an-arrow-file-or-stream): Read Arrow IPC files, record-batch streams or Arrow datasets into a table.
- [Read an Avro file](https://meridian.online/operations/read-a-columnar-file/read-an-avro-file): Read Avro container files or messages into rows, using the schema embedded in them or given separately.
- [Read a lakehouse table](https://meridian.online/operations/read-a-columnar-file/read-a-lakehouse-table): Read a Delta Lake, Iceberg or Hudi table through its metadata, including earlier versions of it.
- [Read an ORC file](https://meridian.online/operations/read-a-columnar-file/read-an-orc-file): Read ORC files into a table.
- Read another columnar format: Read a table from a DuckDB database file, a Vortex file or another columnar store.
- [Read a Parquet file](https://meridian.online/operations/read-a-columnar-file/read-a-parquet-file): Read one or many Parquet files into a table, reading only the columns and row groups the query needs.

## What other tools call it

Meridian's classification; an independent blind rating agreed on 86.2% of 312 rows (exact class, version 2).

- Azure Data Factory: [`Avro format (source)`](https://learn.microsoft.com/en-us/azure/data-factory/format-avro) (read 2026-09-27)
- Azure Data Factory: [`Delta format (source)`](https://learn.microsoft.com/en-us/azure/data-factory/format-delta) (read 2026-09-27)
- Azure Data Factory: [`ORC format (source)`](https://learn.microsoft.com/en-us/azure/data-factory/format-orc) (read 2026-09-27)
- Azure Data Factory: [`Parquet format (source)`](https://learn.microsoft.com/en-us/azure/data-factory/format-parquet) (read 2026-09-27)
- Apache DataFusion: [`Arrow`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`Avro`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`Parquet`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- DuckDB: `arrow_scan` (read 2026-09-27)
- DuckDB: `arrow_scan_dumb` (read 2026-09-27)
- DuckDB: `parquet_scan` (read 2026-09-27)
- DuckDB: `read_duckdb` (read 2026-09-27)
- DuckDB: `read_parquet` (read 2026-09-27)
- DuckDB: `seq_scan` (read 2026-09-27)
- Duckle: [`Apache Iceberg`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- Duckle: [`Avro`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- Duckle: [`Delta Lake`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- Duckle: [`Parquet`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- Duckle: [`Vortex`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/frontend/src/workflow-ui/palette-data.ts) (read 2026-09-25)
- EasyMorph: [`Import from Apache Parquet`](https://help.easymorph.com/doku.php?id=transformations:importapacheparquet) (read 2026-09-27)
- AWS Glue: [`Avro (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-avro-home.html) (read 2026-09-27)
- AWS Glue: [`Delta Lake (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-delta-lake.html) (read 2026-09-27)
- AWS Glue: [`Hudi (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-hudi.html) (read 2026-09-27)
- AWS Glue: [`Iceberg (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-iceberg.html) (read 2026-09-27)
- AWS Glue: [`ORC (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-orc-home.html) (read 2026-09-27)
- AWS Glue: [`Parquet (read)`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-parquet-home.html) (read 2026-09-27)
- Apache Hop: [`Avro file input`](https://hop.apache.org/manual/latest/pipeline/transforms/avro-file-input.html) (read 2026-09-27)
- Apache Hop: [`Data stream input`](https://hop.apache.org/manual/latest/pipeline/transforms/data-stream-input.html) (read 2026-09-27)
- Apache Hop: [`Parquet file input`](https://hop.apache.org/manual/latest/pipeline/transforms/parquet-file-input.html) (read 2026-09-27)
- Apache Hop: [`Spark lake table input`](https://hop.apache.org/manual/latest/pipeline/transforms/spark-lake-table-input.html) (read 2026-09-27)
- KNIME Analytics Platform: [`KNIME Extension for Big Data File Formats (extension)`](https://api.hub.knime.com/extensions/org.knime.features.bigdata.fileformats) (read 2026-09-27)
- Apache NiFi: [`AvroReader`](https://nifi.apache.org/components/org.apache.nifi.avro.AvroReader/) (read 2026-09-27)
- Pentaho Data Integration: [`Avro Input`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Avro input (deprecated)`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`ORC Input`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Parquet Input`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Polars: [`read_avro`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_delta`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_ipc`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_ipc_stream`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_parquet`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`scan_delta`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`scan_iceberg`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`scan_ipc`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`scan_parquet`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`scan_pyarrow_dataset`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Power Query M: [`Arrow.Document`](https://learn.microsoft.com/en-us/powerquery-m/arrow-document) (read 2026-09-27)
- Power Query M: [`Arrow.FromBinary`](https://learn.microsoft.com/en-us/powerquery-m/arrow-frombinary) (read 2026-09-27)
- Power Query M: [`DeltaLake.Metadata`](https://learn.microsoft.com/en-us/powerquery-m/accessing-data-functions) (read 2026-09-27)
- Power Query M: [`DeltaLake.Table`](https://learn.microsoft.com/en-us/powerquery-m/accessing-data-functions) (read 2026-09-27)
- Power Query M: [`Parquet.Document`](https://learn.microsoft.com/en-us/power-query/connectors/parquet) (read 2026-09-27)
- Apache SeaTunnel: [`Avro format`](https://seatunnel.apache.org/docs/2.3.13/connectors/formats/avro) (read 2026-09-27)
- Talend: [`tAvroInput`](https://help.qlik.com/talend/en-US/components/8.0/avro/avro-component) (read 2026-09-27)
- Talend: [`tAvroStreamInput`](https://help.qlik.com/talend/en-US/components/8.0/avro/avro-component) (read 2026-09-27)
- Talend: [`tFileInputORC`](https://help.qlik.com/talend/en-US/components/8.0/orc/orc-component) (read 2026-09-27)
- Talend: [`tFileInputParquet`](https://help.qlik.com/talend/en-US/components/8.0/parquet/parquet-component) (read 2026-09-27)
- Talend: [`tFileStreamInputParquet`](https://help.qlik.com/talend/en-US/components/8.0/parquet/parquet-component) (read 2026-09-27)
- VisiData: [`arrow (loader)`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/loaders/arrow.py#L8) (read 2026-09-23)
- VisiData: [`arrows (loader)`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/loaders/arrow.py#L14) (read 2026-09-23)
- VisiData: [`parquet (loader)`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/loaders/parquet.py#L8) (read 2026-09-23)
- Yggdrasil Decision Forests: [`avro: (read)`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/dataset/avro_example.h) (read 2026-09-27)
