members
30 rowsOne row per subscriber. Demographics + plan + tenure bucket + bot flag.
Columns
| Name | Type | What it means |
|---|---|---|
member_idPK | int | Subscriber identifier. |
signup_date | date | First day of subscription. Anchor for cohort and retention math. |
country | string | ISO-style country code (e.g. US, BR, UK). |
plan_type | string | basic / standard / premium. |
subscription_status | string | active / churned / paused. Filter to active for live-base questions. |
tenure_bucket | string | 0-3m / 3-6m / 6-12m / 12m+. Pre-computed band for churn-risk scoring. |
is_bot | bool | TRUE for synthetic/bot traffic. Filter out for any user-facing metric. |
Common filters
WHERE is_bot = FALSE
Exclude bot traffic from every member-facing metric. Forgetting this is a senior-interview red flag.
WHERE subscription_status = 'active'
Use when measuring the live base (churn risk, current engagement). Skip for cohort/retention questions where you want everyone who ever signed up.
Common joins
FROM members m JOIN engagement_daily ed USING (member_id)
Member-level daily engagement; the spine of retention and streak questions.
FROM members m JOIN experiment_assignments ea USING (member_id)
Member attributes attached to experiment variant — needed for slicing lift by tenure/country.