Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Format vertical data to table in power query

Hi,

 

I have 2000+ rows i am trying to format. See screenshot for the given (left) and desired(right). if the blank columns can be renamed that would be awesome but understand if not since there is no current data.

 

 

  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi  Anonymous ,

    Here are the steps you can follow:

    1. Append two tables in power query.

    And click Add Column - Index Column - From1. Add a column of Index.

    2. Create calculated column.

    IN =
    if(
        CONTAINSSTRING('Append1'[Name],"INVOICE"),'Append1'[Name])
    Column =
    SWITCH(TRUE(),
     CONTAINSSTRING('Append1'[Name],"DBA"),'Append1'[Name],
      CONTAINSSTRING('Append1'[Name],"TAP"),'Append1'[Name])
    Column 2 =
    SWITCH(TRUE(),
     CONTAINSSTRING('Append1'[Name],"KOH"),'Append1'[Name],
      CONTAINSSTRING('Append1'[Name],"14838"),'Append1'[Name])
    Column 3 =
    var _number={"1","2","3","4","5","6""7","8","9"}
    return
    IF(
    LEFT('Append1'[Name]) in _number &&CONTAINSSTRING('Append1'[Name],"-"),'Append1'[Name])
    Column 4 =
    var _number={"1","2","3","4","5","6""7","8","9"}
    return
    IF(
        LEFT('Append1'[Name],1) in _number&&
        RIGHT('Append1'[Name],1) in _number&&
        CONTAINSSTRING('Append1'[Name],"-")=FALSE()&&'Append1'[Name]<>"14838",
        'Append1'[Name])
    Column 5 =
    if(
        CONTAINSSTRING('Append1'[Name],"USD"),'Append1'[Name])
    Column 6 =
    if(
        CONTAINSSTRING('Append1'[Name],"2021"),'Append1'[Name])
    
    

    3. Create calculated table.

    All table:
    all =
    SUMMARIZE('Append1','Append1'[Column],'Append1'[Column 2],'Append1'[Column 3],'Append1'[Column 4],Append1[Column 5],Append1[Column 6],'Append1'[Index])

    True Table:

    True =
    var _table=SUMMARIZE('all','all'[Column],
    "1",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 2]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 2]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 2]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 2]<>BLANK()),[Index])))),
    "2",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 3]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 3]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 3]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 3]<>BLANK()),[Index])))),
    "3",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 4]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 4]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 4]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 4]<>BLANK()),[Index])))),
    "4",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 5]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 5]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 5]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 5]<>BLANK()),[Index])))),
    "5",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 6]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 6]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 6]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 6]<>BLANK()),[Index]))))
    )
    return
    FILTER(_table,
    [Column] <>BLANK())

    4. Result:

    Please click here for the pbix file

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi  Anonymous ,

    Here are the steps you can follow:

    1. Append two tables in power query.

    And click Add Column - Index Column - From1. Add a column of Index.

    2. Create calculated column.

    IN =
    if(
        CONTAINSSTRING('Append1'[Name],"INVOICE"),'Append1'[Name])
    Column =
    SWITCH(TRUE(),
     CONTAINSSTRING('Append1'[Name],"DBA"),'Append1'[Name],
      CONTAINSSTRING('Append1'[Name],"TAP"),'Append1'[Name])
    Column 2 =
    SWITCH(TRUE(),
     CONTAINSSTRING('Append1'[Name],"KOH"),'Append1'[Name],
      CONTAINSSTRING('Append1'[Name],"14838"),'Append1'[Name])
    Column 3 =
    var _number={"1","2","3","4","5","6""7","8","9"}
    return
    IF(
    LEFT('Append1'[Name]) in _number &&CONTAINSSTRING('Append1'[Name],"-"),'Append1'[Name])
    Column 4 =
    var _number={"1","2","3","4","5","6""7","8","9"}
    return
    IF(
        LEFT('Append1'[Name],1) in _number&&
        RIGHT('Append1'[Name],1) in _number&&
        CONTAINSSTRING('Append1'[Name],"-")=FALSE()&&'Append1'[Name]<>"14838",
        'Append1'[Name])
    Column 5 =
    if(
        CONTAINSSTRING('Append1'[Name],"USD"),'Append1'[Name])
    Column 6 =
    if(
        CONTAINSSTRING('Append1'[Name],"2021"),'Append1'[Name])
    
    

    3. Create calculated table.

    All table:
    all =
    SUMMARIZE('Append1','Append1'[Column],'Append1'[Column 2],'Append1'[Column 3],'Append1'[Column 4],Append1[Column 5],Append1[Column 6],'Append1'[Index])

    True Table:

    True =
    var _table=SUMMARIZE('all','all'[Column],
    "1",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 2]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 2]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 2]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 2]<>BLANK()),[Index])))),
    "2",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 3]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 3]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 3]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 3]<>BLANK()),[Index])))),
    "3",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 4]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 4]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 4]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 4]<>BLANK()),[Index])))),
    "4",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 5]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 5]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 5]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 5]<>BLANK()),[Index])))),
    "5",IF('all'[Column]="DBA Co.",
    CALCULATE(MAX('all'[Column 6]),FILTER(ALL('all'),'all'[Index]=MAXX(FILTER( ALL('all'),'all'[Column 6]<>BLANK()),[Index]))),
    CALCULATE(MAX('all'[Column 6]),FILTER(ALL('all'),'all'[Index]=MinX(FILTER( ALL('all'),'all'[Column 6]<>BLANK()),[Index]))))
    )
    return
    FILTER(_table,
    [Column] <>BLANK())

    4. Result:

    Please click here for the pbix file

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly