Complex Pivot

How can I use Magic ETL to convert a table from

Domo START.png

to

Domo END.png

without using scripting? I have to remove all scripting tiles from my ETLs. I'm assuming some combination of RANK & WINDOW, PIVOT and GROUP BY, but am running out of talent.

Best Answers

  • ArborRose
    ArborRose Coach
    Answer ✓

    My incoming dataset:

    image.png

    My flow looks like this:

    image.png

    The two outputs (Movie 1, Movie 2) at the bottom are for you to debug and see what is happening.

    Next I create a Rank using Row_Number. The order is by Role, Name. The partition is based on Team.

    image.png

    Then I concatenate the Role and Rank to get the labels we want. This is going to result in something slightly different than what you show. I'll explain.

    image.png

    Here's where those labels differ…

    We are going to pivot based on the labels. The leader of the Team is an R1. The subordinates are R2. The row number is going to only have R1 1 for the leader. The rest will be R2 1, R2 2, R2 3, and R2 4.

    image.png

    finally, we limit the columns to those labels.

    image.png

    To get the result:

    image.png

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **

  • ArborRose
    ArborRose Coach
    Answer ✓

    The debug tiles I used, help me "see" what is happening with the data and their values. This helps me identify the needs for the pivot.

    Note in the Movie 2 debug below, we see the Role_Rank that will become our new column headers.

    image.png

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **

Answers

  • ArborRose
    ArborRose Coach
    edited July 2024

    Create a Pivot. Use the "Pivot" tile to pivot the Role column into new columns. Then group and aggregate by using the "Group By" tile to group by Team and concatenate the names for each role.

    {Urg…apologies, my solution below is a bit different than I described. We don't group by.}

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **

  • ArborRose
    ArborRose Coach
    Answer ✓

    My incoming dataset:

    image.png

    My flow looks like this:

    image.png

    The two outputs (Movie 1, Movie 2) at the bottom are for you to debug and see what is happening.

    Next I create a Rank using Row_Number. The order is by Role, Name. The partition is based on Team.

    image.png

    Then I concatenate the Role and Rank to get the labels we want. This is going to result in something slightly different than what you show. I'll explain.

    image.png

    Here's where those labels differ…

    We are going to pivot based on the labels. The leader of the Team is an R1. The subordinates are R2. The row number is going to only have R1 1 for the leader. The rest will be R2 1, R2 2, R2 3, and R2 4.

    image.png

    finally, we limit the columns to those labels.

    image.png

    To get the result:

    image.png

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **

  • ArborRose
    ArborRose Coach
    Answer ✓

    The debug tiles I used, help me "see" what is happening with the data and their values. This helps me identify the needs for the pivot.

    Note in the Movie 2 debug below, we see the Role_Rank that will become our new column headers.

    image.png

    ** Was this post helpful? Click Agree or Like below. **
    ** Did this solve your problem? Accept it as a solution! **