SQL Saas crm life sciences

User Events Facts

User Events Facts model for saas crm life sciences.

source-preserved

Blocks

user_events_facts.sql · 69 lines
inferred
{{ config(materialized='view') }}

SELECT
 mixpanel_id
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:localSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS local_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:ConnectSalesforce'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS connect_salesforce
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:emailSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS email_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:usernameWait'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS username_wait
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:enterPassword'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS enter_password
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:sourcesSyncing'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS source_syncing
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:day_of_weeknloadDB'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS day_of_weeknload_db
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:welcome'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS welcome
 , MIN(
     CASE
       WHEN e.event = 'getStarted:tapped'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS get_started_tapped
FROM events AS e
GROUP BY 1

Assumptions

  • materialized='view' is the default; no persist hint found.
user_events_facts.sql · 67 lines
source-preserved validation: parses
SELECT
 mixpanel_id
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:localSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS local_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:ConnectSalesforce'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS connect_salesforce
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:emailSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS email_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:usernameWait'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS username_wait
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:enterPassword'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS enter_password
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:sourcesSyncing'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS source_syncing
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:day_of_weeknloadDB'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS day_of_weeknload_db
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:welcome'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS welcome
 , MIN(
     CASE
       WHEN e.event = 'getStarted:tapped'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS get_started_tapped
FROM events AS e
GROUP BY 1
user_events_facts.view.lkml · 183 lines
inferred
view: user_events_facts {
  derived_table: {
    sql: SELECT
 mixpanel_id
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:localSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS local_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:ConnectSalesforce'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS connect_salesforce
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:emailSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS email_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:usernameWait'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS username_wait
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:enterPassword'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS enter_password
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:sourcesSyncing'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS source_syncing
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:day_of_weeknloadDB'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS day_of_weeknload_db
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:welcome'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS welcome
 , MIN(
     CASE
       WHEN e.event = 'getStarted:tapped'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS get_started_tapped
FROM events AS e
GROUP BY 1 ;;
  }

  dimension_group: local_setup {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.local_setup ;;
  }

  dimension_group: connect_salesforce {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.connect_salesforce ;;
  }

  dimension_group: email_setup {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.email_setup ;;
  }

  dimension_group: username_wait {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.username_wait ;;
  }

  dimension_group: enter_password {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.enter_password ;;
  }

  dimension_group: source_syncing {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.source_syncing ;;
  }

  dimension_group: day_of_weeknload_db {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.day_of_weeknload_db ;;
  }

  dimension_group: welcome {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.welcome ;;
  }

  dimension_group: get_started_tapped {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.get_started_tapped ;;
  }

  measure: count {
    type: count
  }

  measure: local_setup_count {
    label: "Setup Funnel: Step 1 Local Setup"
    type: count
    filters: [local_setup: "True"]
  }

  measure: connect_salesforce_count {
    label: "Setup Funnel: Step 2 Salesforce Connected"
    type: count
    filters: [connect_salesforce: "True"]
  }

  measure: email_setup_count {
    label: "Setup Funnel: Step 3 Local Setup"
    type: count
    filters: [email_setup: "True"]
  }

  measure: username_wait_count {
    label: "Setup Funnel: Step 4 Username Wait"
    type: count
    filters: [username_wait: "True"]
  }

  measure: enter_password_count {
    label: "Setup Funnel: Step 5 Entered Password"
    type: count
    filters: [enter_password: "True"]
  }

  measure: source_syncing_count {
    label: "Setup Funnel: Step 6 Source Synced"
    type: count
    filters: [source_syncing: "True"]
  }

  measure: day_of_weeknload_db_count {
    label: "Setup Funnel: Step 7 day_of_weeknloaded DB"
    type: count
    filters: [day_of_weeknload_db: "True"]
  }

  measure: welcome_count {
    label: "Welcome Funnel: Step 1 Welcome"
    type: count
    filters: [welcome: "True"]
  }

  measure: get_started_count {
    label: "Welcome Funnel: Step 2 Get Started Tapped"
    type: count
    filters: [get_started_tapped: "True"]
  }
}
user_events_facts.view.lookml · 198 lines
source-preserved
- view: user_events_facts
  derived_table:
    sql: SELECT
 mixpanel_id
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:localSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS local_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:ConnectSalesforce'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS connect_salesforce
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:emailSetup'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS email_setup
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:usernameWait'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS username_wait
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:enterPassword'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS enter_password
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:sourcesSyncing'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS source_syncing
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:onboarding:day_of_weeknloadDB'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS day_of_weeknload_db
 , MIN(
     CASE
       WHEN e.event = 'viewScreen:welcome'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS welcome
 , MIN(
     CASE
       WHEN e.event = 'getStarted:tapped'
       THEN e.occurred_at
       ELSE NULL
     END
   ) AS get_started_tapped
FROM events AS e
GROUP BY 1
  fields:
  - dimension_group: local_setup
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.local_setup
  - dimension_group: connect_salesforce
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.connect_salesforce
  - dimension_group: email_setup
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.email_setup
  - dimension_group: username_wait
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.username_wait
  - dimension_group: enter_password
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.enter_password
  - dimension_group: source_syncing
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.source_syncing
  - dimension_group: day_of_weeknload_db
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.day_of_weeknload_db
  - dimension_group: welcome
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.welcome
  - dimension_group: get_started_tapped
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.get_started_tapped
  - measure: count
    type: count
  - measure: local_setup_count
    type: count
    label: 'Setup Funnel: Step 1 Local Setup'
    filters:
    - local_setup: True
  - measure: connect_salesforce_count
    type: count
    label: 'Setup Funnel: Step 2 Salesforce Connected'
    filters:
    - connect_salesforce: True
  - measure: email_setup_count
    type: count
    label: 'Setup Funnel: Step 3 Local Setup'
    filters:
    - email_setup: True
  - measure: username_wait_count
    type: count
    label: 'Setup Funnel: Step 4 Username Wait'
    filters:
    - username_wait: True
  - measure: enter_password_count
    type: count
    label: 'Setup Funnel: Step 5 Entered Password'
    filters:
    - enter_password: True
  - measure: source_syncing_count
    type: count
    label: 'Setup Funnel: Step 6 Source Synced'
    filters:
    - source_syncing: True
  - measure: day_of_weeknload_db_count
    type: count
    label: 'Setup Funnel: Step 7 day_of_weeknloaded DB'
    filters:
    - day_of_weeknload_db: True
  - measure: welcome_count
    type: count
    label: 'Welcome Funnel: Step 1 Welcome'
    filters:
    - welcome: True
  - measure: get_started_count
    type: count
    label: 'Welcome Funnel: Step 2 Get Started Tapped'
    filters:
    - get_started_tapped: True

Contents

  • user_events_facts.sql
  • user_events_facts.sql
  • user_events_facts.view.lkml
  • user_events_facts.view.lookml