Hi Adobe Community,
Case
Our team is working with a client who requested to store vouchers data into RTCDP as a profile attribute to keep record of what vouchers each individual profile holds. Data wished to be included are: email, voucher expire in 7 days, owned coupons and used coupons. The ultimate goal is to create audience for voucher expiration activation.
Example
On Day 1, a profile owns 3 coupons, 2 of which will expired in 7 days and used 1 coupon. On Day 2, the profile purchased 2 additional coupon and have used 1 additional coupon, which makes the profile to own 4 coupons and have used 2 coupons.
Day 1
couponExpiredIn7Days | ownedCoupons | usedCoupons | |
xxx@example.com | xxx123, xxx234 | xxx123, xxx234, xxx456 | xxx345 |
Day 2
couponExpiredIn7Days | ownedCoupons | usedCoupons | |
xxx@example.com | xxx234 | xxx234, xxx456, xxx567, xxx678 | xxx123, xxx345 |
The Question
In case client could only send us the daily updates on the change status of the coupons, is there a way we can insert the additional records and remove obsoleted records without needing to receive the full data of all past record? i.e. record from client will only show which are the newly added coupons and 1 coupon was used. Alternatively, should we ask client for a full record for all coupons to ingest update and replace these attributes on a daily basis?
Kindly share your thoughts on the proper handling of this matter.
Thanks a lot!
Zac
Solved! Go to Solution.
You may want to consider using an Object Array for what Coupons they have. In that have a fields CouponName, CouponExpirationDate. Periodically, you will want to use Data Distiller to clean this up for Coupons that have expired past x days (otherwise it will grow forever).
To track Used Coupons, you might want to use Experience Events.
Hi @ZacharyTa1 !
I think it's not possible to add value maintaining the old ones by default in platform, besides, you need to provide kind of a language/signals to know when a coupon it's added or removed (added, expired and/or used). The datasets store the data based on the primary key so that the record dataset keeps in profile is the last received row as the value for a given profile (and merging them by the corresponding merge policy what can be even more difficult to manage).
What you can do is to ingest the data into a dataset without enabling for profile and then run a query service that merge new data with the previous exiting data in a dataset enabled for profile and inserting that result into the dataset enabled for profile. It's not the best option, but the one that you can implement without fully updates from source system. I only recommend this solution in case the dataset has only 1 person identifier (wich should be the primary key).
Hope it helps
Regards
You may want to consider using an Object Array for what Coupons they have. In that have a fields CouponName, CouponExpirationDate. Periodically, you will want to use Data Distiller to clean this up for Coupons that have expired past x days (otherwise it will grow forever).
To track Used Coupons, you might want to use Experience Events.