dbt
Subscription jewelry
Daily Users Activity
Daily Users Activity model for subscription jewelry.
inferred
Blocks
daily_users_activity.sql · 31 lines
inferred
-- models/daily_users_activity.sql
{{ config(materialized='view') }}
SELECT general_date.date AS general_date
, c.id AS customer_id
, c.entry_time::DATE
, c.canceled_date::DATE
, general_date.date - c.entry_time::DATE AS days_a_customer
FROM (SELECT GENERATE_SERIES(<% start_date_placeholder %>, CURRENT_DATE, '1 day')::DATE AS date) AS general_date
LEFT JOIN members AS c
ON c.entry_time::DATE < general_date.date
AND (CASE
WHEN c.canceled_date::DATE IS NOT NULL
THEN c.canceled_date::DATE
ELSE CURRENT_DATE::DATE
END) >= general_date.date
AND ((membership_start_time IS NOT NULL)
OR (membership_start_time IS NULL AND (c.status = 0 OR (c.canceled_date::DATE IS NULL AND c.status <> 1)))
)
# models/schema.yml
version: 2
models:
- name: daily_users_activity
columns:
- name: active
- name: customer_id
- name: created
- name: canceled
- name: days_a_customer
Assumptions
- materialized='view' is the default; no persist hint found.
- schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
daily_users_activity.sql · 16 lines
source-preserved
validation: not checked
SELECT general_date.date AS general_date
, c.id AS customer_id
, c.entry_time::DATE
, c.canceled_date::DATE
, general_date.date - c.entry_time::DATE AS days_a_customer
FROM (SELECT GENERATE_SERIES(<% start_date_placeholder %>, CURRENT_DATE, '1 day')::DATE AS date) AS general_date
LEFT JOIN members AS c
ON c.entry_time::DATE < general_date.date
AND (CASE
WHEN c.canceled_date::DATE IS NOT NULL
THEN c.canceled_date::DATE
ELSE CURRENT_DATE::DATE
END) >= general_date.date
AND ((membership_start_time IS NOT NULL)
OR (membership_start_time IS NULL AND (c.status = 0 OR (c.canceled_date::DATE IS NULL AND c.status <> 1)))
)
daily_users_activity.view.lkml · 50 lines
inferred
view: daily_users_activity {
derived_table: {
sql: SELECT general_date.date AS general_date
, c.id AS customer_id
, c.entry_time::DATE
, c.canceled_date::DATE
, general_date.date - c.entry_time::DATE AS days_a_customer
FROM (SELECT GENERATE_SERIES(<% start_date_placeholder %>, CURRENT_DATE, '1 day')::DATE AS date) AS general_date
LEFT JOIN members AS c
ON c.entry_time::DATE < general_date.date
AND (CASE
WHEN c.canceled_date::DATE IS NOT NULL
THEN c.canceled_date::DATE
ELSE CURRENT_DATE::DATE
END) >= general_date.date
AND ((membership_start_time IS NOT NULL)
OR (membership_start_time IS NULL AND (c.status = 0 OR (c.canceled_date::DATE IS NULL AND c.status <> 1)))
) ;;
}
dimension: active {
type: time
sql: ${TABLE}.general_date ;;
}
dimension: customer_id {
type: int
sql: ${TABLE}.customer_id ;;
}
dimension: created {
type: time
sql: ${TABLE}.created_at ;;
}
dimension: canceled {
type: time
sql: ${TABLE}.canceled_date ;;
}
dimension: days_a_customer {
type: number
sql: ${TABLE}.days_a_customer ;;
}
measure: count_users {
type: count_distinct
sql: ${customer_id} ;;
}
}
daily_users_activity.view.lookml · 37 lines
source-preserved
- view: daily_users_activity
derived_table:
sql: SELECT general_date.date AS general_date
, c.id AS customer_id
, c.entry_time::DATE
, c.canceled_date::DATE
, general_date.date - c.entry_time::DATE AS days_a_customer
FROM (SELECT GENERATE_SERIES(<% start_date_placeholder %>, CURRENT_DATE, '1 day')::DATE AS date) AS general_date
LEFT JOIN members AS c
ON c.entry_time::DATE < general_date.date
AND (CASE
WHEN c.canceled_date::DATE IS NOT NULL
THEN c.canceled_date::DATE
ELSE CURRENT_DATE::DATE
END) >= general_date.date
AND ((membership_start_time IS NOT NULL)
OR (membership_start_time IS NULL AND (c.status = 0 OR (c.canceled_date::DATE IS NULL AND c.status <> 1)))
)
fields:
- dimension: active
type: time
sql: ${TABLE}.general_date
- dimension: customer_id
type: int
sql: ${TABLE}.customer_id
- dimension: created
type: time
sql: ${TABLE}.created_at
- dimension: canceled
type: time
sql: ${TABLE}.canceled_date
- dimension: days_a_customer
type: number
sql: ${TABLE}.days_a_customer
- measure: count_users
type: count_distinct
sql: ${customer_id}
Contents
- daily_users_activity.sql
- daily_users_activity.sql
- daily_users_activity.view.lkml
- daily_users_activity.view.lookml