Forum Discussion
Lookup the cells in same row
I have a crazy dataset like below..
In the Col 10, I want to lookup the previous cells in the same row like if any of the cell contains OS: then in Col 10 put the value.
But some rows having 3 values for OS: in different columns for some reasons. In that case simply concatenate using a delimter and put it together in the same cell.
Is this possible
| Col 1 | Col 2 | Col 3 | Col 4 | Col 5 | Col 6 | Col 7 | Col 8 | Col 9 | Col 10 | Col 11 |
| Jack | OS: Windows | Windows | ||||||||
| Rick | OS: Windows | OS: Windows 2000 | OS: Windows 2000 Server | Windows| Windows 2000|Windows 2000 Server |
Hi Anonymous ,
Are you trying to create a new column to combine all other columns? You don't need to unpivot the columns , just use the following m query:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8kpMzlbSUfIPtlIIz8xLyS8vBvJQUKxOtFJQJlgVhsKQyoJUH5fU4uyS/AKIJFROITi1qCy1SMHIwNAMVcLIwMAAm1Kl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t, Column6 = _t, Column7 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}}), result = Table.AddColumn(#"Changed Type","column10",each Text.Combine(List.RemoveNulls(List.Select(Record.ToList(_),(x)=>Text.Contains(x,"OS"))),"|")), #"Replaced Value" = Table.ReplaceValue(result,"OS:","",Replacer.ReplaceText,{"column10"}) in #"Replaced Value"Please refer to the pbix file.
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Best Regards,
Dedmon Dai
- Anonymous5 years ago
v-deddai1-msft Thank You and I tried the code. It is giving me error as shown below. I cannot figure out to move further.
Expression.Error: We cannot convert the value 103068199 to type Text.
Details:
Value=103068199
Type=[Type]I have a column ID and one of the cell has 103068199 as the value. Can you please help
11 Replies
- AnonymousNot applicable
Friends any ideas please
- ryan_mayu
Super User
Anonymous
here is a workaround for you.
1. select the first column and unpivot other columns
2. filter out blank values
3. group by
= Table.Group(#"Filtered Rows", {"Column1"}, {{"Count", each Text.Combine([Value],"|"), type text}})if you dont want to see OS, you can remove all OS, I didnt write OS in the sample data
please see the attachment below
- AnonymousNot applicable
Apologies Ryan. I should have mentioned earlier. My data was originally started from Step 3. I mean it was like in step 3 then splitted using delimenter. But the issue is the data was there like below.
If you can look at the 2nd row in between cells are having different attributes so I was not able to simply merge easily and this keeps varying. For some rows the OS values are in Col 2 and for some in Col3 and for some in Col 5 and Col 6 with some othr attribute in Col 4 . Hence I thought if we can do a text search or look up or any other possiblty to capture the OS value.. Is it possible..
Col 1 Col 2 Col 3 Col 4 Col 5 Col 6 Col 7 Col 8 Col 9 Col 10 Col 11 Jack OS: Windows Windows Rick OS: Windows Type: Desktop Loc: Denver OS: Windows 2000 OS: Windows 2000 Server Windows| Windows 2000|Windows 2000 Server