Hi all,
I’m trying to implement CI/CD for Databricks AI/BI dashboards using Declarative Automation Bundles, following guidance published by Databricks.
The documentation recommends exporting dashboards as .lvdash.json using databricks bundle generate, storing the .lvdash.json files in Git, deploying with databricks bundle deploy, and using variables to parameterize SQL warehouses or data sources across dev, UAT, and prod.
Our dashboard resource is roughly:
resources:
dashboards:
my_dashboard:
display_name: "My Dashboard"
file_path: ../dashboards/my_dashboard.lvdash.json
warehouse_id: ${var.warehouse_id}
dataset_catalog: ${var.dashboard_catalog}
dataset_schema: ${var.dashboard_schema}
Each target then supplies different values:
targets:
dev:
variables:
dashboard_catalog: dev_catalog
dashboard_schema: curated
prod:
variables:
dashboard_catalog: prod_catalog
dashboard_schema: curated
The dashboard JSON contains metric view datasets. If the exported JSON contains fully-qualified asset names, for example:
"asset_name": "prod_catalog.curated.my_metric_view"
then the dashboard is not portable across environments without editing the JSON.
If we remove the catalog/schema from the JSON and use:
"asset_name": "my_metric_view"
then this works conceptually with the bundle-level dataset_catalog and dataset_schema during deployment, but local/workspace development becomes awkward. Opening or editing the dashboard JSON directly from the repo/workspace can fail with TABLE_OR_VIEW_NOT_FOUND, because the unqualified metric view cannot be resolved outside the deployed bundle context.
So my question is: what is the recommended development workflow for dashboard developers when using environment-specific catalogs and schemas?
Specifically:
Should .lvdash.json files contain unqualified dataset or metric view names and only be expected to work after bundle deploy?
Is direct dashboard editing from the repo/workspace expected to be unsupported or unreliable in this pattern?
Should teams maintain dev-qualified JSON in source and patch or generate environment-specific JSON during CI/CD, or is that considered an anti-pattern?
Is there currently any way to parameterize asset_name directly inside .lvdash.json, or are dataset_catalog and dataset_schema the intended mechanism?
In short, the CI/CD story is clear once the bundle is deployed, but the local iterative development story is less clear when the JSON cannot safely include a fixed catalog/schema.