Capitalize(CustomerName)

Upper, Lower and Capitalize in Power BI

UPPER and LOWER exist in DAX and Power Query (Text.Upper, Text.Lower). Capitalize, which is proper case, only exists in Power Query as Text.Proper. DAX has no proper-case function. The bigger trap is case sensitivity: the Power BI model compares text case-insensitively, while Power Query is case-sensitive.

Partial / different approach DAX Power Query

Short answer: Use Text.Proper([Name]) in Power Query for Capitalize. Normalise join keys with Text.Upper before merges. In the model, "abc" and "ABC" end up as one value anyway.

What it does in Qlik

  • Upper(text) and Lower(text) change the case.
  • Capitalize(text) uppercases the first letter of each word and lowercases the rest, so Capitalize('star trek') returns "Star Trek".

Qlik example

Qlik script
Capitalize(CustomerName) AS CustomerName,
Upper(Trim(CountryCode)) AS CountryCode

Power BI equivalent

Power Query

Power Query M
= Table.TransformColumns(Src, {
    {"CustomerName", Text.Proper, type text},
    {"CountryCode", each Text.Upper(Text.Trim(_)), type text}})

DAX

DAX
Country upper = UPPER ( T[CountryCode] )
// No PROPER() in DAX - do Capitalize in Power Query

Gotchas and behaviour differences

  • Case behaviour differs by layer. Qlik field values are case-sensitive, so "abc" and "ABC" are two values. In a Power BI semantic model, VertiPaq stores them as one value and shows whichever case it loaded first. Merges and Text.Contains in Power Query are case-sensitive unless you pass Comparer.OrdinalIgnoreCase.
  • Text.Proper doesn't know about names like "McDonald" or "van der Berg". Neither does Qlik's Capitalize, so expect the same output.

Official documentation

Related pages

Spotted an error or a better pattern? QlikToDax is maintained by a working BI consultant; corrections are welcome via the About page. Last reviewed 2026-10-25.