Forum Discussion
Grouping items within a column
- Anonymous3 years ago
Thank you very much. I do not know the M code well at this point, so before I start figuring out how I would insert your M to the existing code, please tell me what is the reason of listing the "CC-002", etc. in the first string? There are millions of variations and, for example, all these CC-002, CC-00024, CP678, B89789 are only a minuscule fraction of the number of variations that are in my Card Number column.
It is not possible to list them all one by one.
I need a solution that somehow groups ALL CC-(numbers), and all three WebPay Id's, and then whatever else as Members.
Best,J
- 3 years ago
Hi Anonymous ,
You don't need to list any variation in the solution. "CC-002" etc are listed in the first string is because it's automatically created string when you enter a table in Power BI.
What all you need to do is add a custom column in Power Query.
Enter the code in the dialog:
if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase ) then "Card" else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase ) then "WebPay" else "Members"Or if you prefer DAX, create a new column.
Column = SWITCH ( TRUE (), LEFT ( [Card number], 2 ) = "CC", "Card", CONTAINSSTRING ( [Card number], "Webpay" ), "WebPay", "Members" )Result:
I attach my sample below for your reference, you can download it to see the details.
Best Regards,
Community Support Team _ kalyjIf this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- 3 years ago
Hi Anonymous ,
It's my pleasure! Tweak the formula to:
if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase ) then "Card" else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase ) then "WebPay" else if List.Contains({"Remote Start","Engineer","Blank"},[Card number]) then [Card number] else "Members"Get the correct result:
Best Regards,
Community Support Team _ kalyj - 3 years ago
Hi Anonymous ,
If the values are in italic in the right of the cell, I think it's because they are of number data type, try to click the left upper coner of the column and select "Text" before you add a custom column.
Best Regards,
Community Support Team _ kalyj
Hi Anonymous ,
You don't need to list any variation in the solution. "CC-002" etc are listed in the first string is because it's automatically created string when you enter a table in Power BI.
What all you need to do is add a custom column in Power Query.
Enter the code in the dialog:
if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase )
then "Card"
else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase )
then "WebPay"
else "Members"
Or if you prefer DAX, create a new column.
Column =
SWITCH (
TRUE (),
LEFT ( [Card number], 2 ) = "CC", "Card",
CONTAINSSTRING ( [Card number], "Webpay" ), "WebPay",
"Members"
)
Result:
I attach my sample below for your reference, you can download it to see the details.
Best Regards,
Community Support Team _ kalyj
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- Anonymous3 years agoNot applicableWow! Thank you so much v-yanjiang-msft.I love it! All the various solutions! Amazing!I have already tested the Custom column and it worked magic!
Ok, so I haven't listed all the options.Please tell me how can we add 3 additional items that are grouped already, and we must keep them as they are: Remote Start keep as "Remorte Start"
Engineer - as Engineer"
(Blank) as "Blank"Please kindly show me how to add these three to the one below:if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase ) then "Card" else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase ) then "WebPay" else "Members"Thank you kindly. Much appreciation.J- v-yanjiang-msft3 years agoCommunity Support
Hi Anonymous ,
It's my pleasure! Tweak the formula to:
if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase ) then "Card" else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase ) then "WebPay" else if List.Contains({"Remote Start","Engineer","Blank"},[Card number]) then [Card number] else "Members"Get the correct result:
Best Regards,
Community Support Team _ kalyj- Anonymous3 years agoNot applicable
Hi kalyj,
OMG! I love it! It woks! It's amazing! It makes me want to learn it!
Thank you so very much. That's a huge help.
Best, J
- Anonymous3 years agoNot applicable
Thank you so much. I love it.
I've edited the code and all works fine, except:
1). In my column some codes appear in italic, and these are giving me Errors.
How can I change whatever is in italic not be in italic? I have approx 484 errors.See the pic below. All the errors are in some italic and appear on the right of my column, whereas everything else, that works, is placed on the left.
2). There are also some (null) values that should stay null.
My code, that works is:
#"Added Custom" = Table.AddColumn(#"Removed Columns", "Custom 1", each if Text.StartsWith( [Card number], "CC", Comparer.OrdinalIgnoreCase )
then "Card"
else if Text.Contains( [Card number], "WebPay", Comparer.OrdinalIgnoreCase )
then "WebPay"
else if Text.Contains( [Card number], "Remote start", Comparer.OrdinalIgnoreCase )
then "Remote Start"
else if Text.Contains( [Card number], "Engineer", Comparer.OrdinalIgnoreCase )
then "Engineer"
else if Text.Contains( [Card number], "V0004001", Comparer.OrdinalIgnoreCase )
then "WebPay"
else if Text.Contains( [Card number], "(Blank)", Comparer.OrdinalIgnoreCase )
then "Blank"
else "Members")
in
#"Added Custom"Please help me edit so the 2 additional arguments are added in.
Your assistance as always highly appreciated.
Thank you kindly,
J
- v-yanjiang-msft3 years agoCommunity Support
Hi Anonymous ,
If the values are in italic in the right of the cell, I think it's because they are of number data type, try to click the left upper coner of the column and select "Text" before you add a custom column.
Best Regards,
Community Support Team _ kalyj- Anonymous3 years agoNot applicable
Amazing, that works! Thank you so much.
Best,
J