Skip to main content

dataowl

dataowl reports facts about a table in Databricks (Unity Catalog / Delta Lake): size, files, rows, schema and table properties. It is meant for data engineers who build a dbt staging model and want the facts without writing exploratory SQL. It reports what exists and never gives recommendations.

Requirements

  • Unity Catalog.
  • Databricks Runtime 14.3 LTS or above, or serverless compute. Verified on serverless (Spark Connect).
  • PySpark is provided by Databricks. dataowl has no other runtime dependencies.

Installation

In a Databricks notebook:

%pip install dataowl==0.1.0

Usage

import dataowl

dataowl.inspect("catalog.schema.table").show()

As a JSON-serializable dict, where every fact has a value, a source and a reason when it is unavailable:

overview = dataowl.inspect("catalog.schema.table")
overview.to_dict()

Row counts are skipped for views, materialized views and foreign tables unless you ask for them:

dataowl.inspect("catalog.schema.some_view", count_views=True).show()

Names with characters other than letters, digits and underscore are quoted with backticks: dataowl.inspect("`my-catalog`.schema.table").

Example output

Output for Databricks' public sample data (samples.nyctaxi.trips):

samples.nyctaxi.trips   (MANAGED, DELTA)

Size:                    354.2 KB
Files:                   1  (avg 354.2 KB)
Rows:                    21 932
Columns:                 6  (6 incl. nested)
Partitioned by:          –
Clustered by:            –
Change Data Feed:        true
Log retention:           not set (default)
Deleted file retention:  not set (default)
Created:                 2025-09-30 11:28
Last modified:           2026-09-14 15:07
Owner:                   System user
Comment:                 –

SCHEMA
  #  name                   type       nullable  comment
  1  tpep_pickup_datetime   timestamp  yes
  2  tpep_dropoff_datetime  timestamp  yes
  3  trip_distance          double     yes
  4  fare_amount            double     yes
  5  pickup_zip             int        yes
  6  dropoff_zip            int        yes

Principles

  • Read-only. Only SELECT, DESCRIBE and SHOW. Nothing is written, optimized or analyzed.
  • Facts only. No recommendations or assessments.
  • No row values leave Spark. Only aggregates and metadata are collected.
  • Unavailable facts are reported with a reason. Missing permissions or an unsupported object type make the affected facts n/a (<reason>); the rest of the report is still produced. Only a table that does not exist or is not accessible raises TableNotFoundError.

Facts per object type

Facts Source MANAGED, EXTERNAL STREAMING_TABLE, MATERIALIZED_VIEW FOREIGN VIEW UNKNOWN or n/a type
Object type, format, owner, comment, created information_schema.tables yes yes yes yes yes (n/a if the query fails)
Size, files, avg file size, last modified, partitioning, clustering DESCRIBE DETAIL yes attempted¹ attempted¹ no attempted¹
Columns and schema information_schema.columns yes yes yes yes yes
Field count incl. nested Spark schema yes yes yes yes yes
Change Data Feed, log and deleted file retention SHOW TBLPROPERTIES yes attempted¹ attempted¹ no attempted¹
Rows COUNT(*) yes MATERIALIZED_VIEW: with count_views=True; STREAMING_TABLE: yes with count_views=True with count_views=True UNKNOWN: yes; n/a type: with count_views=True

¹ The query runs. If Databricks does not support it for the object, the facts are shown as n/a (<reason>).

"UNKNOWN" is a table_type dataowl does not recognize, such as MANAGED_SHALLOW_CLONE. The original value is shown in the header. "n/a type" means the object type could not be read.

Fields

  • Last modified is the last data change, from DESCRIBE DETAIL. Created is from information_schema.tables.
  • Rows is an exact COUNT(*). On large tables this costs compute.
  • Files (avg ...) is the size divided by the number of files.
  • Columns (... incl. nested) counts every field, including fields inside structs, array elements and map keys and values.
  • not set (default) means the table property is not set, so Databricks uses its default. dataowl does not report what the default is.
  • # in the schema table is a running number from 1 in column order.

Known deviations

  • information_schema.columns.ordinal_position is documented as numbered from 1, but has been observed 0-based in Databricks (serverless, October 2026). dataowl keeps the raw value in ColumnInfo.position and shows a running number in the # column.

License

MIT. Copyright (c) 2026 Alexandro Dronnen. See LICENSE.

Metadata

Release files for dataowl 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dataowl 0.1.0
File Size Uploaded
dataowl-0.1.0.tar.gz 35.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dataowl 0.1.0
File Interpreter ABI Platform
dataowl-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 56.9 kB

Release files / dataowl-0.1.0.tar.gz

Download URL dataowl-0.1.0.tar.gz
Size 35.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c6086f3095be694bf2877a7c5a95e3b5c71fc33e8be0eea7f5c65e1aa32f2fb2
BLAKE2b-256 checksum
How to use checksums
6da89b3927ea61ce3e045a4bba971f897210012fa2746cf28f53f28682bfca2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / dataowl-0.1.0-py3-none-any.whl

Download URL dataowl-0.1.0-py3-none-any.whl
Size 21.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40b8c515e7d17375e8dcb3e0d618aa7feba24d452077e3d662faae8c7dd8991f
BLAKE2b-256 checksum
How to use checksums
965b082110c95f9fc3ca60311a992fe629cde0df462e0700803abe306fe81b33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page