Fill empty columns based on values in other columns

I'm trying to figure out a way to do the following in an ETL.

Given data that looks like this, I want to propagate the email address from the first row with a specific ID to all other rows that match that ID. I need to do this in order to attribute all interactions of all sorts to a specific user's email address:

Input Example:

Desired Output:

Best Answers

  • ColemenWilson
    Answer ✓

    This is best accomplished in a dataflow. Using magicETL you can use the group by tile and group by ID for the field Email and select the first non-null value option, then, with 1 email per id from the output of that tile, you can join that with you data on the ID field. Let me know if you have any questions!

    If I solved your problem, please select "yes" above

  • ColemenWilson
    Answer ✓

    No because you will break out the group by into a separate line in the dataflow. So from you input dataset there will be two lines:
    1. All rows of data

    2. 1 unique row for each ID.

    Then you will left join the unique rows for each ID with the original input that has all rows of data. No rows of data will be lost.

    If I solved your problem, please select "yes" above

Answers

  • ColemenWilson
    Answer ✓

    This is best accomplished in a dataflow. Using magicETL you can use the group by tile and group by ID for the field Email and select the first non-null value option, then, with 1 email per id from the output of that tile, you can join that with you data on the ID field. Let me know if you have any questions!

    If I solved your problem, please select "yes" above

  • Thanks @colemenwilson I'm going to try that approach and will post back if I can't figure it out.

  • @colemenwilson - if I do the group by ID tile, won't I lose the additional rows for that same ID? The ID is in the same table as the individual interaction rows

  • ColemenWilson
    Answer ✓

    No because you will break out the group by into a separate line in the dataflow. So from you input dataset there will be two lines:
    1. All rows of data

    2. 1 unique row for each ID.

    Then you will left join the unique rows for each ID with the original input that has all rows of data. No rows of data will be lost.

    If I solved your problem, please select "yes" above

  • Got it, thanks!