Magic ETL

Magic ETL

Filling in blanks, based on next value

I have a dataset in which a User ID will be identified during a session.... and then later change User IDs... and in between, there are rows of data in which the User ID is not identified - but I want to fill in those gaps with the next User ID that is identified during that session...

Row -- Session ID -- User ID -- Timestamp

001 -- 123 -- Null -- 10000...

002 -- 123 -- Null -- 10002...

003 -- 123 -- ABC -- 10004...

004 -- 987 -- Null -- 10006...

005 -- 123 -- Null -- 10005...

006 -- 123 -- DEF -- 10007....

007 -- 987 -- XYZ -- 10009...

I would want User ID value in rows 001 and 002 populated with 'ABC'

I would want User ID value in row 005 populated with 'DEF'

I would want User ID value in row 004 populated with 'XYZ'

Can anyone advise on how I can do this?

Answers

    1. SELECT  *,
    2. CASE
    3. WHEN `userID` IS NULL  
    4. THEN (SELECT DISTINCT `userID` FROM `your_table` WHERE (`sessionID`=T.`sessionID`) AND (`userID` IS NOT NULL)) ELSE `userID` END AS "new_UserID"
    5. FROM `your_table` T

    If I understood correctly, this should work.

    Hope it helps!

Welcome!

It looks like you're new here. Members get access to exclusive content, events, rewards, and more. Sign in or register to get started.
Sign In