SQL Insurance vehicle

Campaign Touches

Campaign Touches model for insurance vehicle.

source-preserved

Blocks

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

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  mkt_medium,
  mkt_source,
  mkt_term,
  mkt_campaign,
  mkt_content
FROM events_data
WHERE mkt_medium IS NOT NULL
AND page_urlhost = '<% domain_placeholder %>' -- we are only interested in marketing touches to rentalcover.com, not ads that drive users to partner websites

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'partner partner_company_logo' AS mkt_medium,
  page_urlhost AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE se_category = 'partner_company_logo'
AND se_action = 'impression'

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'email' AS mkt_medium,
  NULL AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE page_title='<% email_template_placeholder %>'

# models/schema.yml
version: 2

models:
  - name: campaign_touches
    columns:
      - name: user_id
      - name: session_index
      - name: session_id
      - name: timestamp
      - name: mkt_medium
      - name: mkt_source
      - name: mkt_term
      - name: mkt_campaign
      - name: mkt_content

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.
campaign_touches.sql · 44 lines
source-preserved validation: not checked
SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  mkt_medium,
  mkt_source,
  mkt_term,
  mkt_campaign,
  mkt_content
FROM events_data
WHERE mkt_medium IS NOT NULL
AND page_urlhost = '<% domain_placeholder %>' -- we are only interested in marketing touches to rentalcover.com, not ads that drive users to partner websites

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'partner partner_company_logo' AS mkt_medium,
  page_urlhost AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE se_category = 'partner_company_logo'
AND se_action = 'impression'

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'email' AS mkt_medium,
  NULL AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE page_title='<% email_template_placeholder %>'
campaign_touches.view.lkml · 100 lines
inferred
view: campaign_touches {
  derived_table: {
    sql: SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  mkt_medium,
  mkt_source,
  mkt_term,
  mkt_campaign,
  mkt_content
FROM events_data
WHERE mkt_medium IS NOT NULL
AND page_urlhost = '<% domain_placeholder %>' -- we are only interested in marketing touches to rentalcover.com, not ads that drive users to partner websites

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'partner partner_company_logo' AS mkt_medium,
  page_urlhost AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE se_category = 'partner_company_logo'
AND se_action = 'impression'

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'email' AS mkt_medium,
  NULL AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE page_title='<% email_template_placeholder %>' ;;
  }

  dimension: user_id {
    sql: ${TABLE}.domain_userid ;;
  }

  dimension: session_index {
    type: int
    sql: ${TABLE}.domain_sessionidx ;;
  }

  dimension: session_id {
    sql: ${TABLE}.domain_userid || '-' || ${TABLE}.domain_sessionidx ;;
  }

  dimension: timestamp {
    sql: ${TABLE}.collector_tstamp ;;
  }

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

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

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

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

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

  dimension_group: timestamp {
    type: time
    timeframes: [time, hour, date, week, month]
    sql: ${TABLE}.collector_tstamp ;;
  }

  measure: count_distinct_users {
    type: count_distinct
    sql: ${user_id} ;;
  }

  measure: count {
    type: count
  }
}
campaign_touches.view.lookml · 80 lines
source-preserved
- view: campaign_touches
  derived_table:
    sql: SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  mkt_medium,
  mkt_source,
  mkt_term,
  mkt_campaign,
  mkt_content
FROM events_data
WHERE mkt_medium IS NOT NULL
AND page_urlhost = '<% domain_placeholder %>' -- we are only interested in marketing touches to rentalcover.com, not ads that drive users to partner websites

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'partner partner_company_logo' AS mkt_medium,
  page_urlhost AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE se_category = 'partner_company_logo'
AND se_action = 'impression'

UNION ALL

SELECT
  domain_userid,
  domain_sessionidx,
  collector_tstamp,
  event_id,
  'email' AS mkt_medium,
  NULL AS mkt_source,
  NULL AS mkt_term,
  NULL AS mkt_campaign,
  NULL AS mkt_content
FROM events_data
WHERE page_title='<% email_template_placeholder %>'
  fields:
  - dimension: user_id
    sql: ${TABLE}.domain_userid
  - dimension: session_index
    type: int
    sql: ${TABLE}.domain_sessionidx
  - dimension: session_id
    sql: ${TABLE}.domain_userid || '-' || ${TABLE}.domain_sessionidx
  - dimension: timestamp
    sql: ${TABLE}.collector_tstamp
  - dimension: mkt_medium
    sql: ${TABLE}.mkt_medium
  - dimension: mkt_source
    sql: ${TABLE}.mkt_source
  - dimension: mkt_term
    sql: ${TABLE}.mkt_term
  - dimension: mkt_campaign
    sql: ${TABLE}.mkt_campaign
  - dimension: mkt_content
    sql: ${TABLE}.mkt_content
  - dimension_group: timestamp
    type: time
    timeframes:
    - time
    - hour
    - date
    - week
    - month
    sql: ${TABLE}.collector_tstamp
  - measure: count_distinct_users
    type: count_distinct
    sql: ${user_id}
  - measure: count
    type: count

Contents

  • campaign_touches.sql
  • campaign_touches.sql
  • campaign_touches.view.lkml
  • campaign_touches.view.lookml