Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
91309bc
Extend summary metrics with per-check-name breakdowns
ghanse Mar 27, 2026
78cd9e3
Add unit tests for per-check summary metrics
ghanse Mar 27, 2026
d99bf2d
add track_extended_metrics flag to DQMetricsObserver, use DQXError
ghanse Mar 29, 2026
09ac7c6
add integration tests for extended metrics, update unit tests
ghanse Mar 29, 2026
4022ec0
add duplicate alias collision detection in per-check metrics
ghanse Mar 29, 2026
1167903
cleanup: improve naming and fix misleading docstring
ghanse Mar 29, 2026
7bf8468
Merge branch 'main' into ghanse/issue-943-extend-summary-metrics-chec…
ghanse Mar 29, 2026
a1141c1
Compact check-level metrics into single check_metrics row
ghanse Apr 1, 2026
5e4c8a8
Merge branch 'main' into ghanse/issue-943-extend-summary-metrics-chec…
mwojtyczka Apr 15, 2026
40614ca
code review feedback implementation
mwojtyczka Apr 15, 2026
664a9c4
refactor
mwojtyczka Apr 15, 2026
b3eda66
refactor
mwojtyczka Apr 15, 2026
f42e0d3
updated docs and demo
mwojtyczka Apr 15, 2026
e2f3329
refactor
mwojtyczka Apr 15, 2026
897a910
fmt
mwojtyczka Apr 15, 2026
28844c0
updated docs
mwojtyczka Apr 15, 2026
8075336
Merge branch 'main' into ghanse/issue-943-extend-summary-metrics-chec…
mwojtyczka Apr 20, 2026
13e67f0
use uv for building deps for workflows
mwojtyczka Apr 20, 2026
a4b1bae
reduced test flakiness
mwojtyczka Apr 20, 2026
cb9f41f
reduce tests flakiness
mwojtyczka Apr 20, 2026
7d2c966
increase token expiration time, fix assertions
mwojtyczka Apr 20, 2026
ce19c99
fixed building wheel
mwojtyczka Apr 20, 2026
a4a86a9
fix wheel build
mwojtyczka Apr 20, 2026
1581e1e
fix build
mwojtyczka Apr 20, 2026
d022cfc
fix build
mwojtyczka Apr 20, 2026
554f1e6
fix tests
mwojtyczka Apr 20, 2026
798d825
reduce anomaly contention in CI
mwojtyczka Apr 21, 2026
b4941d9
bumped acceptance action
mwojtyczka Apr 21, 2026
c5b9ab0
updated tests to reduce flakiness
mwojtyczka Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/actions/prebuild-wheel/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: 'Pre-build DQX wheel'
description: >
Builds the DQX wheel once per CI job and exports the absolute path as DQX_PREBUILT_WHEEL.
Tests that use PrebuiltWheels copy this artifact instead of running `pip wheel` per-test,
which avoids JFrog auth failures after the 1h OIDC token TTL expires mid-suite.
runs:
using: "composite"
steps:
- name: Build wheel
shell: bash
run: |
# Bump version per CI run so cluster library installs and pip caches
# don't reuse stale bytes. Delegate the scheme to blueprint so it
# matches what blueprint would compute per-test
NEW_VERSION="$(UV_FROZEN=1 uv run --quiet python -c '
from databricks.labs.blueprint.wheels import ProductInfo
from databricks.labs.dqx.config import WorkspaceConfig
print(ProductInfo.from_class(WorkspaceConfig).version())
')"
test -n "$NEW_VERSION" || { echo "failed to compute unreleased version"; exit 1; }

VERSION_FILE="src/databricks/labs/dqx/__about__.py"
sed -i "s/^__version__ = .*/__version__ = \"${NEW_VERSION}\"/" "$VERSION_FILE"

make build

# Restore so later steps see a clean tree
git checkout -- "$VERSION_FILE"

WHEEL_PATH="$(find dist -maxdepth 1 -name '*.whl' -print -quit)"
test -n "$WHEEL_PATH" || { echo "no wheel produced in dist/"; ls -la dist/; exit 1; }

printf '%s=%s\n' 'DQX_PREBUILT_WHEEL' "$PWD/$WHEEL_PATH" >> "$GITHUB_ENV"
30 changes: 19 additions & 11 deletions .github/workflows/acceptance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Run unit tests and generate test coverage report
run: make test
- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Integration tests are run from within tests/integration folder.
# Create .coveragerc with correct relative path to source code.
Expand All @@ -63,7 +63,7 @@ jobs:
# and generate code coverage for modules defined in .coveragerc
# Run 10 tests in parallel: https://github.com/databrickslabs/sandbox/blob/main/acceptance/ecosystem/pytest_run.py
- name: Run integration tests and generate test coverage report
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 2h
Expand All @@ -73,16 +73,15 @@ jobs:
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
COVERAGE_FILE: ${{ github.workspace }}/.coverage # make sure the coverage report is preserved

- name: Merge coverage reports and convert them to XML
run: make combine-coverage

# Recursively search the entire workspace directory for all coverage reports.
# All uploaded test coverage reports will be used even if publish is done multiple time.
- name: Publish test coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
use_oidc: true
files: coverage-combined.xml
flags: integration

integration_serverless:
needs: not-a-fork
Expand All @@ -104,6 +103,9 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Integration tests are run from within tests/integration folder.
# Create .coveragerc with correct relative path to source code.
- name: Prepare code coverage configuration for integration tests
Expand All @@ -116,7 +118,7 @@ jobs:
EOF

- name: Run integration tests on serverless cluster
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 2h
Expand All @@ -127,15 +129,15 @@ jobs:
ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}
DATABRICKS_SERVERLESS_COMPUTE_ID: ${{ env.DATABRICKS_SERVERLESS_COMPUTE_ID }}
COVERAGE_FILE: ${{ github.workspace }}/.coverage # make sure the coverage report is preserved

- name: Merge coverage reports and convert them to XML
run: make combine-coverage

# collects all coverage reports
- name: Publish test coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
use_oidc: true
files: coverage-combined.xml
flags: integration-serverless

e2e:
needs: not-a-fork
Expand All @@ -155,12 +157,15 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Required for DAB (Databricks Asset Bundle) e2e tests
- name: Install Databricks CLI
uses: databricks/setup-cli@596b0a354ba14aa59921aca1b02bd67c2b0a81a5 # v0.297.2

- name: Run e2e tests
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 2h
Expand Down Expand Up @@ -191,12 +196,15 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Required for DAB (Databricks Asset Bundle) e2e tests
- name: Install Databricks CLI
uses: databricks/setup-cli@596b0a354ba14aa59921aca1b02bd67c2b0a81a5 # v0.297.2

- name: Run e2e tests on serverless cluster
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 2h
Expand Down
23 changes: 14 additions & 9 deletions .github/workflows/anomaly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Create .coveragerc with correct relative path to source code.
- name: Prepare code coverage configuration for anomaly tests
run: |
Expand All @@ -54,7 +57,7 @@ jobs:
EOF

- name: Run anomaly integration tests
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 3h
Expand All @@ -68,17 +71,16 @@ jobs:
MLFLOW_TRACKING_URI: databricks
MLFLOW_REGISTRY_URI: databricks-uc
MLFLOW_HTTP_REQUEST_TIMEOUT: "600"
MLFLOW_HTTP_REQUEST_MAX_RETRIES: "10"

MLFLOW_HTTP_REQUEST_MAX_RETRIES: "9"
- name: Merge coverage reports and convert them to XML
run: make combine-coverage

# Recursively search the entire workspace directory for all coverage reports.
# All uploaded test coverage reports will be used even if publish is done multiple time.
- name: Publish test coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
use_oidc: true
files: coverage-combined.xml
flags: anomaly

anomaly-tests-serverless:
needs: not-a-fork
Expand All @@ -98,6 +100,9 @@ jobs:
- name: Setup environment
uses: ./.github/actions/setup-env

- name: Pre-build DQX wheel
uses: ./.github/actions/prebuild-wheel

# Create .coveragerc with correct relative path to source code.
- name: Prepare code coverage configuration for anomaly tests
run: |
Expand All @@ -109,7 +114,7 @@ jobs:
EOF

- name: Run anomaly integration tests on serverless cluster
uses: databrickslabs/sandbox/acceptance@3313d06ce86227537b3f37f5974f7eecb2a8e59a # acceptance/v0.4.4
uses: databrickslabs/sandbox/acceptance@83461e5dd7021feabb1a9ca3ee10d6f46b72092a # acceptance/v0.4.6
with:
vault_uri: ${{ secrets.VAULT_URI }}
timeout: 3h
Expand All @@ -124,13 +129,13 @@ jobs:
MLFLOW_TRACKING_URI: databricks
MLFLOW_REGISTRY_URI: databricks-uc
MLFLOW_HTTP_REQUEST_TIMEOUT: "600"
MLFLOW_HTTP_REQUEST_MAX_RETRIES: "10"

MLFLOW_HTTP_REQUEST_MAX_RETRIES: "9"
- name: Merge coverage reports and convert them to XML
run: make combine-coverage

# collects all coverage reports
- name: Publish test coverage
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
with:
use_oidc: true
files: coverage-combined.xml
flags: anomaly-serverless
Loading
Loading