SQL Telemedicine service

Member Acquisition Source

Member Acquisition Source model for telemedicine service.

source-preserved

Blocks

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

select member_id, acquisition_source_type, acquisition_source
from
(select member_id, acquisition_source_type, acquisition_source, row_number() over (partition by member_id order by acq_seq asc) as rn
  from
  (
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mc.name acquisition_source, 1 acq_seq
    FROM members_genericmember mm
    inner join members_company_members mcm on mcm.member_id = mm.id
    inner join members_company mc on mc.id = mcm.company_id
    UNION
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mp.name acquisition_source, 2 acq_seq
    FROM members_genericmember mm
    inner join members_medicalpractice_members mmpm on mmpm.member_id = mm.id
    inner join members_medicalpractice mp on mp.id = mmpm.medicalpractice_id
    UNION
    SELECT mm.id member_id, 'Media Source' acquisition_source_type, aae.media_source acquisition_source, 3 acq_seq
    FROM members_genericmember mm
    inner join marketing_event_data aae on aae.member_id = mm.id and aae.event_name = 'registration'
    UNION
    SELECT mm.id member_id, 'Campaigns' acquisition_source_type, cca.name acquisition_source, 4 acq_seq
    FROM members_genericmember mm
    inner join coupons_membercoupon cm on cm.member_id = mm.id
    inner join coupons_coupon cc on cc.id = cm.coupon_id
    inner join coupons_campaign cca on cca.id = cc.campaign_id
    UNION
    SELECT mm.id member_id, 'Promotion' acquisition_source_type, p.name acquisition_source, 5 acq_seq
    FROM members_genericmember mm
    inner join users_user_data du on du.id = mm.user_id
    join calls_promotion p
      on p.start_datetime < du.date_joined AND
          (p.end_datetime > du.date_joined or p.end_datetime is NULL)
    UNION
    /*SELECT mm.id member_id, 'TV Spots' acquisition_source_type, tte.title acquisition_source, 6 acq_seq
    FROM members_genericmember mm
    inner join tveyes_tveyes_event_signups_driven ttesd on ttesd.member_id = mm.id
    inner join tveyes_tveyes_event tte on tte.id = ttesd.tveyes_event_id
    UNION */
    /* SELECT mm.id member_id, 'Organic' acquisition_source_type, ads.code acquisition_source, 7 acq_seq
    FROM members_genericmember mm
    left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) <> '' and ads.code is not null
    UNION */
    SELECT mm.id member_id, 'Organic' acquisition_source_type, 'Organic' acquisition_source, 8 acq_seq
    FROM members_genericmember mm
    /* left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) = '' or ads.code is null*/
  ) x
) y
where y.rn = 1

# models/schema.yml
version: 2

models:
  - name: member_acquisition_source
    columns:
      - name: member_id
        tests:
          - unique
          - not_null
      - name: acquisition_source_type
      - name: acquisition_source
      - name: acquisition_source_and_type

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.
member_acquisition_source.sql · 55 lines
source-preserved validation: parses
select member_id, acquisition_source_type, acquisition_source
from
(select member_id, acquisition_source_type, acquisition_source, row_number() over (partition by member_id order by acq_seq asc) as rn
  from
  (
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mc.name acquisition_source, 1 acq_seq
    FROM members_genericmember mm
    inner join members_company_members mcm on mcm.member_id = mm.id
    inner join members_company mc on mc.id = mcm.company_id
    UNION
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mp.name acquisition_source, 2 acq_seq
    FROM members_genericmember mm
    inner join members_medicalpractice_members mmpm on mmpm.member_id = mm.id
    inner join members_medicalpractice mp on mp.id = mmpm.medicalpractice_id
    UNION
    SELECT mm.id member_id, 'Media Source' acquisition_source_type, aae.media_source acquisition_source, 3 acq_seq
    FROM members_genericmember mm
    inner join marketing_event_data aae on aae.member_id = mm.id and aae.event_name = 'registration'
    UNION
    SELECT mm.id member_id, 'Campaigns' acquisition_source_type, cca.name acquisition_source, 4 acq_seq
    FROM members_genericmember mm
    inner join coupons_membercoupon cm on cm.member_id = mm.id
    inner join coupons_coupon cc on cc.id = cm.coupon_id
    inner join coupons_campaign cca on cca.id = cc.campaign_id
    UNION
    SELECT mm.id member_id, 'Promotion' acquisition_source_type, p.name acquisition_source, 5 acq_seq
    FROM members_genericmember mm
    inner join users_user_data du on du.id = mm.user_id
    join calls_promotion p
      on p.start_datetime < du.date_joined AND
          (p.end_datetime > du.date_joined or p.end_datetime is NULL)
    UNION
    /*SELECT mm.id member_id, 'TV Spots' acquisition_source_type, tte.title acquisition_source, 6 acq_seq
    FROM members_genericmember mm
    inner join tveyes_tveyes_event_signups_driven ttesd on ttesd.member_id = mm.id
    inner join tveyes_tveyes_event tte on tte.id = ttesd.tveyes_event_id
    UNION */
    /* SELECT mm.id member_id, 'Organic' acquisition_source_type, ads.code acquisition_source, 7 acq_seq
    FROM members_genericmember mm
    left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) <> '' and ads.code is not null
    UNION */
    SELECT mm.id member_id, 'Organic' acquisition_source_type, 'Organic' acquisition_source, 8 acq_seq
    FROM members_genericmember mm
    /* left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) = '' or ads.code is null*/
  ) x
) y
where y.rn = 1
member_acquisition_source.view.lkml · 82 lines
inferred
view: member_acquisition_source {
  derived_table: {
    sql: select member_id, acquisition_source_type, acquisition_source
from
(select member_id, acquisition_source_type, acquisition_source, row_number() over (partition by member_id order by acq_seq asc) as rn
  from
  (
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mc.name acquisition_source, 1 acq_seq
    FROM members_genericmember mm
    inner join members_company_members mcm on mcm.member_id = mm.id
    inner join members_company mc on mc.id = mcm.company_id
    UNION
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mp.name acquisition_source, 2 acq_seq
    FROM members_genericmember mm
    inner join members_medicalpractice_members mmpm on mmpm.member_id = mm.id
    inner join members_medicalpractice mp on mp.id = mmpm.medicalpractice_id
    UNION
    SELECT mm.id member_id, 'Media Source' acquisition_source_type, aae.media_source acquisition_source, 3 acq_seq
    FROM members_genericmember mm
    inner join marketing_event_data aae on aae.member_id = mm.id and aae.event_name = 'registration'
    UNION
    SELECT mm.id member_id, 'Campaigns' acquisition_source_type, cca.name acquisition_source, 4 acq_seq
    FROM members_genericmember mm
    inner join coupons_membercoupon cm on cm.member_id = mm.id
    inner join coupons_coupon cc on cc.id = cm.coupon_id
    inner join coupons_campaign cca on cca.id = cc.campaign_id
    UNION
    SELECT mm.id member_id, 'Promotion' acquisition_source_type, p.name acquisition_source, 5 acq_seq
    FROM members_genericmember mm
    inner join users_user_data du on du.id = mm.user_id
    join calls_promotion p
      on p.start_datetime < du.date_joined AND
          (p.end_datetime > du.date_joined or p.end_datetime is NULL)
    UNION
    /*SELECT mm.id member_id, 'TV Spots' acquisition_source_type, tte.title acquisition_source, 6 acq_seq
    FROM members_genericmember mm
    inner join tveyes_tveyes_event_signups_driven ttesd on ttesd.member_id = mm.id
    inner join tveyes_tveyes_event tte on tte.id = ttesd.tveyes_event_id
    UNION */
    /* SELECT mm.id member_id, 'Organic' acquisition_source_type, ads.code acquisition_source, 7 acq_seq
    FROM members_genericmember mm
    left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) <> '' and ads.code is not null
    UNION */
    SELECT mm.id member_id, 'Organic' acquisition_source_type, 'Organic' acquisition_source, 8 acq_seq
    FROM members_genericmember mm
    /* left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) = '' or ads.code is null*/
  ) x
) y
where y.rn = 1 ;;
  }

  dimension: member_id {
    primary_key: yes
    sql: ${TABLE}.member_id ;;
  }

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

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

  dimension: acquisition_source_and_type {
    sql: ${acquisition_source_type} || ' - ' || COALESCE(${acquisition_source}, '') ;;
  }

  measure: acquisition_source_count {
    type: count_distinct
    drill_fields: [acquisition_source_set*]
    sql: ${acquisition_source} ;;
  }
}
member_acquisition_source.view.lookml · 72 lines
source-preserved
- view: member_acquisition_source
  derived_table:
    sql: select member_id, acquisition_source_type, acquisition_source
from
(select member_id, acquisition_source_type, acquisition_source, row_number() over (partition by member_id order by acq_seq asc) as rn
  from
  (
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mc.name acquisition_source, 1 acq_seq
    FROM members_genericmember mm
    inner join members_company_members mcm on mcm.member_id = mm.id
    inner join members_company mc on mc.id = mcm.company_id
    UNION
    SELECT mm.id member_id, 'Organizations' acquisition_source_type, mp.name acquisition_source, 2 acq_seq
    FROM members_genericmember mm
    inner join members_medicalpractice_members mmpm on mmpm.member_id = mm.id
    inner join members_medicalpractice mp on mp.id = mmpm.medicalpractice_id
    UNION
    SELECT mm.id member_id, 'Media Source' acquisition_source_type, aae.media_source acquisition_source, 3 acq_seq
    FROM members_genericmember mm
    inner join marketing_event_data aae on aae.member_id = mm.id and aae.event_name = 'registration'
    UNION
    SELECT mm.id member_id, 'Campaigns' acquisition_source_type, cca.name acquisition_source, 4 acq_seq
    FROM members_genericmember mm
    inner join coupons_membercoupon cm on cm.member_id = mm.id
    inner join coupons_coupon cc on cc.id = cm.coupon_id
    inner join coupons_campaign cca on cca.id = cc.campaign_id
    UNION
    SELECT mm.id member_id, 'Promotion' acquisition_source_type, p.name acquisition_source, 5 acq_seq
    FROM members_genericmember mm
    inner join users_user_data du on du.id = mm.user_id
    join calls_promotion p
      on p.start_datetime < du.date_joined AND
          (p.end_datetime > du.date_joined or p.end_datetime is NULL)
    UNION
    /*SELECT mm.id member_id, 'TV Spots' acquisition_source_type, tte.title acquisition_source, 6 acq_seq
    FROM members_genericmember mm
    inner join tveyes_tveyes_event_signups_driven ttesd on ttesd.member_id = mm.id
    inner join tveyes_tveyes_event tte on tte.id = ttesd.tveyes_event_id
    UNION */
    /* SELECT mm.id member_id, 'Organic' acquisition_source_type, ads.code acquisition_source, 7 acq_seq
    FROM members_genericmember mm
    left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) <> '' and ads.code is not null
    UNION */
    SELECT mm.id member_id, 'Organic' acquisition_source_type, 'Organic' acquisition_source, 8 acq_seq
    FROM members_genericmember mm
    /* left join contact_info_useraddress ua on ua.object_id = mm.id
    left join address_address aa on aa.id = ua.address_id
    left join address_locality al on al.id = aa.locality_id
    left join address_state ads on ads.id = al.state_id
    where ltrim(rtrim(ads.code)) = '' or ads.code is null*/
  ) x
) y
where y.rn = 1
  fields:
  - dimension: member_id
    primary_key: true
    sql: ${TABLE}.member_id
  - dimension: acquisition_source_type
    sql: ${TABLE}.acquisition_source_type
  - dimension: acquisition_source
    sql: ${TABLE}.acquisition_source
  - dimension: acquisition_source_and_type
    sql: ${acquisition_source_type} || ' - ' || COALESCE(${acquisition_source}, '')
  - measure: acquisition_source_count
    type: count_distinct
    drill_fields:
    - acquisition_source_set*
    sql: ${acquisition_source}

Contents

  • member_acquisition_source.sql
  • member_acquisition_source.sql
  • member_acquisition_source.view.lkml
  • member_acquisition_source.view.lookml