Consolidate duplicate fields and aggregate corresponding values as outputs
Troy Tessalone,
Is there a way to identify unique specific fields and then aggregate their corresponding values for records with duplicate specified fields and output that sum with the respective specified field? I’m horrible at explaining things so below is an example.
I have a Get request that pulls all records from a view in Airtable and below is a sample Test Action:
records:
1:
id: rec1234567890
fields:
Username: Sam
Value: 1
2:
id: recasdg654896
fields:
Username: Bob
Value: 1
3:
id: recaga54asg64
fields:
Username: Sam
Value: 1
4:
id: rec987654135
fields:
Username: Sam
Value: 1
Basically I would want it to output Username: Sam ; Value: 3 and Username: Bob ; Value: 1 because Sam is in there 3 times, each time with a Value of 1 and Bob is only in there 1 time with a value of 1.
Page 1 / 1
Hi @cothraw1
What apps are you using in the Zap?
Please post screenshots with how the data is returned from the Zap step that you are trying to use.
Hey Troy,
The only app I’m using to get this data is I’m pulling it from an Airtable view. If I can get it to aggregate values per unique username, I’ll post it back to Airtable later in the zap which is why I need it to output individual usernames and aggregate values per username. The trigger for the zap is just a daily schedule and the 2nd step is a Get request to pull the Airtable data from a particular view. I have it setup to create a loop from line items afterwards. However, that caused issues. I initially had it setup to find the username and look to see what the current value is for that username in Airtable and then just add each value to its current value as it loops through but it loops through so quickly that it doesn’t give Airtable enough time to update its value from a previous value being added to it before the next duplicate username tries to find it again. So using the above example, where Sam is supposed to ultimately have a value of 3, it just ends up with a value of 1. I figured it would be better to have Zapier add the values together and only have it look in Airtable once before updating it.
Hi @cothraw1
I initially had it setup to find the username and look to see what the current value is for that username in Airtable and then just add each value to its current value as it loops through but it loops through so quickly that it doesn’t give Airtable enough time to update its value from a previous value being added to it before the next duplicate username tries to find it again.
I have not tried a delay because I didn’t think that would help because, as an example, if two “Sams” enter the delay 1 second apart then they should be released from the delay 1 second apart which means the delay wouldn’t accomplish anything. Is that correct or is my understanding wrong?
I have not tried using a roll up field because I’m not entirely certain how to use them but I don’t mind giving it a shot.
@cothraw1
Maybe give the Delay After Queue a try:
@cothraw1
Airtable Rollups will depend on your intended use case.
It’s not entirely clear how you are trying to configure your Zap logic and how those values would be updated in the Airtable Base.
Perhaps you can outline the desired behavior from end to end.
@cothraw1
Regardless, here’s the Code step…
CONFIG
CODE
let Username = inputData.Username.split(","); let Value = inputData.Value.split(","); let Distinct = n]; let Total = t];
Username.forEach((i) => { if (!Distinct.includes(i)) { Distinct.push(i); Total.push(0); } });
for (let i = 0; i < Username.length; i++) { let x = Distinct.indexOf(Usernameei]); Total x] += parseInt(Value(i]); }