Databricks AI/BI LOD Databricks SQL

Tableau LOD Expressions in Databricks SQL, AI/BI Dashboards and Metric Views

September 7, 2026

Databricks AI/BI dashboards have level of detail expressions of their own, and two of Tableau's three keywords land on them directly. FIXED becomes a scalar window function: SUM(Sales) OVER (PARTITION BY Region). EXCLUDE becomes the coarser form: SUM(Sales) AGGREGATE OVER (PARTITION BY * EXCEPT (Region)). INCLUDE has no named keyword in a dashboard calculation, so it gets modeled in the dataset query instead.

Where the calculation ends up decides more than the syntax: a custom calculation, a dataset-SQL window and a metric view can return the same number and meet a dashboard filter at different moments. Databricks added level of detail expressions for custom calculations on January 19, 2026; limits and dates here are as of September 2026.

Where a Tableau LOD lands in Databricks AI/BI

Databricks names two kinds: fixed, on scalar window functions, and coarser, on aggregate window functions. Tableau names three. Two terms in the third column: a calculated dimension is a row-level column added to a dataset, and a calculated measure re-aggregates with whatever the chart groups by.

Tableau LODDatabricks AI/BI formWhere it lives, and how filters reach it
{FIXED [Region] : SUM([Sales])}SUM(Sales) OVER (PARTITION BY Region)Calculated dimension, computed before visualization groupings and filters
{FIXED : SUM([Sales])}SUM(Sales) OVER (), wrapped as SUM(Sales) / ANY_VALUE(total)Two custom calculations, denominator fixed under any grouping
{EXCLUDE [Region] : SUM([Sales])}SUM(Sales) AGGREGATE OVER (PARTITION BY * EXCEPT (Region))Calculated measure, respecting visualization filters except on the excluded dimension
Nested: {FIXED [Region] : AVG({FIXED [Region],[Month] : SUM([Sales])})}Pin the inner grain in dataset SQL, then aggregate it in a measureDataset SQL plus a measure, inner grain fixed and outer following the visual
{INCLUDE [Customer] : SUM([Sales])}, re-aggregated as AVGNo dashboard keyword: group at customer grain in the dataset queryDataset SQL, so verify filter behavior

A nested LOD usually splits in two, on Databricks' own percent-of-total pattern: the pinned part as a dimension calculation, the outer part as a measure that references it. Percent of total itself, and anything mixing an LOD with a running total or a rank, lives on table calculations. Plain formulas are on calculated fields.

How FIXED converts

Tableau's FIXED pins aggregation to the dimensions you name, and Databricks does the same with SQL window functions: PARTITION BY carries the pinned dimensions, and empty parentheses after OVER give the grand total. A fixed expression is a dimension, so using it inside a measure means wrapping it in an aggregate such as ANY_VALUE. A FIXED over COUNTD needs ARRAY_SIZE with COLLECT_SET, because DISTINCT is not allowed in a scalar window function.

Filters are where a converted number drifts quietly. Tableau states that FIXED expressions ignore every filter in the view other than context, data source and extract filters. Databricks states that fixed LOD expressions are computed before visualization groupings and filters are applied.

Making one respond to a dashboard filter means defining that filter as a dashboard parameter , a named marker substituted into the dataset query text, :region. Inside a custom calculation it is referenced as :keyword, supported since March 26, 2026. The context filter a FIXED expression respected maps to a parameter; the quick filter it ignored maps to a field filter. Read the worksheet's filters, not only the formula.

How EXCLUDE converts

EXCLUDE drops a dimension the view already has and reports a coarser total on every row. The Databricks coarser form says the same from the other end: PARTITION BY * inherits the visualization's grouping, and EXCEPT (...) lists what to take back out. Multiple fields in one EXCEPT have been supported since February 12, 2026. Databricks points the coarser form at calculations that should follow the visualization's own filters, where Tableau's EXCLUDE already sat; the exemption above applies to FIXED alone. The full filter-timing rule is on table calculations.

How INCLUDE converts

INCLUDE has no named keyword in a dashboard custom calculation. Neither documented type adds a dimension the visualization lacks: OVER pins a static partition, and AGGREGATE OVER only widens the visual's grouping through EXCEPT. Finer than the view is the one direction that syntax does not go. The exception arrived one layer down, in metric views, below.

In a dashboard the conversion is modeling, not translation. Group at the finer grain inside the dashboard dataset query, one row per customer, and let the visualization aggregate that upward, which is what the outer AVG did anyway. Then test the filters against that subquery: a field filter on the dataset result and a parameter substituted before the grouping can disagree.

Which limits decide where the calculation lives

Databricks rule, as of September 2026What it means for a converted LOD
Columns must belong to one datasetAn LOD that spanned a blend needs the join done first
Up to 200 custom calculations per datasetA workbook with hundreds of calculated fields will not fit one dataset
Table visualizations take calculated dimensions, not calculated measuresA fixed LOD can sit in a table visual, the coarser EXCLUDE form cannot

A Tableau function absent from Databricks' custom calculation function reference moves into the dataset query.

When the metric view is the better home

Custom calculations are scoped to one dataset and dashboard. A Unity Catalog metric view is defined once and queried from dashboards, notebooks and alerts. Databricks documents level of detail expressions in metric views on a page last updated August 17, 2026: a fixed LOD goes in a field's expr as a window function, and the coarser form is a window measure declared with range: all. The third Tableau keyword landed there on September 10, 2026, when the metric view editor gained Include-style expressions in YAML (release notes), ahead of the page itself.

The scoping rule: an LOD used by more than one workbook is a company metric and belongs in a metric view. One that makes a single chart behave stays a custom calculation.

What Antares does with LOD expressions

LOD expressions have to be found before they can be placed. That is what the free Analyzer does: deterministic, metadata only, changing nothing in the source environment, and listing which workbooks carry them. The Converter is deterministic-first, with guardrailed and validated AI steps, flagging what it cannot verify rather than guessing. Antares is a BI migration tool and stops at the dashboard layer: it does not move data into Delta tables or build the model underneath. Try a sample conversion.

The function-level mapping is on calculated fields to Databricks SQL, the running totals and ranks on table calculations in Databricks AI/BI, and the order of the whole job on the migration guide. The Power BI answer is Tableau LOD expressions to DAX. Sources: Databricks on level of detail expressions and custom calculations, Tableau on LOD expressions.

← Back to the Tableau to Databricks Migration guide

Related Migration Resources

Frequently asked questions

Does Databricks AI/BI support Tableau LOD expressions?

Databricks AI/BI has its own level of detail expressions, added for custom calculations on January 19, 2026. It names two types: fixed, written as an aggregate with OVER (PARTITION BY dims), and coarser, written as AGGREGATE OVER (PARTITION BY * EXCEPT (dim)). Tableau FIXED and EXCLUDE map onto those two.

What is the Databricks equivalent of a Tableau FIXED LOD?

A scalar window function in a custom calculation. {FIXED [Region] : SUM([Sales])} becomes SUM(Sales) OVER (PARTITION BY Region). Drop PARTITION BY for a grand total. To use it inside a measure, wrap it in an aggregate such as ANY_VALUE, which is what the Databricks percent-of-total example does.

How do you convert a Tableau INCLUDE LOD to Databricks?

A dashboard custom calculation has no named keyword for it: Databricks documents only fixed and coarser expressions, and neither adds a dimension the visualization lacks. Group at the finer grain inside the dataset query instead, then let the visualization re-aggregate the result. Unity Catalog metric views gained Include-style LOD expressions in YAML on September 10, 2026, ahead of their documentation.

Should an LOD expression become a custom calculation or a metric view?

Custom calculations are scoped to one dataset and dashboard, up to 200 per dataset. A Unity Catalog metric view defines the measure once for dashboards, notebooks, alerts and Genie Agents, and documents the same fixed and coarser forms, with an Include-style form added to its editor on September 10, 2026. If the expression appears in several workbooks, put it in the metric view.

Let's talk migration.

Get your free Migration Readiness Score, or talk to our team about end-to-end delivery.