<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Design Filters and Parameters That Scale in Databricks AI/BI Dashboards in Technical Blog</title>
    <link>https://community.databricks.com/t5/technical-blog/design-filters-and-parameters-that-scale-in-databricks-ai-bi/ba-p/148764</link>
    <description>&lt;H2&gt;&lt;STRONG&gt;Why Filters matter&amp;nbsp;&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Databricks AI/BI Dashboards become truly useful when users can slice data by date, segment, status, or region without editing SQL. Filters make this possible by separating what users control in the UI from how queries run in the warehouse.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Design scalable filters in Databricks AI/BI dashboards. Learn filter scope, when to use parameters vs. field filters, and how to build single- and multi-select dropdowns with SQL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What You'll Learn&lt;/STRONG&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Understand global, page, and widget-level filter scope&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Choose between parameters and field filters based on performance and scale&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Implement single-select, multi-select, and “All” filter patterns&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Build query-driven dropdowns with real SQL examples&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;This post uses the &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch&lt;/SPAN&gt;&lt;SPAN&gt; schema to show how to design filters with various scopes, choose between &lt;/SPAN&gt;&lt;SPAN&gt;Filter fields&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;parameters&lt;/SPAN&gt;&lt;SPAN&gt;, and implement &lt;/SPAN&gt;&lt;SPAN&gt;single select&lt;/SPAN&gt;&lt;SPAN&gt; or “&lt;/SPAN&gt;&lt;SPAN&gt;All&lt;/SPAN&gt;&lt;SPAN&gt;” and &lt;/SPAN&gt;&lt;SPAN&gt;multi-select &lt;/SPAN&gt;&lt;SPAN&gt;filters with query-based dropdowns&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Some Basics&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;AI/BI dashboards offer the following types of filters on the dashboards :&amp;nbsp; Multiple-values, Single value, Date picker, date range picker, Text entry and Range slider.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_0-1771461822164.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24138i98644F2731F244BD/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_0-1771461822164.png" alt="User16844985548_0-1771461822164.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When we configure a filter, we choose which datasets it applies to.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We can have more than one value to filter-by from a dataset using the &lt;/SPAN&gt;&lt;STRONG&gt;Multiple values&lt;/STRONG&gt;&lt;SPAN&gt; option.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We can also have multiple datasets associated with a filter. When this is done, ensure that the columns are representing the same data values. Selecting &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;Nation&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt; from one dataset and &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;Priority&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt; from another dataset in the same filter will mix nation and priority values and result in mis-applying the values in one of the two datasets.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Also, ensure that the values of the columns chosen to filter from multiple datasets are the same. For example, if we are filtering on &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;Priority&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt; from two datasets A and B, they should both have the same count and data type of values. If dataset A has values { ‘Priority1’, ‘Priority2’, ‘Priority3} as distinct values then dataset B should also have the same - no more and no less.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Filter scope: global, page, and widget&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Filters can apply to different parts of a dashboard depending on how you configure them.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_1-1771461822165.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24140i433FE7D9F2FFCA90/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_1-1771461822165.png" alt="User16844985548_1-1771461822165.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Global Filters&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Use Global Filters to apply a single set of selections across the entire dashboard (all pages) for visuals that share the same datasets—typical examples include a global date range, region, or segment.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The image above shows Priority as a Global Filter. Any chart or table on any page in the dashboard that includes this column will respect the Priority Selection&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Other Examples: a global Order Date Range filter to control the date range for all charts on the entire dashboard, using two parameters like:&lt;/SPAN&gt;&lt;SPAN&gt; param_start_date&lt;/SPAN&gt;&lt;SPAN&gt; and:&lt;/SPAN&gt;&lt;SPAN&gt; param_end_date&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;SPAN&gt;Page-level filters&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Use &lt;/SPAN&gt;&lt;/I&gt;&lt;STRONG&gt;&lt;I&gt;Page-level filters&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;SPAN&gt; when a control should affect only one page. For example, a detail page needs its own local “Product Category” separate from a summary page.&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The image above shows Nation as a Page filter.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;All charts and tables in this page that use the Nation as a Predicate will respect the selections&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Other pages will not be affected by this filter.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;There can be one or more filters on a page to filter the data. For example, there could be a “&lt;/SPAN&gt;&lt;SPAN&gt;Segment&lt;/SPAN&gt;&lt;SPAN&gt;” filter in addition to a Nation filter&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Widget-level (static) filters&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Use &lt;/SPAN&gt;&lt;/I&gt;&lt;STRONG&gt;&lt;I&gt;widget-level (static) filters&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;SPAN&gt; when the value must be fixed and unchangeable for a given chart (for example, side-by-side charts permanently pinned to different regions). &lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt;The image above shows s_name (supplier name) as a Widget filter.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;(Note that this is hidden when the dashboard is published).&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The underlying dataset shows all suppliers, but only one Supplier is shown in the chart&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Other Examples: a bar chart that shows revenue by &lt;/SPAN&gt;&lt;SPAN&gt;o.o_orderstatus&lt;/SPAN&gt;&lt;SPAN&gt; with a widget-level filter restricting &lt;/SPAN&gt;&lt;SPAN&gt;status IN ('F','O')&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;When to use Parameters vs Filter fields&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Databricks supports both field filters and parameters, which behave differently and have distinct performance characteristics.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Field filters work directly on dataset fields (post-query) in the browser, while parameters inject values into the SQL query itself before execution. Parameters enable filter selection that will re-run the underlying queries with new predicates.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Filter fields&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Filter fields operate on fields in the dataset (such as &lt;/SPAN&gt;&lt;SPAN&gt;status&lt;/SPAN&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;SPAN&gt;segment&lt;/SPAN&gt;&lt;SPAN&gt;).&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Filter fields do not change SQL query text, and hence they do not re-run the query, unless the result set is over 100K rows or the size exceeds 100MB.&amp;nbsp; Since the filtering happens on an available dataset, it is fast, does not incur additional cost and provides effective performance with predictable values.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Widget-level filters are static. Once published they will display the visualization with those filters. One scenario is when we want to display the same visualizations with different filters. For example - sales revenue by product for different regions.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Use Page-level filters to give the user the ability to change the filter values. If there is more than one chart that is dependent on the filter, ensure that they are tied to the same dataset.&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Best for:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Simple, local filtering on small to medium result sets.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Cases where you only need to affect one or a few visuals.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;&amp;nbsp;Consider the sample SQL and output from the Data tab in the Dashboard.&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;WITH &lt;/SPAN&gt;&lt;SPAN&gt;supp_norm &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;SELECT&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;n.n_name &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;nation_name, p.p_name as part_name,&amp;nbsp; s.s_name, ps.ps_supplycost, &amp;nbsp; p.p_retailprice&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;FROM &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.supplier s&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;JOIN &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.partsupp ps &lt;/SPAN&gt;&lt;SPAN&gt;ON &lt;/SPAN&gt;&lt;SPAN&gt;s.s_suppkey = ps.ps_suppkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;JOIN &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.part p &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;ON &lt;/SPAN&gt;&lt;SPAN&gt;ps.ps_partkey = p.p_partkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;JOIN &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.nation n &lt;/SPAN&gt;&lt;SPAN&gt;ON &lt;/SPAN&gt;&lt;SPAN&gt;s.s_nationkey = n.n_nationkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;SELECT &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;nation_name, s_name, part_name, &lt;/SPAN&gt;&lt;SPAN&gt;SUM&lt;/SPAN&gt;&lt;SPAN&gt;(p_retailprice) &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;netprice, &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SUM&lt;/SPAN&gt;&lt;SPAN&gt;(ps_supplycost) &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;part_cost&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;FROM &lt;/SPAN&gt;&lt;SPAN&gt;supp_norm&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;GROUP BY &lt;/SPAN&gt;&lt;SPAN&gt;nation_name, s_name, part_name&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_2-1771461822166.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24139iC72CA6205DAE4BEB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_2-1771461822166.png" alt="User16844985548_2-1771461822166.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We use this to build the sample chart below. Note that the part name “chiffon red coral dim” is selected in the widget filter on the right side. Since this widget will not be displayed in the published dashboard, we indicate the selection “Supplier part cost by nation - &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;chiffon red peru coral dim&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt;” in the title. If we want to show two charts with different filter values side by side, this method is useful.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_3-1771461822168.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24142iEA1F0F294088DDB1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_3-1771461822168.png" alt="User16844985548_3-1771461822168.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The next example shows the part_name filter as a page-level filter.&amp;nbsp; We associate the dataset used in the chart with the filter that we create as a separate widget in the page. The values will be available to the user as a drop down list.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_4-1771461822169.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24143iF9AD3260869279B2/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_4-1771461822169.png" alt="User16844985548_4-1771461822169.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Parameter filters&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;Parameter filters correspond to query parameters and change the dataset SQL when they change.&amp;nbsp; The parameters in a query are coded using&lt;/SPAN&gt;&lt;SPAN&gt;:param_name&lt;/SPAN&gt;&lt;SPAN&gt;, where param_name can be any predicate like nation, date, thresholds, etc.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Best for:&lt;/SPAN&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Large datasets where you need to filter early.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Multi-select logic inside &lt;/SPAN&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; or &lt;/SPAN&gt;&lt;SPAN&gt;HAVING&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="2"&gt;&lt;SPAN&gt;Thresholds (like minimum revenue) or time-grain switches.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;&amp;nbsp;This example uses a query called Revenue Trends by Nation, and we use a parameter called&lt;/SPAN&gt;&lt;SPAN&gt;:nation &lt;/SPAN&gt;&lt;SPAN&gt;for the column&lt;/SPAN&gt;&lt;SPAN&gt; n_name&lt;/SPAN&gt;&lt;SPAN&gt; in the nation table. The parameter details in the Data panel are shown with a selection as&lt;/SPAN&gt;&lt;SPAN&gt; ‘ALGERIA’&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;The query definition and the parameter definition are shown below. Note that &lt;/SPAN&gt;&lt;STRONG&gt;Allow multiple selections&lt;/STRONG&gt;&lt;SPAN&gt; is not enabled.&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-- Revenue Trends by Nation to be used in Order Analysis page&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;SELECT&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;o_orderdate, n_name &lt;/SPAN&gt;&lt;SPAN&gt;AS&lt;/SPAN&gt;&lt;SPAN&gt; nation, o_orderpriority &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; Priority,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;sum&lt;/SPAN&gt;&lt;SPAN&gt;(l_extendedprice &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt; l_discount) &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt; (((length(n_name))&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;100&lt;/SPAN&gt;&lt;SPAN&gt;) &lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;SPAN&gt;year&lt;/SPAN&gt;&lt;SPAN&gt;(o_orderdate)&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;1993&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;100&lt;/SPAN&gt;&lt;SPAN&gt;)) &lt;/SPAN&gt;&lt;SPAN&gt;AS&lt;/SPAN&gt;&lt;SPAN&gt; revenue&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;samples&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;tpch&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;customer&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;samples&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;tpch&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;orders&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;samples&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;tpch&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;lineitem&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;samples&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;tpch&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;SPAN&gt;nation&lt;/SPAN&gt;&lt;SPAN&gt;`&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;c_custkey &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; o_custkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; l_orderkey &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; o_orderkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; c_nationkey &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; n_nationkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; n_name &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; :nation&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;GROUP BY&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; o_orderdate, Priority, nation&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ORDER BY&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; nation &lt;/SPAN&gt;&lt;SPAN&gt;ASC&lt;/SPAN&gt;&lt;SPAN&gt;, Priority &lt;/SPAN&gt;&lt;SPAN&gt;ASC&lt;/SPAN&gt;&lt;SPAN&gt;, o_orderdate &lt;/SPAN&gt;&lt;SPAN&gt;ASC&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_5-1771461822170.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24141i282F58B1DCE10861/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_5-1771461822170.png" alt="User16844985548_5-1771461822170.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;On the dashboard page, this filter is shown as “Nation - parameter based filter”. This filter uses the Nation, and it applies to the same datasets it will be used on. In this example, the nation field in the Revenue Trend by Nation dataset is associated with the Parameter.&amp;nbsp; It is important to define this as a Parameter and associate the nation column in the dataset.&amp;nbsp; Choosing this as a Field filter will default to using the results in the dataset defined with the default selection of ALGERIA.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_6-1771461822170.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24145iE8D2971DF25B91E9/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_6-1771461822170.png" alt="User16844985548_6-1771461822170.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The Revenue Trend by Nation chart should use the same dataset - Revenue Trends by Nation.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;We can now type a different value for the Nation, besides the default value of ALGERIA. Only one value can be provided as this is a single-value filter.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;In the next section, we discuss how we can switch from one Selection to All or Multivalues and show how to build a drop-down list of values to filter on.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Scenario&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Filter fields emphasis&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;STRONG&gt;Parameters emphasis&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Need quick UX on small datasets&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Browser-side result filtering.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Accept query reruns for pre-aggregation filtering.&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filter-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Need complex SQL conditions&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Limited to end-of-query filters.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Conditions placed anywhere in SQL logic.&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filter-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Cascading cross-dataset controls&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Natural fit across shared fields.&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filter-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Requires coordinating shared parameters.&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filter-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Centralized dashboard controls&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Tied mainly to their datasets.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;Strong option for reusable, dashboard-level knobs.&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filter-types" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;H2&gt;&lt;STRONG&gt;Deep dive: parameter patterns with “All” and multi-select&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Parameters become especially powerful when you design them to support “All” and multi-select behavior.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN&gt;Single-select “All” pattern&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN&gt;For a single-select parameter, use a sentinel like &lt;/SPAN&gt;&lt;SPAN&gt;'All'&lt;/SPAN&gt;&lt;SPAN&gt; and an &lt;/SPAN&gt;&lt;SPAN&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt; condition in the &lt;/SPAN&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; clause:&amp;nbsp; This will enable a single value to be passed as a query parameter or the value ‘All Nations’.&amp;nbsp; As long as this value is used consistently in the queries and the widget,display it will work.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;To achieve this, we change the predicate from &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; n_name &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; :nation&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;TO&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; (:nation &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"All"&lt;/SPAN&gt; &lt;SPAN&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt; n_name &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; :nation)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Another way to accomplish this is&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt; (:nation &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"All"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;true&lt;/SPAN&gt;&lt;SPAN&gt;, n_name &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; :nation)&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Multi-select with &lt;/SPAN&gt;&lt;SPAN&gt;ARRAY_CONTAINS&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;For multi-select, allow multiple selections in the parameter and use &lt;/SPAN&gt;&lt;SPAN&gt;ARRAY_CONTAINS&lt;/SPAN&gt;&lt;SPAN&gt; in the predicate. This will help us to select one or many or ‘All Nations’&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;There are three changes to make for this:&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;In the query, change the condition&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; (:nation &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;"All"&lt;/SPAN&gt; &lt;SPAN&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt; n_name &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; :nation)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;TO &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt; &lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; ( ARRAY_CONTAINS(:nation,&lt;/SPAN&gt;&lt;SPAN&gt;"All"&lt;/SPAN&gt;&lt;SPAN&gt;)&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;OR&lt;/SPAN&gt;&lt;SPAN&gt; ARRAY_CONTAINS(:nation,n_name))&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;Select &lt;/SPAN&gt;&lt;STRONG&gt;Allow multiple selections&lt;/STRONG&gt;&lt;SPAN&gt; checkbox in the parameter details panel.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_7-1771461822172.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24144i3680AFEC4A93BAE3/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_7-1771461822172.png" alt="User16844985548_7-1771461822172.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;In the Dashboard page, we change the filter widget to &lt;/SPAN&gt;&lt;STRONG&gt;Multiple values&lt;/STRONG&gt;&lt;SPAN&gt; instead of a Single value. Note that the query dataset is Revenue Trends by Nation for both the Filter and the Chart widgets. The filter widget uses the Parameters field to select the &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;nation&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt; filter, while the chart does not have any filters&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_8-1771461822173.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24146i4D787325859C09B1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_8-1771461822173.png" alt="User16844985548_8-1771461822173.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Building query-based dropdowns&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;Databricks enables you to populate parameter dropdowns with query results, ensuring that lists stay in sync with the data. This will help in specifying the correct values for the parameters.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 1. &lt;/STRONG&gt;&lt;SPAN&gt;To define a drop-down list of valid nations, we build a query to extract all the Nations&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;—&amp;nbsp; Nation_list query to use as a Drop down&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;SELECT&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;distinct&lt;/SPAN&gt;&lt;SPAN&gt; n_name &lt;/SPAN&gt;&lt;SPAN&gt;as&lt;/SPAN&gt;&lt;SPAN&gt; nation_name&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;samples&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;tpch&lt;/SPAN&gt;&lt;SPAN&gt;.nation&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 2&lt;/STRONG&gt;&lt;SPAN&gt;. We associate this on the Order Analysis page as a field in the &lt;/SPAN&gt;&lt;STRONG&gt;Nation_list&lt;/STRONG&gt;&lt;SPAN&gt; with &lt;/SPAN&gt;&lt;STRONG&gt;Multiple values&lt;/STRONG&gt;&lt;SPAN&gt;. We use the nation in the Nation_list as a Filter, which effectively gives us the drop-down list.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The Parameters will still point to the column Nation in the Revenue Trends by Nation&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_9-1771461822173.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24147i91E3C1E4505A9ABA/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_9-1771461822173.png" alt="User16844985548_9-1771461822173.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Now we have a drop-down list of values for Nations that allows multiple selections.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Global Filters&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;To show this we will add a date range filter to the Revenue Trends by Nation dataset query.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; o_orderdate&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;BETWEEN&lt;/SPAN&gt;&lt;SPAN&gt; :&lt;/SPAN&gt;&lt;SPAN&gt;order_date&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;min&lt;/SPAN&gt; &lt;SPAN&gt;AND&lt;/SPAN&gt;&lt;SPAN&gt; :&lt;/SPAN&gt;&lt;SPAN&gt;order_date&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;max&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Edit the parameter type to &lt;/SPAN&gt;&lt;STRONG&gt;Date Range&lt;/STRONG&gt;&lt;SPAN&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Use the calendar pop-ups to select a default date range and execute the query.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;On the dashboard page, choose the funnel icon for Global Filter, next to the Data tab. Create a filter widget and name it Date Range - Global Filter. Associate the datasets on which this filter needs to operate. In this example, we associate the order_date from the Revenue Trends by Nation dataset as a Parameter.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_10-1771461822175.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24148iB044A63F545D9891/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_10-1771461822175.png" alt="User16844985548_10-1771461822175.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Click the Date Range and choose different dates, and see the values change. &lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;In a similar way, we can associate more datasets with this Global Filter and by adding them as parameters.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;To Try further:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If you’re building your first Databricks AI/BI dashboard, start by adding a single parameterized date range and segment dropdown using the examples. Once that’s working, expand to multi-select status filters and threshold parameters for Top N customers.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;Use this query to build a data set called Revenue by Order Priority. Ensure the parameter is defined as a Date Range&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;SELECT&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;o.o_orderpriority &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;priority,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;l.l_shipmode &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;ship_mode,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;COUNT&lt;/SPAN&gt;&lt;SPAN&gt;(*) &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;order_count,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;o.o_orderdate&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;FROM&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.orders &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;o&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;JOIN&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;samples.tpch.lineitem &lt;/SPAN&gt;&lt;SPAN&gt;AS &lt;/SPAN&gt;&lt;SPAN&gt;l&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ON&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;o.o_orderkey = l.l_orderkey&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;WHERE &lt;/SPAN&gt;&lt;SPAN&gt;o.o_orderdate &lt;/SPAN&gt;&lt;SPAN&gt;BETWEEN &lt;/SPAN&gt;&lt;SPAN&gt;:order_date.min and :order_date.max&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;GROUP BY&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;o.o_orderpriority, l.l_shipmode, o.o_orderdate&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;ORDER BY&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;priority, ship_mode;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Add a chart to show Revenue by Order Priority.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Add the Global Filter to this dataset.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Add the Priority Filter as a Page Filter on this page. Associate the Priority column as a filter.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;You should see something like this depending on your selections&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="User16844985548_11-1771462095748.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24149i349A7F20C9A16FA8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="User16844985548_11-1771462095748.png" alt="User16844985548_11-1771462095748.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;STRONG&gt;References:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Databricks Dashboard Parameters and Filters:&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/parameters" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://docs.databricks.com/aws/en/dashboards/parameters&lt;/SPAN&gt;&lt;/A&gt;.&amp;nbsp;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/dashboards/filters" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://docs.databricks.com/aws/en/dashboards/filters&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 26 Feb 2026 15:26:05 GMT</pubDate>
    <dc:creator>JJaiwant</dc:creator>
    <dc:date>2026-02-26T15:26:05Z</dc:date>
    <item>
      <title>Design Filters and Parameters That Scale in Databricks AI/BI Dashboards</title>
      <link>https://community.databricks.com/t5/technical-blog/design-filters-and-parameters-that-scale-in-databricks-ai-bi/ba-p/148764</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JJaiwant_0-1772053582243.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/24334i3D588E2AFAB9570F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="JJaiwant_0-1772053582243.png" alt="JJaiwant_0-1772053582243.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 26 Feb 2026 15:26:05 GMT</pubDate>
      <guid>https://community.databricks.com/t5/technical-blog/design-filters-and-parameters-that-scale-in-databricks-ai-bi/ba-p/148764</guid>
      <dc:creator>JJaiwant</dc:creator>
      <dc:date>2026-02-26T15:26:05Z</dc:date>
    </item>
  </channel>
</rss>

