[DRAFT]ETL 400: Attribute-Level Change Detection in Profile Snapshot Data
Step-by-Step Tracking of Changes:
SELECT a.customer_id, CASE WHEN CRC32(CONCAT(a.first_name, a.last_name, a.email, a.phone_number, a.age, a.location, a.purchase_history, a.loyalty_status)) != CRC32(CONCAT(b.first_name, b.last_name, b.email, b.phone_number, b.age, b.location, b.purchase_history, b.loyalty_status)) THEN 'Changed' ELSE 'No Change' END AS attribute_change_status FROM customer_attributes a LEFT JOIN customer_attributes b ON a.customer_id = b.customer_id AND b.date_recorded = DATE_SUB(a.date_recorded, 1) WHERE a.date_recorded = CURRENT_DATE();SELECT a.customer_id, CASE WHEN CRC32(CONCAT(a.high_spenders, a.frequent_buyers, a.location_based_promo)) != CRC32(CONCAT(b.high_spenders, b.frequent_buyers, b.location_based_promo)) THEN 'Segment Changed' ELSE 'No Change' END AS segment_change_status FROM customer_segments a LEFT JOIN customer_segments b ON a.customer_id = b.customer_id AND b.date_recorded = DATE_SUB(a.date_recorded, 1) WHERE a.date_recorded = CURRENT_DATE();SELECT a.customer_id, CASE WHEN CRC32(CONCAT(a.email_id, a.phone_id, a.loyalty_id)) != CRC32(CONCAT(b.email_id, b.phone_id, b.loyalty_id)) THEN 'Identity Changed' ELSE 'No Change' END AS identity_change_status FROM identity_map a LEFT JOIN identity_map b ON a.customer_id = b.customer_id AND b.date_recorded = DATE_SUB(a.date_recorded, 1) WHERE a.date_recorded = CURRENT_DATE();
Summary Table of Changes:
Outcome:
Last updated