SQL Insurance vehicle

Visitors

Visitors model for insurance vehicle.

source-preserved

Blocks

visitors.sql · 77 lines
inferred
-- models/visitors.sql
{{ config(materialized='view') }}

SELECT
  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,
  l.page_title,
  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,
  c.mkt_medium AS first_campaign_touch_medium,
  c.mkt_source AS first_campaign_touch_source,
  c.mkt_term AS first_campaign_touch_term,
  c.mkt_campaign AS first_campaign_touch_campaign,
  c.mkt_content AS first_campaign_touch_content
FROM
  {{ ref('visitors_basic') }} AS v
  LEFT JOIN {{ ref('landing_page_sessions') }} AS l
  ON v.domain_userid = l.domain_userid
  AND l.domain_sessionidx = 1
  LEFT JOIN {{ ref('source_sessions') }} AS s
  ON v.domain_userid = s.domain_userid
  AND s.domain_sessionidx = 1
  LEFT JOIN {{ ref('campaign_first_touches') }} AS c
  ON v.domain_userid = c.domain_userid

# models/schema.yml
version: 2

models:
  - name: visitors
    columns:
      - name: user_id
        tests:
          - unique
          - not_null
      - 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_title
      - 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
      - name: first_campaign_touch_medium
      - name: first_campaign_touch_source
      - name: first_campaign_touch_term
      - name: first_campaign_touch_campaign
      - name: first_campaign_touch_content

Assumptions

  • Each ${view.SQL_TABLE_NAME} was mapped to {{ ref('view') }}; confirm a dbt model exists for each referenced view.
  • 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 · 34 lines
source-preserved validation: not checked
SELECT
  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,
  l.page_title,
  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,
  c.mkt_medium AS first_campaign_touch_medium,
  c.mkt_source AS first_campaign_touch_source,
  c.mkt_term AS first_campaign_touch_term,
  c.mkt_campaign AS first_campaign_touch_campaign,
  c.mkt_content AS first_campaign_touch_content
FROM
  ${visitors_basic.SQL_TABLE_NAME} AS v
  LEFT JOIN ${landing_page_sessions.SQL_TABLE_NAME} AS l
  ON v.domain_userid = l.domain_userid
  AND l.domain_sessionidx = 1
  LEFT JOIN ${source_sessions.SQL_TABLE_NAME} AS s
  ON v.domain_userid = s.domain_userid
  AND s.domain_sessionidx = 1
  LEFT JOIN ${campaign_first_touches.SQL_TABLE_NAME} AS c
  ON v.domain_userid = c.domain_userid
visitors.view.lkml · 247 lines
inferred
view: visitors {
  derived_table: {
    sql: SELECT
  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,
  l.page_title,
  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,
  c.mkt_medium AS first_campaign_touch_medium,
  c.mkt_source AS first_campaign_touch_source,
  c.mkt_term AS first_campaign_touch_term,
  c.mkt_campaign AS first_campaign_touch_campaign,
  c.mkt_content AS first_campaign_touch_content
FROM
  ${visitors_basic.SQL_TABLE_NAME} AS v
  LEFT JOIN ${landing_page_sessions.SQL_TABLE_NAME} AS l
  ON v.domain_userid = l.domain_userid
  AND l.domain_sessionidx = 1
  LEFT JOIN ${source_sessions.SQL_TABLE_NAME} AS s
  ON v.domain_userid = s.domain_userid
  AND s.domain_sessionidx = 1
  LEFT JOIN ${campaign_first_touches.SQL_TABLE_NAME} AS c
  ON v.domain_userid = c.domain_userid ;;
  }

  dimension: user_id {
    primary_key: yes
    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_title {
    sql: ${TABLE}.page_title ;;
  }

  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: first_campaign_touch_medium {
    sql: ${TABLE}.first_campaign_touch_medium ;;
  }

  dimension: first_campaign_touch_source {
    sql: ${TABLE}.first_campaign_touch_source ;;
  }

  dimension: first_campaign_touch_term {
    sql: ${TABLE}.first_campaign_touch_term ;;
  }

  dimension: first_campaign_touch_campaign {
    sql: ${TABLE}.first_campaign_touch_campaign ;;
  }

  dimension: first_campaign_touch_content {
    sql: ${TABLE}.first_campaign_touch_content ;;
  }

  dimension_group: first_touch {
    type: time
    timeframes: [time, hour, 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 · 159 lines
source-preserved
- view: visitors
  derived_table:
    sql: SELECT
  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,
  l.page_title,
  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,
  c.mkt_medium AS first_campaign_touch_medium,
  c.mkt_source AS first_campaign_touch_source,
  c.mkt_term AS first_campaign_touch_term,
  c.mkt_campaign AS first_campaign_touch_campaign,
  c.mkt_content AS first_campaign_touch_content
FROM
  ${visitors_basic.SQL_TABLE_NAME} AS v
  LEFT JOIN ${landing_page_sessions.SQL_TABLE_NAME} AS l
  ON v.domain_userid = l.domain_userid
  AND l.domain_sessionidx = 1
  LEFT JOIN ${source_sessions.SQL_TABLE_NAME} AS s
  ON v.domain_userid = s.domain_userid
  AND s.domain_sessionidx = 1
  LEFT JOIN ${campaign_first_touches.SQL_TABLE_NAME} AS c
  ON v.domain_userid = c.domain_userid
  fields:
  - dimension: user_id
    primary_key: true
    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_title
    sql: ${TABLE}.page_title
  - 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: first_campaign_touch_medium
    sql: ${TABLE}.first_campaign_touch_medium
  - dimension: first_campaign_touch_source
    sql: ${TABLE}.first_campaign_touch_source
  - dimension: first_campaign_touch_term
    sql: ${TABLE}.first_campaign_touch_term
  - dimension: first_campaign_touch_campaign
    sql: ${TABLE}.first_campaign_touch_campaign
  - dimension: first_campaign_touch_content
    sql: ${TABLE}.first_campaign_touch_content
  - dimension_group: first_touch
    type: time
    timeframes:
    - time
    - hour
    - 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