Don't miss your chance to take the Fabric Data Engineer (DP-600) exam for FREE! Find out how by attending the DP-600 session on April 23rd (pacific time), live or on-demand.
Learn moreNext up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now
I receive a response through API call and I want to convert anything but the first column to text and then TRIMMED, CLEANED
The first column is always integer and it will always be there but everything else is text.
For example,
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUVIAAUcwCeMpODk5oQgEg4BSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [col1 = _t, col2 = _t, col3 = _t, col4 = _t]),
ct = Table.TransformColumnTypes(Source,{{"col1", Int64.Type}, {"col2", type text}, {"col3", type text}}),
#"Trimmed Text" = Table.TransformColumns(ct,{{"col2", Text.Trim, type text}, {"col3", Text.Trim, type text}, {"col4", Text.Trim, type text}}),
#"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"col2", Text.Clean, type text}, {"col3", Text.Clean, type text}, {"col4", Text.Clean, type text}})
in
#"Cleaned Text"
for example, this is the response today
but there can be col5, col6 ......col(n) tomorrow which needs to be treated the same way for transformation.
Is there a dynamic way to ask PQ to TRIM,CLEAN any column that is not first column/ col#1?
I tried this which works. Is this optimal? I want this to be super-efficient
Table.TransformColumns(ct, List.Transfrom(List.RemoveFirstN(Table.ColumnNames(ct),1), each {_,Text.Trim}))
Thank you in advance
@AlexisOlson @wdx223_Daniel @ImkeF @watkinnc @CNENFRNL
Solved! Go to Solution.
I don't think you can do much better. Maybe sticking a buffer or two in there will help a bit?
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUVIAAUcwCeMpODk5oQgEg4BSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [col1 = _t, col2 = _t, col3 = _t, col4 = _t]),
ct = Table.TransformColumnTypes(Source,{{"col1", Int64.Type}, {"col2", type text}, {"col3", type text}}),
ColsToTransform = List.Buffer(List.Skip(Table.ColumnNames(ct))),
TransformDefinition = List.Buffer(List.Transform(ColsToTransform, each {_, (txt) => Text.Clean(Text.Trim(txt)), type text})),
Result = Table.TransformColumns(ct, TransformDefinition)
in
Result
I don't think you can do much better. Maybe sticking a buffer or two in there will help a bit?
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUVIAAUcwCeMpODk5oQgEg4BSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [col1 = _t, col2 = _t, col3 = _t, col4 = _t]),
ct = Table.TransformColumnTypes(Source,{{"col1", Int64.Type}, {"col2", type text}, {"col3", type text}}),
ColsToTransform = List.Buffer(List.Skip(Table.ColumnNames(ct))),
TransformDefinition = List.Buffer(List.Transform(ColsToTransform, each {_, (txt) => Text.Clean(Text.Trim(txt)), type text})),
Result = Table.TransformColumns(ct, TransformDefinition)
in
Result
Check out the April 2026 Power BI update to learn about new features.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 3 | |
| 3 | |
| 2 |
| User | Count |
|---|---|
| 7 | |
| 5 | |
| 5 | |
| 5 | |
| 4 |