Skip to content

DAB dashboards variable substitution in dataset queries #1915

Description

@DaveRuijter

Describe the issue

When developing a dashboard, currently it does not seem possible to parameterise the catalog and/or schema names used in the datasets queries of a dashboard.

I've tried to use the below formats but none of them seem to work:

  • IDENTIFIER(:catalog)
  • :catalog
  • ':catalog'
  • IDENTIFIER(':catalog')

Furthermore, when this would work I'd like to pass/overwrite the parameter value with a specific value per target in my databricks.yml configuration, to specify in my case the catalog to read from (which is different on each environment).
Not sure if that is supported already?

Configuration / Steps to reproduce the behavior

1 Create a new dashboard
2 Go to the data tab and use this query:
SELECT * FROM :catalog.information_schema.catalogs
3 See error:

[PARSE_SYNTAX_ERROR] Syntax error at or near ':'. SQLSTATE: 42601 (line 1, pos 23)

== SQL ==
DESCRIBE SELECT * FROM :catalog.information_schema.catalogs
-----------------------^^^

Expected Behavior

  • I'd like to use IDENTIFIER(:catalog) or something similar in the queries.
  • I'd like to be able to set such a parameter value via my databricks.yml configuration, maybe like this:
resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: "NYC Taxi Trip Analysis"
      file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}
      parameters:
         - name: catalog
           default: ${var.catalog}

Actual Behavior

See error message above

OS and CLI version

Databricks CLI v0.234.0

Is this a regression?

No

Debug Logs

N/A

Activity

  1. self-assigned this
    on Nov 21, 2024
  2. pietern commented on Dec 3, 2024

    @pietern
    Contributor

    Thanks for reporting this issue and feature requests.

    W.r.t. the issue, this is a known problem. A fix is underway and is expected to be released in January. Once landed, you'll be able to use USE CATALOG IDENTIFIER(:catalog). In the meantime, you can work around this limitation with the SQL equivalent of an eval:

    -- Default to catalog set in parameter
    declare catalog_name string;
    set var catalog_name = :catalog;
    declare catalog_query string;
    set var catalog_query = concat("use catalog ", catalog_name, ";");
    execute immediate catalog_query;
    
    -- Default to schema set in parameter
    use schema identifier(:schema);

    W.r.t. the feature request, we're working on sorting out how to best support this. Overriding parameters is not natively supported in the dashboard APIs, so we're figuring out the best course of action. I will post back here with updates to unblocking the pattern you're looking to achieve.

  3. github-actions commented on Jan 2, 2025

    @github-actions
    Contributor

    This issue has not received a response in a while. If you want to keep this issue open, please leave a comment below and auto-close will be canceled.

  4. etspaceman commented on Jan 16, 2025

    @etspaceman

    Please keep this issue open.

  5. skinbody commented on Mar 25, 2025

    @skinbody

    I've been working with a few customers who are eager to deploy dashboards using DABs, and the feedback I'm receiving is that the lack of support for the pattern that @DaveRuijter was describing - i.e. dynamically specifying catalogs and schemas in the dashboard queries - is somewhat stopping them.

    Specifically, teams working with multiple environments (DTAP) would like to promote dashboards across environments similar to other assets. Usually, they have a catalog structure per environment - e.g. team1_dev, team1_acc, team1_prd - and would prefer to use variable(s) in the bundle rather than using workarounds. A common workaround I have seen is using placeholders in a template version of a lvdash.json file, which requires replacing them during CI/CD before deploying the bundle and feels hacky.

    It would be great to hear if there’s been any progress on this or if there are any plans - I look forward to any updates!

  6. jope35 commented on Sep 3, 2025

    @jope35

    any update on this @pietern ?

  7. tfrazeratvald commented on Sep 16, 2025

    @tfrazeratvald

    Please keep this issue open

  8. gbwally commented on Sep 22, 2025

    @gbwally

    Hi @pietern -
    Also wondering if there is an update here. Not ideal to have to preprocess dashboard json before deploying in the DAB in order to use a different catalog for different targets.
    Thank you!

  9. d-cegielka commented on Oct 2, 2025

    @d-cegielka

    Hi @pietern, @andrewnester
    can we expect any update regarding this enhancement?

  10. karoladegroot commented on Oct 3, 2025

    @karoladegroot

    @pietern @andrewnester @DaveRuijter just found out you can use SELECT * FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
    Or hardcode anything you dont need as variable like

    SELECT * FROM IDENTIFIER('company' || '.' || :schema || '.' || 'customers')
    and then fill in the variable

    Image
  11. hapination commented on Oct 14, 2025

    @hapination

    I would really need this feature to be able to pass the catalog name per target during deployment of the dashboard

  12. johnartus commented on Oct 23, 2025

    @johnartus

    I need this feature too ! please

  13. aborsato commented on Nov 3, 2025

    @aborsato

    +1 here. We want to deploy dashboards as DABs, but the lack of support for parameters is holding us back.

  14. alaturqua commented on Dec 9, 2025

    @alaturqua

    +1. Will DABs support dataset_catalog parameter from lakeview api for dashboards?

  15. katrielrr commented on Dec 12, 2025

    @katrielrr

    +1. I really need this feature to make possible to use dashboards in production at scale

  16. karoladegroot commented on Jan 5, 2026

    @karoladegroot

    Guys, Someone (Maksim Pachkouski) just responded in the databricks community with a new feature. See his Medium Post
    https://medium.com/@protmaks/dynamic-catalog-schema-in-databricks-dashboards-b7eea62270c6

  17. VProcureurCEGID commented on Jan 5, 2026

    @VProcureurCEGID

    Guys, Someone (Maksim Pachkouski) just responded in the databricks community with a new feature. See his Medium Post https://medium.com/@protmaks/dynamic-catalog-schema-in-databricks-dashboards-b7eea62270c6

    I have just tried what's specified in the article and it works just fine for me.

    If anyone's curious, it's not required to specify both dataset_catalog and dataset_schema: I provide just the dataset_catalog parameter with a variable and let the schema be determined in the query.

    This goes like this:

    # filename: databricks.yml
    resources:
    	dashboards:
    		your_dashboard:
    			display_name: your_display_name
    			dataset_catalog: {var.dataset_catalog}
    			file_path: your_dashboard.lvdash.json
    // filename: your_dashboard.lvdash.json
    {
      "datasets": [
        {
          "name": "abc123",
          "displayName": "dataset_1",
          "queryLines": [
            "SELECT * FROM your_schema.your_table"
          ],
          "catalog": "default_catalog" // I put here the name of my dev catalog as default value
          "schema": "default"
        },
        ...
      ]
    }
  18. katrielrr commented on Mar 6, 2026

    @katrielrr

    @VProcureurCEGID it is until useless if you need to query more than one catalog, e.g. sales_dev -> sales_prd, financial_dev -> financial_prd

  19. davidsagar86 commented on Jul 2, 2026

    @davidsagar86

    Shocked that this is still an open issue?! I've just come to deploy into production after creating a DEV dashboard and now learn that you cannot parameterize the catalog and schema like is supported on jobs. @pietern @DaveRuijter - do you know anything more about this? Thanks

  20. pietern commented on Jul 2, 2026

    @pietern
    Contributor

    You can use dataset_catalog and dataset_schema on the dashboard resource to override the default dataset and catalog.

    Read more here: https://docs.databricks.com/aws/en/dev-tools/bundles/examples#dashboard-configuration

    This issue is still open because complete variable substitution is indeed not supported.

  21. rhloweryNM commented on Oct 9, 2026

    @rhloweryNM

    Just FYI... you CAN use parameters in your dashboard queries IF you use serialized_dashboard instead of json_file in your dashboard yaml. The downside is the visual editor doesn't handle it well, and genie code has trouble with re-serializing changes back into the yaml file. Either supporting variable substitution in the json format or having the visual editor natively support the full yaml format for dashboard (with json in the serialized_dashboard field) would be significantly better.

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions