Skip to content

Conversation

@renardeinside
Copy link
Contributor

This PR introduces the application skeleton, based on React, Vite, TailwindCSS + ShadCN (frontend) and FastAPI in the backend.

@github-actions
Copy link

github-actions bot commented Aug 28, 2025

❌ 384/389 passed, 12 flaky, 5 failed, 17 skipped, 4h46m4s total

❌ test_save_and_load_checks_from_lakebase_table_with_user_installation: databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase. (2.049s)
databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase.
[gw9] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
09:12 INFO [databricks.labs.dqx.installer.install] Please answer a couple of questions to provide TEST_SCHEMA DQX run configuration. The configuration can also be updated manually after the installation.
09:12 INFO [databricks.labs.dqx.installer.install] DQX will be installed in the TEST_SCHEMA location: '/Users/<your_user>/.dqx'
09:12 INFO [databricks.labs.dqx.installer.install] Deleting DQX v0.9.4+2220251016091215 from https://DATABRICKS_HOST
09:12 INFO [databricks.labs.dqx.installer.install] Uninstalling DQX complete
[gw9] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
❌ test_save_and_load_checks_from_lakebase_table_with_output_modes: databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase. (380ms)
databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase.
[gw6] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
[gw6] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
❌ test_profiler_workflow_save_to_lakebase: databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase. (15.633s)
databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase.
[gw9] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
09:12 INFO [databricks.labs.dqx.installer.install] Please answer a couple of questions to provide TEST_SCHEMA DQX run configuration. The configuration can also be updated manually after the installation.
09:12 INFO [databricks.labs.dqx.installer.install] DQX will be installed in the TEST_SCHEMA location: '/Users/<your_user>/.dqx'
09:12 INFO [databricks.labs.dqx.installer.install] Installing DQX v0.9.4+2220251016091217
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Creating dashboards...
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Reading dashboard assets from /home/runner/work/dqx/dqx/src/databricks/labs/dqx/queries/quality/dashboard...
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Using 'main.dqx_test.output_table' output table as the source table for the dashboard...
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing : No expression was parsed from ''
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing unsupported field in dashboard.yml: tiles.00_2_dq_error_types.hidden
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing : No expression was parsed from ''
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Installing 'DQX_Quality_Dashboard' dashboard in '/Users/3fe685a1-96cc-4fec-8cdb-6944f5c9787e/.r4Jk/dashboards'
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=profiler
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=quality-checker
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=e2e
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.install] Installation completed successfully!
09:12 INFO [databricks.labs.dqx.installer.install] Please answer a couple of questions to provide TEST_SCHEMA DQX run configuration. The configuration can also be updated manually after the installation.
09:12 INFO [databricks.labs.dqx.installer.install] DQX will be installed in the TEST_SCHEMA location: '/Users/<your_user>/.dqx'
09:12 INFO [databricks.labs.dqx.installer.install] Installing DQX v0.9.4+2220251016091217
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Creating dashboards...
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Reading dashboard assets from /home/runner/work/dqx/dqx/src/databricks/labs/dqx/queries/quality/dashboard...
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Using 'main.dqx_test.output_table' output table as the source table for the dashboard...
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing : No expression was parsed from ''
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing unsupported field in dashboard.yml: tiles.00_2_dq_error_types.hidden
09:12 WARNING [databricks.labs.lsql.dashboards] Parsing : No expression was parsed from ''
09:12 INFO [databricks.labs.dqx.installer.dashboard_installer] Installing 'DQX_Quality_Dashboard' dashboard in '/Users/3fe685a1-96cc-4fec-8cdb-6944f5c9787e/.r4Jk/dashboards'
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=profiler
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=quality-checker
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Creating new job configuration for step=e2e
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Updating configuration for step=e2e job_id=332899495174561
09:12 INFO [databricks.labs.dqx.installer.install] Installation completed successfully!
09:12 INFO [databricks.labs.dqx.installer.install] Deleting DQX v0.9.4+2220251016091217 from https://DATABRICKS_HOST
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Removing job_id=896055926390403, as it is no longer needed
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Removing job_id=949082591269897, as it is no longer needed
09:12 INFO [databricks.labs.dqx.installer.workflow_installer] Removing job_id=332899495174561, as it is no longer needed
09:12 INFO [databricks.labs.dqx.installer.install] Uninstalling DQX complete
[gw9] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
❌ test_save_and_load_checks_from_lakebase_table_with_run_config: databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase. (389ms)
databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase.
[gw3] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
[gw3] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
❌ test_save_and_load_checks_from_lakebase_table: databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase. (319ms)
databricks.sdk.errors.platform.BadRequest: Failed to create database instance because you have hit the workspace limit. Contact Databricks for quota increase.
[gw8] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python
[gw8] linux -- Python 3.12.11 /home/runner/work/dqx/dqx/.venv/bin/python

Flaky tests:

  • 🤪 test_profiler_workflow_class (12.11s)
  • 🤪 test_profiler_workflow_with_custom_install_folder (57.496s)
  • 🤪 test_e2e_workflow (6m9.372s)
  • 🤪 test_profiler_workflow (1m6.09s)
  • 🤪 test_profiler_workflow_for_multiple_run_configs (1m5.733s)
  • 🤪 test_profiler_workflow_for_patterns (1m19.444s)
  • 🤪 test_quality_checker (50.36s)
  • 🤪 test_apply_checks_and_save_in_tables_for_patterns_exclude_no_tables_matching (9m52.752s)
  • 🤪 test_quality_checker_workflow_for_multiple_run_configs_table_checks_storage (1m11.813s)
  • 🤪 test_profiler_workflow_for_patterns_table_checks_storage (1m30.422s)
  • 🤪 test_quality_checker_workflow_for_patterns (1m12.099s)
  • 🤪 test_quality_checker_workflow_table_checks_storage (1m11.307s)

Running from acceptance #2813

@mwojtyczka mwojtyczka requested a review from Copilot August 29, 2025 10:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces the application skeleton for a full-stack web application with a React frontend and FastAPI backend. The implementation includes a modern tech stack with TailwindCSS, ShadCN UI components, and comprehensive development tooling.

  • Adds React-based frontend with TanStack Router, React Query, and ShadCN UI components
  • Implements FastAPI backend with user authentication, database configuration, and API endpoints
  • Sets up development environment with TypeScript, ESLint, Prettier, and comprehensive build tooling

Reviewed Changes

Copilot reviewed 43 out of 48 changed files in this pull request and generated 2 comments.

File Description
ui/* Complete React frontend setup with routing, state management, and UI components
src/databricks/labs/dqx/app/* FastAPI backend with authentication, configuration, and API endpoints
pyproject.toml Added app dependencies for FastAPI, uvicorn, and database libraries
docs/dqx/docs/dev/contributing.mdx Added development setup documentation for the new app

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.


## Contributing to the DQX App

DQX App is a web application that provides a user interface for DQX. It is built with React and FastAPI.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we mention Lakehouse app as deployment mechanism to give a bit more context?

"pylint~=3.3.1",
"pylint-per-file-ignores~=1.3",
"pylint-pytest==2.0.0a0",
"pylint_pydantic",
Copy link
Contributor

@mwojtyczka mwojtyczka Aug 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pin the version

return f"postgresql://{self.user}:{self.password}@{self.host}:{self.port}/{self.database}?sslmode=require"


class DatabaseManager(BaseModel):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should not belong to config

@@ -0,0 +1,5 @@
import logoUrl from "/logo.svg";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we use existing logo from docs, or does it have to live inside the app?


Add a new `.env` file in the root of the project with the following content:
```
DQX_DEV_TOKEN=<your-databricks-token>
Copy link
Contributor

@mwojtyczka mwojtyczka Sep 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should recommend using oauth. Earlier in the docs we have a note on this.
Is this DQX_DEV_TOKEN correct? it's not a standard evn var and it is not used anywhere in this PR

# The models cannot be delcared as dependency here buecase PyPI does not support URL-based dependencies which would prevent releases.
]
app = [
"fastapi",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should pin the versions


N.b. - The `DQX_DEV_TOKEN` is a Databricks token that you can generate in the Databricks UI or via the Databricks CLI:
```bash
databricks token create --lifetime-seconds 3600 --comment "DQX App Development Token"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
databricks token create --lifetime-seconds 3600 --comment "DQX App Development Token"
databricks tokens create --lifetime-seconds 3600 --comment "DQX App Development Token"


2. Run the backend in development mode:
```bash
uvicorn src.databricks.labs.dqx.app.app:app --reload
Copy link
Contributor

@mwojtyczka mwojtyczka Sep 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only way i could make it work on my machine was to enter the shell hatch shell or run it, or hatch run python -m uvicorn src.databricks.labs.dqx.app.app:app --reload, otherwise i was getting zsh: command not found: uvicorn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants