What it does
A Dataverse column whose value comes from a Power Fx expression, written the way you'd write an Excel formula, with Intellisense in the column editor. It's the modern replacement for the classic calculated column, and it's evaluated by the platform rather than by the client.
Key facts
- The formula determines the column type, and you can't change the type after the column is created. You can edit the formula freely as long as the edit doesn't change the resulting type.
- Producible types are Text, Decimal Number, Whole Number, Float, Boolean (Yes/No), Choice and Datetime. Currency isn't supported.
- Maximum formula length is 1,000 characters. Maximum dependency depth — a chain of formula columns referring to other formula or rollup columns — is 10.
- Decimal precision is settable between 0 and 10, defaulting to 2.
- A null numeric input is treated as 0 in intermediate operations, so
a+b+cwith a nullareturns 5, not null. Classic calculated columns return null in the same case. - Formula columns can reference other formula columns but not themselves, and cyclic chains are rejected.
- No workflows or plug-ins fire on a formula column, and duplicate detection rules aren't triggered on them.
- Values don't appear in mobile offline mode, and sorting is disabled where the formula references a related table, a logical column, another calculated or formula column, or
UTCNow(). - Currency columns can only be used through the
Decimal()function. Related-table currency columns and base currency columns aren't supported in formulas at all. - To use a formula column inside a rollup it must be a simple formula column — same-row columns or literals only — and it can't depend on
UTCNow()orUTCToday(). - The natural-language Get formula suggestions experience is still preview and still US-only as of the January 2026 documentation update.
When to use / skip
This is the default choice for derived values in any new build. Power Fx is a real language with real functions, the editor tells you when you're wrong, and makers who know canvas apps already know the syntax. Skip it when the value has to be a currency type, when the calculation crosses more than the allowed dependency depth, or when the result needs to trigger downstream logic — nothing fires when a formula column changes. And don't mix formula and calculated columns in the same dependency chain; Microsoft explicitly advises against it and the null handling alone will catch you out.
Configuration decisions
- The output type, decided up front, because it's fixed for the life of the column.
- Whether Searchable is on, which governs whether the column shows up in views, charts, dashboards and Advanced Find.
- Precision for decimal results, and whether the client's finance team will accept the default of two.
- Whether the formula needs to feed a rollup, since that constrains you to a simple same-row formula with no time-bound functions.
- How to represent money without a currency type — usually a decimal plus a separate documented convention about which currency it's in.
Gotchas
- Text handling is fussier than people expect.
Text()with a single number argument isn't supported, implicit coercion like12 & "foo"is rejected, and locale-specific format tokens such as "." and "," aren't allowed because formulas are evaluated without locale knowledge. - Date behaviours have to match. A User Local column can only be compared with another User Local column in
DateDiff; mixing behaviours produces a validation error rather than a wrong answer, which is at least honest. Now()has user local behaviour andUTCNow()is time zone independent. Picking the wrong one shows up as an off-by-one-day bug in a different time zone weeks later.- Whole Number columns formatted as Language, Duration or Time Zone, and String columns formatted as Email, Text Area, Ticker Symbol or URL, can't be used in formulas. That list catches people building on out-of-the-box tables.
- Everything you compute lives inside the Dataverse decimal range. Intermediate values outside it, or hard-coded literals outside it, fail rather than clamp.
Consultant notes
- Position formula columns as the successor to calculated columns and migrate opportunistically rather than in a big bang — the two coexist perfectly well as long as they don't reference each other.
- The currency gap is the one that derails demos. Raise it before anyone builds a pipeline value column and discovers they need a decimal plus a workaround.
- Warn the client that no automation fires when a formula column's value changes. If they want an alert when a score crosses a threshold, that's a flow on the underlying columns, not on the formula.
- Formula columns are computed on read, so a heavily-referenced formula on a large table is a performance conversation. Keep an eye on the chains rather than the individual columns.
Worth revisiting when currency support lands, or if formula suggestions come out of preview and out of the US.