Forum Discussion

pect's avatar
pect
Helper I
8 years ago
Solved

Table transformation

Dear all,

 

I would like to transform a table in Power BI but I don't find the way to do it. I will clarify my doubt with an example.

 

1) I load in Power BI  a table like the following:

 

Project

Recruiting amount year X

Awarded amount year X

Contracting amount year Y

Awarded amount year Y

1

A

C

E

G

2

B

D

F

H

 

2) I would like to transform it in order to obtain the following table:

 

Project

Recruitment statusYear

Amount

1

Recruiting

X

A

1

Recruiting

Y

E

1

Awarded

X

C

1

Awarded

Y

G

2

Recruiting

X

B

2

Recruiting

Y

F

 

Could anyone shed a light?

 

Thank you very much.

  • MarcelBeug's avatar
    MarcelBeug
    8 years ago

    This query:

     

    let
        Source = Table1,
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Project"}, "Attribute", "Value"),
        #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Recruitment status"}, {"Value", "Amount"}}),
        #"Inserted Text After Delimiter" = Table.AddColumn(#"Renamed Columns", "Year", each Text.AfterDelimiter([Recruitment status], " ", {0, RelativePosition.FromEnd}), type text),
        #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Inserted Text After Delimiter", {{"Recruitment status", each Text.BeforeDelimiter(_, " ", 0), type text}}),
        #"Reordered Columns" = Table.ReorderColumns(#"Extracted Text Before Delimiter",{"Project", "Recruitment status", "Year", "Amount"})
    in
        #"Reordered Columns"

     

    Results in:

4 Replies

  • MarcelBeug's avatar
    MarcelBeug
    Community Champion

    Can you explain the logic?

     

    E.g. how does amount E from column Contracting amount year Y end up with recruitment status Recruitment?

    • MarcelBeug's avatar
      MarcelBeug
      Community Champion

      This query:

       

      let
          Source = Table1,
          #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Project"}, "Attribute", "Value"),
          #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Recruitment status"}, {"Value", "Amount"}}),
          #"Inserted Text After Delimiter" = Table.AddColumn(#"Renamed Columns", "Year", each Text.AfterDelimiter([Recruitment status], " ", {0, RelativePosition.FromEnd}), type text),
          #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Inserted Text After Delimiter", {{"Recruitment status", each Text.BeforeDelimiter(_, " ", 0), type text}}),
          #"Reordered Columns" = Table.ReorderColumns(#"Extracted Text Before Delimiter",{"Project", "Recruitment status", "Year", "Amount"})
      in
          #"Reordered Columns"

       

      Results in:

      • pect's avatar
        pect
        Helper I

        Thank you very much Marcel.

         

        It worked with the example I have given. However, I am trying to adapt the query in case there was any modification of the input table. For example, my real input table is:

         

        PlaConcepteEstatCodi ActuacióLínia pressupostSubplaNom2017 moviment2017 adjudicat2017 licitació2018 moviment2018 adjudicat2018
        licitació
        2019 moviment2019 adjudicat2019 licitacióData extracció
        Pla TecnològicLínia BaseLínia Base AM XF  H     09/10/2017
        Pla TecnològicContracteAdjudicat BN Y G  I    09/10/2017

         

        Therefore, the table I would like to obtain would be:

         

         

        I would really appreciate if you could help me with my real example.

         

        Thank you again!