recce-nightly 0.56.0.20250226__tar.gz → 0.56.0.20250227__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {recce_nightly-0.56.0.20250226/recce_nightly.egg-info → recce_nightly-0.56.0.20250227}/PKG-INFO +64 -48
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/README.md +64 -48
- recce_nightly-0.56.0.20250227/recce/VERSION +1 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/dbt_adapter/__init__.py +3 -2
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/404.html +1 -1
- recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/323-9565a741f1447d32.js → recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/771-71780b322a32673c.js +16 -16
- recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/a30376cd-de90859763d1c500.js +1 -0
- recce_nightly-0.56.0.20250227/recce/data/_next/static/chunks/app/page-edc85fe647299e04.js +1 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/index.html +2 -2
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/index.txt +2 -2
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/cll.py +7 -4
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227/recce_nightly.egg-info}/PKG-INFO +64 -48
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/SOURCES.txt +5 -5
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_schema.py +6 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_dbt.py +33 -15
- recce_nightly-0.56.0.20250226/recce/VERSION +0 -1
- recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/a30376cd-ea4617387c84b12e.js +0 -1
- recce_nightly-0.56.0.20250226/recce/data/_next/static/chunks/app/page-cbfaebac7904d946.js +0 -1
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/LICENSE +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/base.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/dbt_adapter/dbt_version.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/adapter/sqlmesh_adapter.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/check_api.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/check_func.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/run_api.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/apis/run_func.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/artifact.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/cli.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/config.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/core.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/157e448a-49151cad1ec51175.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/29e3cc0d-490dbff344996865.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/312-3e9b49b718b98737.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/36e1c10d-3bcdd9bb8564108c.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/3998a672-e71829c331c77ccb.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/450c323b-79414be6f43ef15c.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/47d8844f-ccb4e71fbabd12f3.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/6dc81886-03da5372308c376d.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/7a8a3e83-f7fe5f14c56108bf.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/7f27ae6c-c484e79185298424.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/868e7b5c-36d94ba5a58a2e6a.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/9746af58-daab848e55b5faf7.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/app/_not-found/page-c2ee18b5ec3e3d57.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/app/layout-5b30ab0207459cb8.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/b3b1872b-97ea0be5bd9b42bc.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/b63b1b3f-13deddaaba264453.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/c132bf7d-740a7144e614cb2d.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/ce84277d-ced9559f73764a27.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/cf0511cf-88e5bf54e88504a3.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/fee69bc6-2cf346c884a74e9d.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/framework-ded83d71b51ce901.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/main-45628b9d5f140527.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/main-app-19c0918a6bb54549.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/pages/_app-ff7f75fed61fbef3.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/pages/_error-5e587f051118d074.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/chunks/webpack-300961f547f48fe7.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/css/1d7428fe54fca42f.css +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.5c8b3804.woff +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-800-normal.c03acce9.woff2 +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.83d3554a.woff2 +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-cyrillic-ext-800-normal.8a4a9645.woff +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-800-normal.388abfc2.woff2 +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-800-normal.e7b55ea8.woff +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.40cba3c6.woff +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-latin-ext-800-normal.85728e97.woff2 +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.0bd05041.woff +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/_next/static/media/montserrat-vietnamese-800-normal.dfbbc7ba.woff2 +0 -0
- {recce_nightly-0.56.0.20250226/recce/data/_next/static/VoDYiUXoc7vMf5GJnfqdi → recce_nightly-0.56.0.20250227/recce/data/_next/static/rQ7Tqp0WxQV1LCcOMdNrh}/_buildManifest.js +0 -0
- {recce_nightly-0.56.0.20250226/recce/data/_next/static/VoDYiUXoc7vMf5GJnfqdi → recce_nightly-0.56.0.20250227/recce/data/_next/static/rQ7Tqp0WxQV1LCcOMdNrh}/_ssgManifest.js +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/favicon.ico +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/imgs/feedback/thumbs-down.png +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/imgs/feedback/thumbs-up.png +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/data/logo/recce-logo-white.png +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/diff.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/CONFIG +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/SENTRY_DNS +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/collector.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/event/track.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/exceptions.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/git.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/github.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/check.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/run.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/models/types.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/pull_request.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/run.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/server.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/state.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/summary.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/core.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/dataframe.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/histogram.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/lineage.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/profile.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/query.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/rowcount.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/schema.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/top_k.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/tasks/valuediff.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/breaking.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/cache.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/io.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/logger.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/pydantic_model.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/recce_cloud.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/util/singleton.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce/yaml/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/dependency_links.txt +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/entry_points.txt +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/requires.txt +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/recce_nightly.egg-info/top_level.txt +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/setup.cfg +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/setup.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/conftest.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/adapter/dbt_adapter/test_selector.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/__init__.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/conftest.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_histogram.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_lineage.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_preset_checks.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_profile.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_query.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_row_count.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_top_k.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/tasks/test_valuediff.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_cli.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_config.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_core.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_pull_request.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_server.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_state.py +0 -0
- {recce_nightly-0.56.0.20250226 → recce_nightly-0.56.0.20250227}/tests/test_summary.py +0 -0
{recce_nightly-0.56.0.20250226/recce_nightly.egg-info → recce_nightly-0.56.0.20250227}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: recce-nightly
|
|
3
|
-
Version: 0.56.0.
|
|
3
|
+
Version: 0.56.0.20250227
|
|
4
4
|
Summary: Environment diff tool for dbt
|
|
5
5
|
Home-page: https://github.com/InfuseAI/recce
|
|
6
6
|
Author: InfuseAI Dev Team
|
|
@@ -89,32 +89,22 @@ Dynamic: summary
|
|
|
89
89
|
|
|
90
90
|
## Introduction
|
|
91
91
|
|
|
92
|
-
`Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
|
|
93
|
-
|
|
92
|
+
`Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
|
|
93
|
+
team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks
|
|
94
|
+
during development, and automate checks in CI for PR review.
|
|
94
95
|
|
|
95
96
|
## Quick Start
|
|
96
97
|
|
|
97
|
-
|
|
98
|
+
You can launch Recce in any dbt project in just two commands:
|
|
98
99
|
|
|
99
100
|
```Bash
|
|
100
|
-
#
|
|
101
|
-
|
|
102
|
-
dbt run --target prod
|
|
103
|
-
dbt docs generate --target prod --target-path ./target-base
|
|
104
|
-
|
|
105
|
-
# Switch to your dev branch
|
|
106
|
-
git switch my-awesome-branch
|
|
107
|
-
|
|
108
|
-
# build your dev environment
|
|
109
|
-
dbt seed
|
|
110
|
-
dbt run
|
|
111
|
-
dbt docs generate
|
|
112
|
-
|
|
113
|
-
# Start a Recce Instance
|
|
101
|
+
# cd into your dbt project
|
|
102
|
+
pip install -U recce
|
|
114
103
|
recce server
|
|
115
104
|
```
|
|
116
105
|
|
|
117
|
-
|
|
106
|
+
To use the full suite of diffing tools in Recce, please prepare two environments to compare against. Follow
|
|
107
|
+
our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
|
|
118
108
|
|
|
119
109
|
## What you get
|
|
120
110
|
|
|
@@ -124,18 +114,20 @@ Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started
|
|
|
124
114
|
|
|
125
115
|
### Using Recce for Impact Assessment in dbt PR Review
|
|
126
116
|
|
|
127
|
-
- Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
|
|
117
|
+
- Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
|
|
118
|
+
review.
|
|
128
119
|
- Add Checks to your Checklist to note observed impacts.
|
|
129
120
|
- Share your Checklist with the PR reviewer.
|
|
130
121
|
- (`Recce Cloud`) Automatically sync Check status between Recce Instances
|
|
131
122
|
- (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
|
|
132
123
|
|
|
133
|
-
Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
|
|
134
|
-
|
|
124
|
+
Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
|
|
125
|
+
the Recce blog.
|
|
135
126
|
|
|
136
127
|
## Try the Online Demo
|
|
137
128
|
|
|
138
|
-
We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
|
|
129
|
+
We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
|
|
130
|
+
to inspect the data impact caused by the modeling changes in the PR.
|
|
139
131
|
|
|
140
132
|
For each demo, review the following:
|
|
141
133
|
|
|
@@ -146,8 +138,9 @@ For each demo, review the following:
|
|
|
146
138
|
This will enable you to validate if the intention of the PR has been successfully implemented without unintended impact.
|
|
147
139
|
|
|
148
140
|
> [!TIP]
|
|
149
|
-
Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
|
|
150
|
-
>
|
|
141
|
+
> Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
|
|
142
|
+
> investigation.
|
|
143
|
+
>
|
|
151
144
|
|
|
152
145
|
### Demo 1: Calculation logic change
|
|
153
146
|
|
|
@@ -158,22 +151,24 @@ This pull request adjusts the **logic** for how customer lifetime value is calcu
|
|
|
158
151
|
|
|
159
152
|
### Demo 2: Refactoring
|
|
160
153
|
|
|
161
|
-
This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
|
|
154
|
+
This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
|
|
155
|
+
enhancing readability and maintainability:
|
|
162
156
|
|
|
163
157
|
- [Demo #2](https://pr2.demo.datarecce.io/)
|
|
164
158
|
- [Pull request #2](https://github.com/DataRecce/jaffle_shop_duckdb/pull/2)
|
|
165
159
|
|
|
166
160
|
### Demo 3: Analysis
|
|
167
161
|
|
|
168
|
-
This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
|
|
162
|
+
This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
|
|
163
|
+
rounding in our data processing.
|
|
169
164
|
|
|
170
165
|
- [Demo #3](https://pr3.demo.datarecce.io/)
|
|
171
166
|
- [Pull request #3](https://github.com/DataRecce/jaffle_shop_duckdb/pull/3)
|
|
172
167
|
|
|
173
|
-
|
|
174
168
|
### Demo 4: Enhancing the existing model
|
|
175
169
|
|
|
176
|
-
This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
|
|
170
|
+
This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
|
|
171
|
+
part of a promotion.
|
|
177
172
|
|
|
178
173
|
- [Demo #4](https://pr44.demo.datarecce.io/)
|
|
179
174
|
- [Pull request #44](https://github.com/DataRecce/jaffle_shop_duckdb/pull/44)
|
|
@@ -186,39 +181,51 @@ This pull request **enhances** the existing `customers` model by categorizing wh
|
|
|
186
181
|
- Modular SQL
|
|
187
182
|
- Reproducible pipelines
|
|
188
183
|
|
|
189
|
-
Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
|
|
184
|
+
Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
|
|
185
|
+
analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling
|
|
186
|
+
changes is even more critical.
|
|
190
187
|
|
|
191
188
|
The only way to understand the impact of code changes on data is to compare the data before-and-after the changes.
|
|
192
189
|
|
|
193
190
|
## Features
|
|
194
191
|
|
|
195
|
-
`Recce` provides a data review environment for data teams to check their work during development, and then again as part
|
|
192
|
+
`Recce` provides a data review environment for data teams to check their work during development, and then again as part
|
|
193
|
+
of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and
|
|
194
|
+
recording data impact from code changes.
|
|
196
195
|
|
|
197
196
|
### Lineage Diff
|
|
198
197
|
|
|
199
|
-
[Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
|
|
198
|
+
[Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
|
|
199
|
+
the lineage have been added, removed, or modified.
|
|
200
200
|
|
|
201
201
|
### Structural Diffs
|
|
202
202
|
|
|
203
|
-
- [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
|
|
203
|
+
- [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
|
|
204
|
+
added or removed columns
|
|
204
205
|
- [Row Count Diff](https://datarecce.io/docs/features/lineage/#row-count-diff) - Compares the row count for tables
|
|
205
206
|
|
|
206
207
|
### Statistical Diffs
|
|
207
208
|
|
|
208
209
|
Advanced Diffs provide high level statistics about data change:
|
|
209
210
|
|
|
210
|
-
- [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
|
|
211
|
-
|
|
212
|
-
- [
|
|
213
|
-
|
|
211
|
+
- [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
|
|
212
|
+
count, min, max, average.
|
|
213
|
+
- [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column
|
|
214
|
+
in the table.
|
|
215
|
+
- [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical
|
|
216
|
+
column.
|
|
217
|
+
- [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric
|
|
218
|
+
column in an overlay histogram chart.
|
|
214
219
|
|
|
215
220
|
### Query Diff
|
|
216
221
|
|
|
217
|
-
[Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
|
|
222
|
+
[Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
|
|
223
|
+
of dbt macros.
|
|
218
224
|
|
|
219
225
|
### Checklist
|
|
220
226
|
|
|
221
|
-
The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
|
|
227
|
+
The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
|
|
228
|
+
validation process.
|
|
222
229
|
|
|
223
230
|
- Save the results of checks
|
|
224
231
|
- Re-run checks
|
|
@@ -229,9 +236,11 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
|
|
|
229
236
|
|
|
230
237
|
## Who's using `Recce`?
|
|
231
238
|
|
|
232
|
-
`Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
|
|
239
|
+
`Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
|
|
240
|
+
non-technical stakeholders to approve data checks.
|
|
233
241
|
|
|
234
|
-
- **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
|
|
242
|
+
- **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
|
|
243
|
+
before merging.
|
|
235
244
|
- **Analysts** can use `Recce` to self-review and understand how data modeling changes have changed the data.
|
|
236
245
|
- **Stakeholders** can use `Recce` to sign-off on data after updates have been made
|
|
237
246
|
|
|
@@ -239,13 +248,16 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
|
|
|
239
248
|
|
|
240
249
|
The [Recce Documentation](https://datarecce.io/docs/) covers everything you need to get started.
|
|
241
250
|
|
|
242
|
-
We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
|
|
251
|
+
We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
|
|
252
|
+
Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
|
|
243
253
|
|
|
244
|
-
For advice on best practices in preparing dbt environments to enable effective PR review, check
|
|
254
|
+
For advice on best practices in preparing dbt environments to enable effective PR review, check
|
|
255
|
+
out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
|
|
245
256
|
|
|
246
257
|
## Recce Cloud
|
|
247
258
|
|
|
248
|
-
`Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
|
|
259
|
+
`Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
|
|
260
|
+
multiple pull requests.
|
|
249
261
|
|
|
250
262
|
With `Recce Cloud`:
|
|
251
263
|
|
|
@@ -255,7 +267,8 @@ With `Recce Cloud`:
|
|
|
255
267
|
|
|
256
268
|
[Recce Cloud](https://datarecce.io/cloud) is currently in early-access private beta.
|
|
257
269
|
|
|
258
|
-
To find out how you can get access
|
|
270
|
+
To find out how you can get access
|
|
271
|
+
please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
|
|
259
272
|
|
|
260
273
|
<a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
|
|
261
274
|
<img alt="Book us with [Cal.com](http://cal.com/)" src="https://cal.com/book-with-cal-light.svg" />
|
|
@@ -270,17 +283,20 @@ To find out how you can get access please [book an appointment](https://cal.com/
|
|
|
270
283
|
|
|
271
284
|
For `Recce Cloud` users:
|
|
272
285
|
|
|
273
|
-
- An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
|
|
286
|
+
- An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
|
|
287
|
+
`Recce Cloud`. This file is encrypted *before* transmission.
|
|
274
288
|
|
|
275
289
|
## Community & Support
|
|
276
290
|
|
|
277
291
|
Here's where you can get in touch with the `Recce` team and find support:
|
|
278
292
|
|
|
279
|
-
- [dbt Slack](https://www.getdbt.com/community/join-the-community) in
|
|
293
|
+
- [dbt Slack](https://www.getdbt.com/community/join-the-community) in
|
|
294
|
+
the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
|
|
280
295
|
- [Recce Discord](https://discord.gg/VpwXRC34jz)
|
|
281
296
|
- Email us [product@datarecce.io](mailto:product@datarecce.io)
|
|
282
297
|
|
|
283
|
-
If you believe you have found a bug, or there is some missing functionality in Recce, please open
|
|
298
|
+
If you believe you have found a bug, or there is some missing functionality in Recce, please open
|
|
299
|
+
a [GitHub Issue](https://github.com/DataRecce/recce/issues).
|
|
284
300
|
|
|
285
301
|
## Recce on the web
|
|
286
302
|
|
|
@@ -28,32 +28,22 @@
|
|
|
28
28
|
|
|
29
29
|
## Introduction
|
|
30
30
|
|
|
31
|
-
`Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
|
|
32
|
-
|
|
31
|
+
`Recce` is data validation toolkit for pull request (PR) review in dbt projects. Get enhanced visibility into how your
|
|
32
|
+
team’s dbt modeling changes impact data by comparing your dev branch with stable production data. Run manual data checks
|
|
33
|
+
during development, and automate checks in CI for PR review.
|
|
33
34
|
|
|
34
35
|
## Quick Start
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
You can launch Recce in any dbt project in just two commands:
|
|
37
38
|
|
|
38
39
|
```Bash
|
|
39
|
-
#
|
|
40
|
-
|
|
41
|
-
dbt run --target prod
|
|
42
|
-
dbt docs generate --target prod --target-path ./target-base
|
|
43
|
-
|
|
44
|
-
# Switch to your dev branch
|
|
45
|
-
git switch my-awesome-branch
|
|
46
|
-
|
|
47
|
-
# build your dev environment
|
|
48
|
-
dbt seed
|
|
49
|
-
dbt run
|
|
50
|
-
dbt docs generate
|
|
51
|
-
|
|
52
|
-
# Start a Recce Instance
|
|
40
|
+
# cd into your dbt project
|
|
41
|
+
pip install -U recce
|
|
53
42
|
recce server
|
|
54
43
|
```
|
|
55
44
|
|
|
56
|
-
|
|
45
|
+
To use the full suite of diffing tools in Recce, please prepare two environments to compare against. Follow
|
|
46
|
+
our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) to try it out for yourself.
|
|
57
47
|
|
|
58
48
|
## What you get
|
|
59
49
|
|
|
@@ -63,18 +53,20 @@ Follow our [5-minute Jaffle Shop tutorial](https://datarecce.io/docs/get-started
|
|
|
63
53
|
|
|
64
54
|
### Using Recce for Impact Assessment in dbt PR Review
|
|
65
55
|
|
|
66
|
-
- Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
|
|
56
|
+
- Select nodes in the lineage to perform Checks (diffs) as part of your impact assessment during development or PR
|
|
57
|
+
review.
|
|
67
58
|
- Add Checks to your Checklist to note observed impacts.
|
|
68
59
|
- Share your Checklist with the PR reviewer.
|
|
69
60
|
- (`Recce Cloud`) Automatically sync Check status between Recce Instances
|
|
70
61
|
- (`Recce Cloud`) Block PR merging until all Recce Checks have been approved
|
|
71
62
|
|
|
72
|
-
Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
|
|
73
|
-
|
|
63
|
+
Read more about using [Recce for Impact Assessment](https://datarecce.io/blog/hands-on-data-impact-analysis-recce/) on
|
|
64
|
+
the Recce blog.
|
|
74
65
|
|
|
75
66
|
## Try the Online Demo
|
|
76
67
|
|
|
77
|
-
We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
|
|
68
|
+
We provide three online Recce demos (based on Jaffle Shop), each is related to a specific pull request. Use these demos
|
|
69
|
+
to inspect the data impact caused by the modeling changes in the PR.
|
|
78
70
|
|
|
79
71
|
For each demo, review the following:
|
|
80
72
|
|
|
@@ -85,8 +77,9 @@ For each demo, review the following:
|
|
|
85
77
|
This will enable you to validate if the intention of the PR has been successfully implemented without unintended impact.
|
|
86
78
|
|
|
87
79
|
> [!TIP]
|
|
88
|
-
Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
|
|
89
|
-
>
|
|
80
|
+
> Don't forget to click the Checks tab to view the Recce Checklist, and perform your own Checks for further
|
|
81
|
+
> investigation.
|
|
82
|
+
>
|
|
90
83
|
|
|
91
84
|
### Demo 1: Calculation logic change
|
|
92
85
|
|
|
@@ -97,22 +90,24 @@ This pull request adjusts the **logic** for how customer lifetime value is calcu
|
|
|
97
90
|
|
|
98
91
|
### Demo 2: Refactoring
|
|
99
92
|
|
|
100
|
-
This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
|
|
93
|
+
This pull request performs some **refactoring** on the customers model by turning two CTEs into intermediate models,
|
|
94
|
+
enhancing readability and maintainability:
|
|
101
95
|
|
|
102
96
|
- [Demo #2](https://pr2.demo.datarecce.io/)
|
|
103
97
|
- [Pull request #2](https://github.com/DataRecce/jaffle_shop_duckdb/pull/2)
|
|
104
98
|
|
|
105
99
|
### Demo 3: Analysis
|
|
106
100
|
|
|
107
|
-
This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
|
|
101
|
+
This pull request introduces a new Rounding Effect **Analysis** feature, aimed at analyzing and reporting the impacts of
|
|
102
|
+
rounding in our data processing.
|
|
108
103
|
|
|
109
104
|
- [Demo #3](https://pr3.demo.datarecce.io/)
|
|
110
105
|
- [Pull request #3](https://github.com/DataRecce/jaffle_shop_duckdb/pull/3)
|
|
111
106
|
|
|
112
|
-
|
|
113
107
|
### Demo 4: Enhancing the existing model
|
|
114
108
|
|
|
115
|
-
This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
|
|
109
|
+
This pull request **enhances** the existing `customers` model by categorizing whether a customer has placed an order as
|
|
110
|
+
part of a promotion.
|
|
116
111
|
|
|
117
112
|
- [Demo #4](https://pr44.demo.datarecce.io/)
|
|
118
113
|
- [Pull request #44](https://github.com/DataRecce/jaffle_shop_duckdb/pull/44)
|
|
@@ -125,39 +120,51 @@ This pull request **enhances** the existing `customers` model by categorizing wh
|
|
|
125
120
|
- Modular SQL
|
|
126
121
|
- Reproducible pipelines
|
|
127
122
|
|
|
128
|
-
Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
|
|
123
|
+
Even so, 'bad merges' still happen and erroneous data and silent errors make their way into prod data. As self-serve
|
|
124
|
+
analytics opens dbt projects to many roles, and the size of dbt projects increase, the job of reviewing data modeling
|
|
125
|
+
changes is even more critical.
|
|
129
126
|
|
|
130
127
|
The only way to understand the impact of code changes on data is to compare the data before-and-after the changes.
|
|
131
128
|
|
|
132
129
|
## Features
|
|
133
130
|
|
|
134
|
-
`Recce` provides a data review environment for data teams to check their work during development, and then again as part
|
|
131
|
+
`Recce` provides a data review environment for data teams to check their work during development, and then again as part
|
|
132
|
+
of PR review. The suite of tools and diffs in Recce are specifically geared towards surfacing, understanding, and
|
|
133
|
+
recording data impact from code changes.
|
|
135
134
|
|
|
136
135
|
### Lineage Diff
|
|
137
136
|
|
|
138
|
-
[Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
|
|
137
|
+
[Lineage Diff](https://datarecce.io/docs/features/lineage/) is the main interface to `Recce` and shows which nodes in
|
|
138
|
+
the lineage have been added, removed, or modified.
|
|
139
139
|
|
|
140
140
|
### Structural Diffs
|
|
141
141
|
|
|
142
|
-
- [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
|
|
142
|
+
- [Schema Diff](https://datarecce.io/docs/features/lineage/#schema-diff) - Show the struture of the table including
|
|
143
|
+
added or removed columns
|
|
143
144
|
- [Row Count Diff](https://datarecce.io/docs/features/lineage/#row-count-diff) - Compares the row count for tables
|
|
144
145
|
|
|
145
146
|
### Statistical Diffs
|
|
146
147
|
|
|
147
148
|
Advanced Diffs provide high level statistics about data change:
|
|
148
149
|
|
|
149
|
-
- [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
|
|
150
|
-
|
|
151
|
-
- [
|
|
152
|
-
|
|
150
|
+
- [Profile Diff](https://datarecce.io/docs/features/lineage/#profile-diff): Compares stats such as count, distinct
|
|
151
|
+
count, min, max, average.
|
|
152
|
+
- [Value Diff](https://datarecce.io/docs/features/lineage/#value-diff): The matched count and percentage for each column
|
|
153
|
+
in the table.
|
|
154
|
+
- [Top-K Diff](https://datarecce.io/docs/features/lineage/#top-k-diff): Compares the distribution of a categorical
|
|
155
|
+
column.
|
|
156
|
+
- [Histogram Diff](https://datarecce.io/docs/features/lineage/#histogram-diff): Compares the distribution of a numeric
|
|
157
|
+
column in an overlay histogram chart.
|
|
153
158
|
|
|
154
159
|
### Query Diff
|
|
155
160
|
|
|
156
|
-
[Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
|
|
161
|
+
[Query Diff](https://datarecce.io/docs/features/query/) compares the results of any ad-hoc query, and supports the use
|
|
162
|
+
of dbt macros.
|
|
157
163
|
|
|
158
164
|
### Checklist
|
|
159
165
|
|
|
160
|
-
The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
|
|
166
|
+
The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to record the results of your data
|
|
167
|
+
validation process.
|
|
161
168
|
|
|
162
169
|
- Save the results of checks
|
|
163
170
|
- Re-run checks
|
|
@@ -168,9 +175,11 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
|
|
|
168
175
|
|
|
169
176
|
## Who's using `Recce`?
|
|
170
177
|
|
|
171
|
-
`Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
|
|
178
|
+
`Recce` is useful for validating your own work or the work of others, and can also be used to share data impact with
|
|
179
|
+
non-technical stakeholders to approve data checks.
|
|
172
180
|
|
|
173
|
-
- **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
|
|
181
|
+
- **Data engineers** can use `Recce` to ensure the structural integrity of the data and understand the scope of impact
|
|
182
|
+
before merging.
|
|
174
183
|
- **Analysts** can use `Recce` to self-review and understand how data modeling changes have changed the data.
|
|
175
184
|
- **Stakeholders** can use `Recce` to sign-off on data after updates have been made
|
|
176
185
|
|
|
@@ -178,13 +187,16 @@ The [checklist](https://datarecce.io/docs/features/checklist/) provides a way to
|
|
|
178
187
|
|
|
179
188
|
The [Recce Documentation](https://datarecce.io/docs/) covers everything you need to get started.
|
|
180
189
|
|
|
181
|
-
We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
|
|
190
|
+
We’d advise first following the [5-minute tutorial](https://datarecce.io/docs/get-started-jaffle-shop/) that uses Jaffle
|
|
191
|
+
Shop and then [trying out Recce](https://datarecce.io/docs/get-started/) in your own project.
|
|
182
192
|
|
|
183
|
-
For advice on best practices in preparing dbt environments to enable effective PR review, check
|
|
193
|
+
For advice on best practices in preparing dbt environments to enable effective PR review, check
|
|
194
|
+
out [Best Practices for Preparing Environments](https://datarecce.io/docs/guides/best-practices-prep-env/).
|
|
184
195
|
|
|
185
196
|
## Recce Cloud
|
|
186
197
|
|
|
187
|
-
`Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
|
|
198
|
+
`Recce Cloud` provides a backbone of supporting services that make Recce usage more suitable for teams reviewing
|
|
199
|
+
multiple pull requests.
|
|
188
200
|
|
|
189
201
|
With `Recce Cloud`:
|
|
190
202
|
|
|
@@ -194,7 +206,8 @@ With `Recce Cloud`:
|
|
|
194
206
|
|
|
195
207
|
[Recce Cloud](https://datarecce.io/cloud) is currently in early-access private beta.
|
|
196
208
|
|
|
197
|
-
To find out how you can get access
|
|
209
|
+
To find out how you can get access
|
|
210
|
+
please [book an appointment](https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss) for a short meeting.
|
|
198
211
|
|
|
199
212
|
<a href="https://cal.com/team/recce/chat?utm_source=banner&utm_campaign=oss">
|
|
200
213
|
<img alt="Book us with [Cal.com](http://cal.com/)" src="https://cal.com/book-with-cal-light.svg" />
|
|
@@ -209,17 +222,20 @@ To find out how you can get access please [book an appointment](https://cal.com/
|
|
|
209
222
|
|
|
210
223
|
For `Recce Cloud` users:
|
|
211
224
|
|
|
212
|
-
- An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
|
|
225
|
+
- An encrypted version of your `Recce` [state file](https://datarecce.io/docs/features/state-file/) is storedon
|
|
226
|
+
`Recce Cloud`. This file is encrypted *before* transmission.
|
|
213
227
|
|
|
214
228
|
## Community & Support
|
|
215
229
|
|
|
216
230
|
Here's where you can get in touch with the `Recce` team and find support:
|
|
217
231
|
|
|
218
|
-
- [dbt Slack](https://www.getdbt.com/community/join-the-community) in
|
|
232
|
+
- [dbt Slack](https://www.getdbt.com/community/join-the-community) in
|
|
233
|
+
the [#tools-recce](https://getdbt.slack.com/archives/C05C28V7CPP) channel
|
|
219
234
|
- [Recce Discord](https://discord.gg/VpwXRC34jz)
|
|
220
235
|
- Email us [product@datarecce.io](mailto:product@datarecce.io)
|
|
221
236
|
|
|
222
|
-
If you believe you have found a bug, or there is some missing functionality in Recce, please open
|
|
237
|
+
If you believe you have found a bug, or there is some missing functionality in Recce, please open
|
|
238
|
+
a [GitHub Issue](https://github.com/DataRecce/recce/issues).
|
|
223
239
|
|
|
224
240
|
## Recce on the web
|
|
225
241
|
|
|
@@ -230,4 +246,4 @@ You can follow along with news about `Recce` and blogs from our team in the foll
|
|
|
230
246
|
- [Medium blog](https://medium.com/inthepipeline)
|
|
231
247
|
- [@datarecce](https://x.com/DataRecce) on Twitter/X
|
|
232
248
|
- [@DataRecce@mastodon.social](https://mastodon.social/@DataRecce) on Mastodon
|
|
233
|
-
- [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
|
|
249
|
+
- [@datarecce.bsky.social](https://bsky.app/profile/datarecce.bsky.social) on BlueSky
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.56.0.20250227
|
|
@@ -721,7 +721,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
721
721
|
table_map = {}
|
|
722
722
|
|
|
723
723
|
# Handle column-level lineage, only enable if env var is set to true
|
|
724
|
-
if os.getenv('RECCE_CLL_ENABLED')
|
|
724
|
+
if os.getenv('RECCE_CLL_ENABLED') != 'false':
|
|
725
725
|
if base is False:
|
|
726
726
|
table_map = self.build_table_map(base)
|
|
727
727
|
self.append_column_lineage(nodes, parent_map, base)
|
|
@@ -770,7 +770,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
770
770
|
}
|
|
771
771
|
|
|
772
772
|
try:
|
|
773
|
-
|
|
773
|
+
dialect = self.adapter.type()
|
|
774
|
+
column_lineage = cll(compiled_sql, schema=schema, dialect=dialect)
|
|
774
775
|
except RecceException as exception:
|
|
775
776
|
print(exception)
|
|
776
777
|
_apply_all_columns(node, 'unknown', [])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-300961f547f48fe7.js"/><script src="/_next/static/chunks/157e448a-49151cad1ec51175.js" async=""></script><script src="/_next/static/chunks/312-3e9b49b718b98737.js" async=""></script><script src="/_next/static/chunks/main-app-19c0918a6bb54549.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-300961f547f48fe7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:I[16892,[],\"\"]\n3:I[60299,[],\"\"]\n4:I[43276,[],\"\"]\na:I[28103,[],\"\"]\n5:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n6:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n7:{\"display\":\"inline-block\"}\n8:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\nb:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L1\",null,{\"buildId\":\"rQ7Tqp0WxQV1LCcOMdNrh\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L2\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[null,[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$5\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$6\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$7\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$8\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L9\"],\"globalErrorComponent\":\"$a\",\"missingSlots\":\"$Wb\"}]\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n2:null\n"])</script></body></html>
|