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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Mohanraj87
Frequent Visitor

Dynamically removing columns ending with even numbers

Hi All,

 

In Power Query, I have split a column based on "," delimiter and the result produced one column split into 10 columns and columns names have been named as "Column_1", "Column_2", and till "Column_10". Now today based on the values I get 10 columns but tomorrow I may get 20 columns. So, after split, I need to remove all the columns which is ending with even numbers like "Column_2", "Column_4" till the last even numbered columns. Is there a way to do it?

 

Regards,

Mohanraj

1 ACCEPTED SOLUTION
slorin
Super User
Super User

Hi

With 10 columns

= Table.SplitColumn(#"Changed Type 1", "Details", each List.Alternate(Text.Split(_,","),1,1,1), 10)

 or

 

= Table.SplitColumn(
#"Changed Type 1",
"Details",
each List.Alternate(Text.Split(_,","),1,1,1),
List.Max(
Table.TransformColumns(

#"Changed Type 1",
{{"Details", each Number.IntegerDivide(Text.Length(Text.Select(_,",")) + 1, 2) + 1, Int64.Type}}
)[Details]
)
)

 

https://goodly.co.in/split-by-variable-columns-in-power-query/

 

Stéphane

View solution in original post

6 REPLIES 6
slorin
Super User
Super User

Hi

With 10 columns

= Table.SplitColumn(#"Changed Type 1", "Details", each List.Alternate(Text.Split(_,","),1,1,1), 10)

 or

 

= Table.SplitColumn(
#"Changed Type 1",
"Details",
each List.Alternate(Text.Split(_,","),1,1,1),
List.Max(
Table.TransformColumns(

#"Changed Type 1",
{{"Details", each Number.IntegerDivide(Text.Length(Text.Select(_,",")) + 1, 2) + 1, Int64.Type}}
)[Details]
)
)

 

https://goodly.co.in/split-by-variable-columns-in-power-query/

 

Stéphane

Thanks you very much @slorin your solution worked like a charm.

slorin
Super User
Super User

The principle is not to delete even columns but to select only odd columns with the List.Alternate

 

= Table.SplitColumn(#"Changed Type 1", "Details", each List.Alternate(Text.Split(_,","),1,1,1))

Stéphane

Hi @slorin your code worked partially. Meaning the code worked to the lowest length of the column values. 
Eg: For column value 1, raw, 3 I got the result as 1, 3 whereas for the column value 2, name, house, 10, 6, 20 I got the result as 2, house.

Mohanraj87_0-1709053062205.png

 



slorin
Super User
Super User

Hi

 

= Table.SplitColumn(Your_Source, "Your_Column", each List.Alternate(Text.Split(_,","),1,1,1))

Stéphane 

Hi @slorin ,

 

Below is the screenshot of my Power Query and Advance editor. In the post I have mentioned the column name having "_", but in reality its ".". So, I tried to replace "_" to "." in the advance editor, but it didnt work. 
Let me know as what is wrong.

Mohanraj87_1-1709041232477.png

 

 

 

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

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

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

Top Solution Authors
Top Kudoed Authors