File size: 1,100 Bytes
12eff8e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | -- ML / DS feature engineering SQL (Vertica legacy)
-- Migrates to Snowflake / dbt feature mart for model training
CREATE LOCAL TEMP TABLE tmp_user_events ON COMMIT PRESERVE ROWS AS
SELECT
user_id,
event_ts,
event_type,
ZEROIFNULL(event_value) AS event_value
FROM staging.product_events
WHERE event_ts >= CURRENT_DATE - 90;
WITH user_agg AS (
SELECT
user_id,
COUNT(*) AS event_count_90d,
COUNT(DISTINCT event_type) AS event_type_nunique,
SUM(event_value) AS value_sum_90d,
AVG(event_value) AS value_avg_90d,
DATEDIFF('day', MAX(event_ts), CURRENT_DATE) AS days_since_last_event
FROM tmp_user_events
GROUP BY user_id
),
labels AS (
SELECT
user_id,
CASE WHEN ZEROIFNULL(churned_flag) = 1 THEN 1 ELSE 0 END AS churn_label
FROM ml.churn_labels
WHERE label_date = CURRENT_DATE - 1
)
SELECT
a.user_id,
a.event_count_90d,
a.event_type_nunique,
a.value_sum_90d,
a.value_avg_90d,
a.days_since_last_event,
l.churn_label
FROM user_agg a
JOIN labels l ON a.user_id = l.user_id;
|