dbt
Dating platform
Visitors
Visitors model for dating platform.
inferred
Blocks
visitors.sql · 62 lines
inferred
-- models/visitors.sql
{{ config(materialized='view') }}
SELECT
v.app_id,
v.domain_userid,
v.first_touch,
v.last_touch,
v.number_of_events,
v.distinct_pages_viewed,
v.number_of_sessions,
l.page_urlhost,
l.page_urlpath,
s.mkt_source,
s.mkt_medium,
s.mkt_campaign,
s.mkt_term,
s.refr_source,
s.refr_medium,
s.refr_term,
s.refr_urlhost,
s.refr_urlpath
FROM
{{ this }}.visitors_basic AS v
LEFT JOIN {{ this }}.sessions_landing_page AS l
ON v.domain_userid = l.domain_userid
AND l.domain_sessionidx = 1
LEFT JOIN {{ this }}.sessions_source AS s
ON v.domain_userid = s.domain_userid
AND s.domain_sessionidx = 1
# models/schema.yml
version: 2
models:
- name: visitors
columns:
- name: app_id
- name: user_id
- name: first_touch
- name: last_touch
- name: events_during_lifetime
- name: events_during_lifetime_tiered
- name: bounce
- name: distinct_pages_viewed
- name: distinct_pages_viewed_tiered
- name: number_of_sessions
- name: number_of_sessions_tiered
- name: session_stream
- name: event_stream
- name: landing_page_url_host
- name: landing_page_url_path
- name: landing_page_url
- name: referer_medium
- name: referer_source
- name: referer_term
- name: referer_url_host
- name: referer_url_path
- name: campaign_medium
- name: campaign_source
- name: campaign_term
- name: campaign_name
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.
visitors.sql · 27 lines
source-preserved
validation: not checked
SELECT
v.app_id,
v.domain_userid,
v.first_touch,
v.last_touch,
v.number_of_events,
v.distinct_pages_viewed,
v.number_of_sessions,
l.page_urlhost,
l.page_urlpath,
s.mkt_source,
s.mkt_medium,
s.mkt_campaign,
s.mkt_term,
s.refr_source,
s.refr_medium,
s.refr_term,
s.refr_urlhost,
s.refr_urlpath
FROM
${TABLE}.visitors_basic AS v
LEFT JOIN ${TABLE}.sessions_landing_page AS l
ON v.domain_userid = l.domain_userid
AND l.domain_sessionidx = 1
LEFT JOIN ${TABLE}.sessions_source AS s
ON v.domain_userid = s.domain_userid
AND s.domain_sessionidx = 1
visitors.view.lkml · 219 lines
source-preserved
view: visitors {
derived_table: {
sql: SELECT
v.app_id,
v.domain_userid,
v.first_touch,
v.last_touch,
v.number_of_events,
v.distinct_pages_viewed,
v.number_of_sessions,
l.page_urlhost,
l.page_urlpath,
s.mkt_source,
s.mkt_medium,
s.mkt_campaign,
s.mkt_term,
s.refr_source,
s.refr_medium,
s.refr_term,
s.refr_urlhost,
s.refr_urlpath
FROM
${TABLE}.visitors_basic AS v
LEFT JOIN ${TABLE}.sessions_landing_page AS l
ON v.domain_userid = l.domain_userid
AND l.domain_sessionidx = 1
LEFT JOIN ${TABLE}.sessions_source AS s
ON v.domain_userid = s.domain_userid
AND s.domain_sessionidx = 1 ;;
}
dimension: app_id {
sql: ${TABLE}.app_id ;;
}
dimension: user_id {
sql: ${TABLE}.domain_userid ;;
}
dimension: first_touch {
sql: ${TABLE}.first_touch ;;
}
dimension: last_touch {
type: time
sql: ${TABLE}.last_touch ;;
}
dimension: events_during_lifetime {
type: int
sql: ${TABLE}.number_of_events ;;
}
dimension: events_during_lifetime_tiered {
type: tier
sql: ${TABLE}.number_of_events ;;
}
dimension: bounce {
type: yesno
sql: ${TABLE}.number_of_events = 1 ;;
}
dimension: distinct_pages_viewed {
type: int
sql: ${TABLE}.distinct_pages_viewed ;;
}
dimension: distinct_pages_viewed_tiered {
type: tier
sql: ${distinct_pages_viewed} ;;
}
dimension: number_of_sessions {
type: int
sql: ${TABLE}.number_of_sessions ;;
}
dimension: number_of_sessions_tiered {
type: tier
sql: ${number_of_sessions} ;;
}
dimension: session_stream {
sql: ${user_id} ;;
}
dimension: event_stream {
sql: ${user_id} ;;
}
dimension: landing_page_url_host {
sql: ${TABLE}.page_urlhost ;;
}
dimension: landing_page_url_path {
sql: ${TABLE}.page_urlpath ;;
}
dimension: landing_page_url {
sql: ${TABLE}.page_urlhost || ${TABLE}.page_urlpath ;;
}
dimension: referer_medium {
}
dimension: referer_source {
sql: ${TABLE}.refr_source ;;
}
dimension: referer_term {
sql: ${TABLE}.refr_term ;;
}
dimension: referer_url_host {
sql: ${TABLE}.refr_urlhost ;;
}
dimension: referer_url_path {
sql: ${TABLE}.refr_urlpath ;;
}
dimension: campaign_medium {
sql: ${TABLE}.mkt_medium ;;
}
dimension: campaign_source {
sql: ${TABLE}.mkt_source ;;
}
dimension: campaign_term {
sql: ${TABLE}.mkt_term ;;
}
dimension: campaign_name {
sql: ${TABLE}.mkt_campaign ;;
}
dimension_group: first_touch {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.first_touch ;;
}
measure: count {
type: count_distinct
sql: ${user_id} ;;
}
measure: bounced_visitor_count {
type: count_distinct
sql: ${user_id} ;;
}
measure: bounce_rate {
type: number
sql: ${bounced_visitor_count}/NULLIF(${count},0)::REAL ;;
}
measure: events_count {
type: sum
sql: ${TABLE}.number_of_events ;;
}
measure: events_per_visitor {
type: number
sql: ${events_count}/NULLIF(${count},0)::REAL ;;
}
measure: sessions_count {
type: sum
sql: ${TABLE}.number_of_sessions ;;
}
measure: sessions_per_visitor {
type: number
sql: ${sessions_count}/NULLIF(${count},0)::REAL ;;
}
measure: landing_page_count {
type: count_distinct
sql: ${landing_page_url} ;;
}
measure: campaign_medium_count {
type: count_distinct
sql: ${campaign_medium} ;;
}
measure: campaign_source_count {
type: count_distinct
sql: ${campaign_source} ;;
}
measure: campaign_term_count {
type: count_distinct
sql: ${campaign_term} ;;
}
measure: campaign_count {
type: count_distinct
sql: ${campaign_name} ;;
}
measure: referer_medium_count {
type: count_distinct
sql: ${referer_medium} ;;
}
measure: referer_source_count {
type: count_distinct
sql: ${referer_source} ;;
}
measure: referer_term_count {
type: count_distinct
sql: ${referer_term} ;;
}
}
visitors.view.lookml · 140 lines
inferred
- view: visitors
derived_table:
sql: SELECT
v.app_id,
v.domain_userid,
v.first_touch,
v.last_touch,
v.number_of_events,
v.distinct_pages_viewed,
v.number_of_sessions,
l.page_urlhost,
l.page_urlpath,
s.mkt_source,
s.mkt_medium,
s.mkt_campaign,
s.mkt_term,
s.refr_source,
s.refr_medium,
s.refr_term,
s.refr_urlhost,
s.refr_urlpath
FROM
${TABLE}.visitors_basic AS v
LEFT JOIN ${TABLE}.sessions_landing_page AS l
ON v.domain_userid = l.domain_userid
AND l.domain_sessionidx = 1
LEFT JOIN ${TABLE}.sessions_source AS s
ON v.domain_userid = s.domain_userid
AND s.domain_sessionidx = 1
fields:
- dimension: app_id
sql: ${TABLE}.app_id
- dimension: user_id
sql: ${TABLE}.domain_userid
- dimension: first_touch
sql: ${TABLE}.first_touch
- dimension: last_touch
type: time
sql: ${TABLE}.last_touch
- dimension: events_during_lifetime
type: int
sql: ${TABLE}.number_of_events
- dimension: events_during_lifetime_tiered
type: tier
sql: ${TABLE}.number_of_events
- dimension: bounce
type: yesno
sql: ${TABLE}.number_of_events = 1
- dimension: distinct_pages_viewed
type: int
sql: ${TABLE}.distinct_pages_viewed
- dimension: distinct_pages_viewed_tiered
type: tier
sql: ${distinct_pages_viewed}
- dimension: number_of_sessions
type: int
sql: ${TABLE}.number_of_sessions
- dimension: number_of_sessions_tiered
type: tier
sql: ${number_of_sessions}
- dimension: session_stream
sql: ${user_id}
- dimension: event_stream
sql: ${user_id}
- dimension: landing_page_url_host
sql: ${TABLE}.page_urlhost
- dimension: landing_page_url_path
sql: ${TABLE}.page_urlpath
- dimension: landing_page_url
sql: ${TABLE}.page_urlhost || ${TABLE}.page_urlpath
- dimension: referer_medium
- dimension: referer_source
sql: ${TABLE}.refr_source
- dimension: referer_term
sql: ${TABLE}.refr_term
- dimension: referer_url_host
sql: ${TABLE}.refr_urlhost
- dimension: referer_url_path
sql: ${TABLE}.refr_urlpath
- dimension: campaign_medium
sql: ${TABLE}.mkt_medium
- dimension: campaign_source
sql: ${TABLE}.mkt_source
- dimension: campaign_term
sql: ${TABLE}.mkt_term
- dimension: campaign_name
sql: ${TABLE}.mkt_campaign
- dimension_group: first_touch
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.first_touch
- measure: count
type: count_distinct
sql: ${user_id}
- measure: bounced_visitor_count
type: count_distinct
sql: ${user_id}
- measure: bounce_rate
type: number
sql: ${bounced_visitor_count}/NULLIF(${count},0)::REAL
- measure: events_count
type: sum
sql: ${TABLE}.number_of_events
- measure: events_per_visitor
type: number
sql: ${events_count}/NULLIF(${count},0)::REAL
- measure: sessions_count
type: sum
sql: ${TABLE}.number_of_sessions
- measure: sessions_per_visitor
type: number
sql: ${sessions_count}/NULLIF(${count},0)::REAL
- measure: landing_page_count
type: count_distinct
sql: ${landing_page_url}
- measure: campaign_medium_count
type: count_distinct
sql: ${campaign_medium}
- measure: campaign_source_count
type: count_distinct
sql: ${campaign_source}
- measure: campaign_term_count
type: count_distinct
sql: ${campaign_term}
- measure: campaign_count
type: count_distinct
sql: ${campaign_name}
- measure: referer_medium_count
type: count_distinct
sql: ${referer_medium}
- measure: referer_source_count
type: count_distinct
sql: ${referer_source}
- measure: referer_term_count
type: count_distinct
sql: ${referer_term}
Contents
- visitors.sql
- visitors.sql
- visitors.view.lkml
- visitors.view.lookml