# List columns and types

Shape / inspect

list columns, types, metadata

Page: <https://meridian.online/operations/list-columns-and-types>

## Status

Runs as a SQL step.

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

## The DuckDB step

columns and types

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
CREATE TEMP TABLE result AS
SELECT column_name, column_type FROM (DESCRIBE orders);
SELECT * FROM result;
SELECT CASE WHEN ((SELECT count(*) = 8 AND max(column_type) FILTER (WHERE column_name = 'order_date') = 'DATE' FROM result)) THEN 'as expected' ELSE error('the schema is not eight columns with order_date a DATE') END AS verdict;
```

It needs nothing installed beyond DuckDB itself.

## Variants

- [List tables and other catalog objects](https://meridian.online/operations/list-columns-and-types/list-tables-and-catalog-objects): List the databases, schemas, tables, views, functions or types a connection or session holds.
- Describe a table's columns: List the name, type and other properties of each column of a table, query or stream.
- Count rows and columns: Report how many rows and columns a table has.
- Check that a table or column exists: Test whether a named table or column exists, as a flag or a pass or fail.
- [Read a file's schema and metadata](https://meridian.online/operations/list-columns-and-types/read-a-files-schema-and-metadata): Read a data file's schema, row groups, statistics, header or detected format without loading its data.
- [List keys, constraints and indexes](https://meridian.online/operations/list-columns-and-types/list-keys-constraints-and-indexes): List the keys, constraints, indexes, partitions, dependencies or relationships declared on tables.
- Other metadata: Read metadata no other variant covers, such as a model's expected inputs or a dataset's descriptive information.

## What other tools call it

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

- Alteryx Designer: [`Allocate Metainfo`](https://help.alteryx.com/current/en/designer/tools/demographic-analysis/allocate-metainfo-tool.html) (read 2026-09-27)
- Alteryx Designer: [`Behavior Metainfo`](https://help.alteryx.com/current/en/designer/tools/behavior-analysis/behavior-metainfo-tool.html) (read 2026-09-27)
- Alteryx Designer: [`Field Info`](https://help.alteryx.com/current/en/designer/tools/developer/field-info-tool.html) (read 2026-09-27)
- Apache DataFusion: [`Basic SQL Information Schema (TABLES, VIEWS, COLUMNS)`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`DESCRIBE`](https://datafusion.apache.org/user-guide/sql/ddl.html) (read 2026-09-27)
- Apache DataFusion: [`SHOW COLUMNS FROM <table/view>`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`SHOW CREATE TABLE <view>`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`SHOW FUNCTIONS`](https://datafusion.apache.org/user-guide/sql/information_schema.html) (read 2026-09-27)
- Apache DataFusion: [`SHOW TABLES`](https://datafusion.apache.org/user-guide/features.html) (read 2026-09-27)
- Apache DataFusion: [`parquet_metadata`](https://datafusion.apache.org/user-guide/cli/functions.html) (read 2026-09-27)
- Apache DataFusion: [`schema`](https://docs.rs/datafusion/latest/datafusion/dataframe/struct.DataFrame.html) (read 2026-09-27)
- dbt-utils: [`get_filtered_columns_in_relation`](https://raw.githubusercontent.com/dbt-labs/dbt-utils/main/README.md) (read 2026-09-27)
- dbt-utils: [`get_relations_by_pattern`](https://raw.githubusercontent.com/dbt-labs/dbt-utils/main/README.md) (read 2026-09-27)
- dbt-utils: [`get_relations_by_prefix`](https://raw.githubusercontent.com/dbt-labs/dbt-utils/main/README.md) (read 2026-09-27)
- DuckDB: [`DESCRIBE`](https://duckdb.org/docs/current/sql/statements/describe) (read 2026-09-27)
- DuckDB: [`SHOW and SHOW DATABASES`](https://duckdb.org/docs/current/sql/statements/show) (read 2026-09-27)
- DuckDB: `duckdb_columns` (read 2026-09-27)
- DuckDB: `duckdb_constraints` (read 2026-09-27)
- DuckDB: `duckdb_coordinate_systems` (read 2026-09-27)
- DuckDB: `duckdb_databases` (read 2026-09-27)
- DuckDB: `duckdb_dependencies` (read 2026-09-27)
- DuckDB: `duckdb_indexes` (read 2026-09-27)
- DuckDB: `duckdb_schemas` (read 2026-09-27)
- DuckDB: `duckdb_sequences` (read 2026-09-27)
- DuckDB: `duckdb_tables` (read 2026-09-27)
- DuckDB: `duckdb_types` (read 2026-09-27)
- DuckDB: `duckdb_views` (read 2026-09-27)
- DuckDB: `parquet_bloom_probe` (read 2026-09-27)
- DuckDB: `parquet_file_metadata` (read 2026-09-27)
- DuckDB: `parquet_full_metadata` (read 2026-09-27)
- DuckDB: `parquet_kv_metadata` (read 2026-09-27)
- DuckDB: `parquet_metadata` (read 2026-09-27)
- DuckDB: `parquet_schema` (read 2026-09-27)
- DuckDB: `pragma_show` (read 2026-09-27)
- DuckDB: `pragma_table_info` (read 2026-09-27)
- Duckle: [`Describe`](https://github.com/slothflowlabs/duckle/blob/f85f8960edfb6efbf4cb89d58a7b32e16df0e867/website/docs/components.html) (read 2026-09-25)
- EasyMorph: [`Table metadata`](https://help.easymorph.com/doku.php?id=transformations:metadata) (read 2026-09-27)
- AWS Glue: [`printSchema`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html) (read 2026-09-27)
- AWS Glue: [`schema`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html) (read 2026-09-27)
- Apache Hop: [`Column exists`](https://hop.apache.org/manual/latest/pipeline/transforms/columnexists.html) (read 2026-09-27)
- Apache Hop: [`Columns exist in a table`](https://hop.apache.org/manual/latest/workflow/actions/columnsexist.html) (read 2026-09-27)
- Apache Hop: [`File metadata`](https://hop.apache.org/manual/latest/pipeline/transforms/filemetadata.html) (read 2026-09-27)
- Apache Hop: [`Get table names`](https://hop.apache.org/manual/latest/pipeline/transforms/gettablenames.html) (read 2026-09-27)
- Apache Hop: [`JDBC Metadata`](https://hop.apache.org/manual/latest/pipeline/transforms/jdbcmetadata.html) (read 2026-09-27)
- Apache Hop: [`Metadata structure of stream`](https://hop.apache.org/manual/latest/pipeline/transforms/metastructure.html) (read 2026-09-27)
- Apache Hop: [`Table Exists`](https://hop.apache.org/manual/latest/pipeline/transforms/tableexists.html) (read 2026-09-27)
- Apache Hop: [`Table exists`](https://hop.apache.org/manual/latest/workflow/actions/tableexists.html) (read 2026-09-27)
- Ibis: [`TypeOf`](https://github.com/ibis-project/ibis/blob/05d2b293344e86cb41c1a426071734f7e270335a/ibis/expr/operations/generic.py) (read 2026-09-27)
- KNIME Analytics Platform: [`Column Name Extractor`](https://api.hub.knime.com/nodes/*dFOX6ADqOFSQJtqe?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`DB Data Spec Extractor`](https://api.hub.knime.com/nodes/*mWe5bs8HqRo2SN9_?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Extract Color`](https://api.hub.knime.com/nodes/*CjAczqOZgMr4kuYu?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Extract Table Dimension`](https://api.hub.knime.com/nodes/*OKIm2p_-wmvT8FNf?details=full) (read 2026-09-27)
- KNIME Analytics Platform: [`Extract Table Spec`](https://api.hub.knime.com/nodes/*MD6juzhoWJLJGkE9?details=full) (read 2026-09-27)
- Apache NiFi: [`ExtractAvroMetadata`](https://nifi.apache.org/components/org.apache.nifi.processors.avro.ExtractAvroMetadata/) (read 2026-09-27)
- Apache NiFi: [`ExtractRecordSchema`](https://nifi.apache.org/components/org.apache.nifi.processors.standard.ExtractRecordSchema/) (read 2026-09-27)
- Apache NiFi: [`IdentifyMimeType`](https://nifi.apache.org/components/org.apache.nifi.processors.standard.IdentifyMimeType/) (read 2026-09-27)
- Pentaho Data Integration: [`Check if a column exists`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Get table names`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Metadata structure of stream`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Read metadata`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Read metadata from Copybook`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Pentaho Data Integration: [`Table exists`](https://docs.pentaho.com/pdia-data-integration/9.3-data-integration/pdi-transformation-steps-reference-overview) (read 2026-09-27)
- Polars: [`DataFrame attributes (family)`](https://docs.pola.rs/api/python/stable/reference/dataframe/attributes.html) (read 2026-09-27)
- Polars: [`DataType expressions (group)`](https://docs.pola.rs/api/python/stable/reference/datatype_expr/index.html) (read 2026-09-27)
- Polars: [`read_ipc_schema`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_parquet_metadata`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Polars: [`read_parquet_schema`](https://docs.pola.rs/api/python/stable/reference/io.html) (read 2026-09-27)
- Power Query M: [`Table.ColumnCount`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#information) (read 2026-09-27)
- Power Query M: [`Table.ColumnNames`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#column-operations) (read 2026-09-27)
- Power Query M: [`Table.ColumnsOfType`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#column-operations) (read 2026-09-27)
- Power Query M: [`Table.Keys`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#transformation) (read 2026-09-27)
- Power Query M: [`Table.PartitionKey`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#transformation) (read 2026-09-27)
- Power Query M: [`Table.PartitionValues`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#information) (read 2026-09-27)
- Power Query M: [`Table.Schema`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#information) (read 2026-09-27)
- Power Query M: [`Tables.GetRelationships`](https://learn.microsoft.com/en-us/powerquery-m/table-functions#information) (read 2026-09-27)
- Apache SeaTunnel: [`TableFilter`](https://seatunnel.apache.org/docs/2.3.13/transforms/table-filter) (read 2026-09-27)
- Apache SeaTunnel: [`TableRename`](https://seatunnel.apache.org/docs/2.3.13/transforms/table-rename) (read 2026-09-27)
- SQLMesh: [`EXTERNAL`](https://github.com/SQLMesh/sqlmesh/blob/23b237cea7218cc8f338b89c14f0957394a0003b/docs/concepts/models/model_kinds.md) (read 2026-09-27)
- subtoken: [`pragma_hnsw_index_info`](https://duckdb.org/docs/current/core_extensions/vss.html) (read 2026-09-27)
- Talend: [`Database table and column list components (family)`](https://help.qlik.com/talend/en-US/components/8.0/About) (read 2026-09-27)
- VisiData: [`columns-all`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/metasheets.py#L133) (read 2026-09-23)
- VisiData: [`columns-selected`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/indexsheet.py#L102) (read 2026-09-23)
- VisiData: [`columns-sheet`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/metasheets.py#L135) (read 2026-09-23)
- VisiData: [`dive-metadata`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/loaders/hdf5.py#L87) (read 2026-09-23)
- VisiData: [`sheets-all`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/indexsheet.py#L94) (read 2026-09-23)
- VisiData: [`sheets-stack`](https://github.com/saulpw/visidata/blob/7609212ec2febafa9caba7183cbebfaf49627909/visidata/indexsheet.py#L93) (read 2026-09-23)
- Yggdrasil Decision Forests: [`DataSpecification`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/dataset/data_spec.proto) (read 2026-09-27)
- Yggdrasil Decision Forests: [`Model accessors (group)`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/model/generic_model.py) (read 2026-09-27)
- Yggdrasil Decision Forests: [`data_spec / set_data_spec`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/model/generic_model.py) (read 2026-09-27)
- Yggdrasil Decision Forests: [`extract_input_feature_names`](https://github.com/google/yggdrasil-decision-forests/blob/0a54b57c95ff0cf42ecf0310ace0513a4f32cb65/yggdrasil_decision_forests/port/python/ydf/learner/generic_learner.py) (read 2026-09-27)
