Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
PBR_
Frequent Visitor

Extracting Text Using a Calculated Column (Dax) - DirectQuery Connection

In Power BI, I'm trying to create a new column (with DAX) that extracts text to the left of a dash ("-"), based on an existing column.

ColumnACalculatedColumn
AAA - 789DAAA
AAA - DWOSAAA
BBB - 8F WXBBB
BBB - 5RSBBB
CC - YXDZCC

 

Please note, the data is connected using DirectQuery so I've been running into some roadblocks using DAX.

 

Any help would be appreciated!

4 REPLIES 4
vicky_
Super User
Super User

Try this:

calculcatedColumn = LEFT([ColumnA], SEARCH("-", [ColumnA]) - 1)

The idea is that the dax will grab everything to the left (excluding the space) of the first "-" character in each row.

PBR_
Frequent Visitor

Thanks, vicky_

 

Unforunately, that formula results in this error message for me:

PBR__0-1675257825241.png

Function 'SEARCH' is not allowed as part of calculated column DAX expressions on DirectQuery models.

Oh sorry, I missed the Direct Query Part. I did some googling and this thread suggests that you can enable most DAX functions (at a cost to performance). This post further specifies that you'll need to provide all 4 arguments to the search function. I hope that works for you!

PBR_
Frequent Visitor

Thanks, vicky_!

 

Using all 4 arguments with the SEARCH function works great when linked to a DirectQuery model!

ex., SEARCH(" -",[ColumnA],1,0)

 

Unfortunately, I can't get the LEFT function to work with it (but I can get the LEFT function to work alone, if I use a single number as the <num_chars>, ex., = LEFT([ColumnA],3; unforunately that's not dynamic enough for my needs).

I imagine it is because I am not presented an option to "Allow unrestricted measures in DirectQuery mode" (even though I am using power bi desktop) as shown in the thread you linked:

PBR__0-1675458341430.png

 

I have tried the following with no luck (they all give an OLE DB or ODBC expression error):

CalculatedColumn = LEFT([COLUMNA], SEARCH("-", [COLUMNA],1,0) - 1)
CalculatedColumn = LEFT([COLUMNA],(SEARCH("-", [COLUMNA],1,0)-1))
CalculatedColumn = LEFT([COLUMNA],FIND("-",[COLUMNA],1,0))

 

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.