Forum Discussion

PaulTHR's avatar
PaulTHR
Frequent Visitor
3 years ago
Solved

Extract first integer and thPowerQuery a way to remove the quantity number and specific word

Hi - I need to create in PowerQuery a way to remove the quantity number and specific word "Piece" from a data set in Pbi PowerQuery.
I have managed to try a couple of methods including splitiing by delimiter but I lose the result completely when the word "Piece" is not in the record - looks like this:

Before                             After                   Unfortunately I am getting                      But what I want is                   
2 Piece TypeATypeATypeATypeA
2 Piece TypeBTypeBTypeBTypeB
2 Piece TypeCTypeCTypeCTypeC
TypeDTypeD TypeD
2 Piece TypeATypeATypeATypeA
3 Piece TypeBTypeBTypeBTypeB
3 Piece TypeCTypeCTypeCTypeC
4 Piece TypeDTypeDTypeDTypeD
TypeATypeA TypeA
4 Piece TypeBTypeBTypeBTypeB
4 Piece TypeCTypeCTypeCTypeC
4 Piece TypeDTypeDTypeDTypeD
TypeATypeA TypeA
5 Piece TypeBTypeBTypeBTypeB
5 Piece TypeCTypeCTypeCTypeC
TypeDTypeD TypeD
5 Piece TypeATypeATypeATypeA
5 Piece TypeBTypeBTypeBTypeB

I had thought about find/replace but the numbers can be anything so dont want a script for every number option.

  • PaulTHR 

    First add a new column with following code.

    Text.Remove( [ColumnName], {"0".."9"} )

    Then replace " Piece ".

    add space before and after Piece if there are space in existing column.

    Thank you.

3 Replies

  • Dinesh_Suranga's avatar
    Dinesh_Suranga
    Continued Contributor

    PaulTHR 

    First add a new column with following code.

    Text.Remove( [ColumnName], {"0".."9"} )

    Then replace " Piece ".

    add space before and after Piece if there are space in existing column.

    Thank you.

    • PaulTHR's avatar
      PaulTHR
      Frequent Visitor

      Thanks very much that did the trick.

  • I think you can also do this purely with the GUI by using Text After Delimiter using a space and scanning from the right rather than the left.

     

    This produces code like

    Table.AddColumn(
        #"Changed Type",
        "Text After Delimiter",
        each Text.AfterDelimiter([Before], " ", {0, RelativePosition.FromEnd}),
        type text
    )