RowRay
RowRay compares one dbt model from a Git base ref with the current working tree, including committed, staged, unstaged, and untracked changes. It targets dbt projects using BigQuery and never materializes the model.
What it compares
By default, RowRay compiles both versions and uses BigQuery dry runs to report:
- Bytes scanned and estimated on-demand cost
- Top-level columns added or removed
- Top-level column type changes
With --execute, RowRay runs guarded aggregate queries and also reports:
- Row counts
- Null rates
- Approximate distinct counts
- Sums for numeric columns
With --column NAME, it adds BASE and working-tree row counts plus percentage variation for every value in one column.
Requirements
- Python 3.10+
- Git
- An existing dbt project connected to BigQuery
- A
dbtexecutable available in the current shell
Before installing RowRay, this must succeed from the dbt project:
dbt debug
RowRay reuses the project's dbt_project.yml, profiles.yml, target, environment variables, and BigQuery credentials. OAuth/ADC, service-account, and service-account-json profiles are supported.
Install
Install the current Git version with uv:
uv tool install git+ssh://git@github.com/mathieuMTT/rowray.git
rowray --help
If uv says its executable directory is missing from PATH, run uv tool update-shell and restart the shell.
Run once without permanent installation:
uvx --from git+ssh://git@github.com/mathieuMTT/rowray.git rowray --help
Use
Run RowRay inside the existing dbt project:
rowray diff --select my_model
The Git base defaults to origin/HEAD, then origin/main, then origin/master. Override it or the dbt target when needed:
rowray diff --select my_model --base origin/main --target dev
Pass required dbt variables as YAML or JSON. Identical values are used for BASE and the working tree:
rowray diff \
--select my_model \
--vars '{"execution_date":"2026-10-29","is_backfill":false}'
Forward dbt warning handling when the project promotes warnings to errors:
rowray diff \
--select my_model \
--warn-error-options '{"silence":["CustomKeyInConfigDeprecation"]}'
Compile both versions using dbt full-refresh semantics. This still does not materialize the model:
rowray diff --select my_model --full-refresh
Compare aggregate data
Aggregate profiling requires explicit execution:
rowray diff --select my_model --execute
Analyze counts and variation for every value of one shared scalar column:
rowray diff --select my_model --execute --column page_type
--column prints actual distinct values. Do not use it on sensitive or very high-cardinality columns unless that terminal output is acceptable.
Execution and cost safety
- BASE compiles in an isolated Git worktree.
- The current dbt project compiles concurrently with all local changes and an isolated target directory.
- BigQuery comparisons are dry-run only unless
--executeis passed. - Each aggregate query is dry-run first and skipped above 200 GiB.
- Each executed aggregate query also sets
maximum_bytes_billedto 200 GiB. --columnruns an additional aggregate query with its own 200 GiB cap.- Raw rows are not downloaded, but
--columndownloads distinct values and their counts. - dbt compilation may run warehouse introspection or project macros such as
run_query; RowRay cannot make arbitrary dbt projects query-free.
The displayed USD amount is an estimate:
bytes processed / 1024⁴ × $6.25
$6.25/TiB is a fixed BigQuery on-demand list price, not fetched automatically. The estimate does not account for the free tier, capacity pricing, reservations, discounts, currency, or prior monthly usage.
Current limits
- One selected model per command
- BigQuery only
- Top-level schema comparison only
- Schema comparison checks column names and types, not
NULLABLE/REQUIREDmode changes - Aggregate profiles skip repeated, nested,
GEOGRAPHY, andJSONcolumns - Distinct counts use
APPROX_COUNT_DISTINCT --columnreturns every value without an output limit- The current project must already have its dbt dependencies installed; RowRay installs dependencies only in the BASE worktree
Update or remove
uv tool upgrade rowray
uv tool uninstall rowray
See ROADMAP.md for planned stages.
Metadata
Release files for rowray 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| rowray-0.1.0.tar.gz | 68.0 kB | With provenance | Details for rowray-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| rowray-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for rowray-0.1.0-py3-none-any.whl |
Total release size: 79.1 kB
Release files / rowray-0.1.0.tar.gz
| Download URL | rowray-0.1.0.tar.gz |
|---|---|
| Size | 68.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f038480d981a2018596e108cbf78a2bd3bf40f1dfe1d7b5ae59d30ff9a96c220
|
|
BLAKE2b-256 checksum How to use checksums |
85f36bfcd71fe64d7ef222daca2844134fd94548ec5fff2b588384ffbde82e8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 31, 2026.
Transparency logRelease files / rowray-0.1.0-py3-none-any.whl
| Download URL | rowray-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efbd34835c5177b9aa76d7c8c067389645e54f7408d9183d2f0d7ddd8d0f97e8
|
|
BLAKE2b-256 checksum How to use checksums |
7d7083af79433fa8982f36d757a103c72bcd099796e69dd60498f92f39ec85b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 31, 2026.
Transparency logSecurity for rowray 0.1.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for rowray-0.1.0.tar.gz
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 31, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.