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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
stokercw
New Member

Table visualization and case sensitivity

Why does Power BI Desktop change case?

My data is case-sensitive:

DATABASE_NAME                                                    ARCHIVED_DATE
---------------------------------------------------------------- --------------------
EPCD13D                                                          17-DEC-2017 12:00:00
epcd13d                                                          25-DEC-2017 12:00:00
epcd13p                                                          17-DEC-2017 12:00:00
epcd13p                                                          25-DEC-2017 12:00:00
epcd13sby                                                        17-DEC-2017 12:00:00
epcd13sby                                                        25-DEC-2017 12:00:00
epcd13t                                                          17-DEC-2017 12:00:00
epcd13t                                                          25-DEC-2017 12:00:00

 

When I pull this into a table visualizaion:

 

 

PowerBI.jpg

 

Is this a BUG, FEATURE, or PEBKAC?

1 ACCEPTED SOLUTION

Happy New Years Day! 

 

Add custom column, not conditional column.

Conditional Column options are too basic to handle List.Contains or invisible characters.

Then paste into the custom column window:

 

if List.Contains(List.Transform({97..122}, each Character.FromNumber(_)), Text.Start([DATABASE_NAME], 1)) then Character.FromNumber(8236) else ""

 

I'm assuming your column is named [DATABASE_NAME], but if not, then substitute the right name.

Basically...
List.Contains({a..z}, "e" is true.
List.Contains({a..z}, "E" is false.

 

Fred

View solution in original post

8 REPLIES 8
freder1ck
Kudo Kingpin
Kudo Kingpin

Power Query is case sensitive, so you could remove duplicates there and add an index as a unique id. In most regions, DAX is case insensitive, so it would be good to have a unique identifier. 

 

Table visualizations have a related problem, in that they cannot show rows with duplicate data. So, if you have a check detail with 2 separate line items of $26.99 for different items with the same description, it will display only one row. You would have to include the order line number as well. The idea to prevent this kind of aggregation is here

 

Fred

Thanks Fred, that is what I was presuming.

Seems like a pretty serious shortfall imo.

I can add an index to get both rows, but still will not be able to display the apprropriate values as they both show up the same.

Yes, I could add other fields as well but that's not really the point.

I see what you mean now! Here are two ways to force the lowercase to appear. One is by appending the index to the name. The second is to append an invisible character to the name if the name is first letter is lowercase. Appending a space at the end won't work. 

forums 20171229.png

 

In Power Query, I add a custom column for invisible space if the first character of the name is lowercase.

if List.Contains(List.Transform({97..122}, each Character.FromNumber(_)), Text.Start([Column1.1], 1)) then Character.FromNumber(8236) else ""

97-122 are the ascii characters for lowercase letters. 8236 is an invisible character. 

I then append the Lowercase Space column to the database name. 

 

An alternate way is to pad the start of the name based on the index value: 

Text.Repeat(" ", [Index]) & [Column1.1]

The table visualization strips out leading spaces, but still sees the values as unique.

 

Fred

 

 

Thanks again Fred, this looks promising!!

I'm a newbie so the syntax adding this conditional column using the list.contains is confusing me and giving me errors.

 

I'll play around with it more after the Holidays

Thanks and have a great New Year's Day.

Happy New Years Day! 

 

Add custom column, not conditional column.

Conditional Column options are too basic to handle List.Contains or invisible characters.

Then paste into the custom column window:

 

if List.Contains(List.Transform({97..122}, each Character.FromNumber(_)), Text.Start([DATABASE_NAME], 1)) then Character.FromNumber(8236) else ""

 

I'm assuming your column is named [DATABASE_NAME], but if not, then substitute the right name.

Basically...
List.Contains({a..z}, "e" is true.
List.Contains({a..z}, "E" is false.

 

Fred

Thanks Fred and everyone.

Appending a space if lower case did the trick!

 

if List.Contains(List.Transform({97..122}, each Character.FromNumber(_)), Text.Start([DATABASE_NAME], 1)) then [DATABASE_NAME]&Character.FromNumber(8236) else [DATABASE_NAME]

@stokercw,

You can get more details about how to use list.contains function in the following PBIX file.

https://1drv.ms/u/s!AhsotbnGu1Nogxd-0wt86E_Wr7PG

Regards,
Lydia

Community Support Team _ Lydia Zhang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
vijay_kolisetty
Frequent Visitor

Hi

 

I think its treating the first values format with the second value. You can post your query in Power BI idea forum to make a glance to the respective people.

 

Regards,

 

Vijay

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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