SQL Delivery app

Users Active Facts Daily

Users Active Facts Daily model for delivery app.

source-preserved

Blocks

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

SELECT LOWER(TRIM(source)) AS source,
        LOWER(TRIM(medium)) AS medium,
        --LOWER(TRIM(campaign)) AS campaign, --removing campaign for now
        DATE(active_date) AS active_date,
        COUNT(1) AS active_count,
        SUM(CASE WHEN promotion_spend is NULL THEN 0
            ELSE 1 END) AS promotion_count,
        sum(ltv) as summed_ltv,
        sum(smv) as summed_smv,
        sum(promotion_spend) as summed_promotion_spend
FROM analytics_users_signup_facts
where active_date is not null
GROUP BY 1,2,3

# models/schema.yml
version: 2

models:
  - name: users_active_facts_daily
    columns:
      - name: source
        tests:
          - unique
          - not_null
      - name: medium
      - name: facility
      - name: source_roll_up
      - name: active
      - name: daily_active_count
      - name: daily_promotion_count
      - name: summed_ltv
      - name: summed_smv
      - name: summed_promotion_spend
      - name: dummy_pivot

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.
users_active_facts_daily.sql · 13 lines
source-preserved validation: parses
SELECT LOWER(TRIM(source)) AS source,
        LOWER(TRIM(medium)) AS medium,
        --LOWER(TRIM(campaign)) AS campaign, --removing campaign for now
        DATE(active_date) AS active_date,
        COUNT(1) AS active_count,
        SUM(CASE WHEN promotion_spend is NULL THEN 0
            ELSE 1 END) AS promotion_count,
        sum(ltv) as summed_ltv,
        sum(smv) as summed_smv,
        sum(promotion_spend) as summed_promotion_spend
FROM analytics_users_signup_facts
where active_date is not null
GROUP BY 1,2,3
users_active_facts_daily.view.lkml · 157 lines
inferred
view: users_active_facts_daily {
  derived_table: {
    sql: SELECT LOWER(TRIM(source)) AS source,
        LOWER(TRIM(medium)) AS medium,
        --LOWER(TRIM(campaign)) AS campaign, --removing campaign for now
        DATE(active_date) AS active_date,
        COUNT(1) AS active_count,
        SUM(CASE WHEN promotion_spend is NULL THEN 0
            ELSE 1 END) AS promotion_count,
        sum(ltv) as summed_ltv,
        sum(smv) as summed_smv,
        sum(promotion_spend) as summed_promotion_spend
FROM analytics_users_signup_facts
where active_date is not null
GROUP BY 1,2,3 ;;
  }

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

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

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

  dimension: source_roll_up {
    sql: CASE WHEN ${medium} = 'email' AND lower(${source}) similar to 'invit%|market%' THEN ${source}
  WHEN ${medium} = 'email' THEN ''
WHEN ${medium} ilike 'referral' then ''
WHEN ${medium} = 'directmail' AND ${source} IN ('belardi', 'handybook') THEN lower(${source})
WHEN ${medium} = 'directmail' THEN 'other'
WHEN ${medium} = 'video-paid' AND ${source} IN ('facebook', 'youtube', 'hulu', 'virool') THEN lower(${source})
WHEN ${medium} = 'video-paid' THEN 'other'
else ${source}
END ;;
  }

  dimension: active {
    type: time
    sql: ${TABLE}.active_date ;;
  }

  dimension: daily_active_count {
    type: number
    hidden: yes
    sql: ${TABLE}.active_count ;;
  }

  dimension: daily_promotion_count {
    type: number
    hidden: yes
    sql: ${TABLE}.promotion_count ;;
  }

  dimension: summed_ltv {
    type: number
    hidden: yes
    sql: ${TABLE}.summed_ltv ;;
  }

  dimension: summed_smv {
    type: number
    hidden: yes
    sql: ${TABLE}.summed_smv ;;
  }

  dimension: summed_promotion_spend {
    type: number
    hidden: yes
    sql: ${TABLE}.summed_promotion_spend ;;
  }

  dimension: dummy_pivot {
    label: "x"
    type: int
    sql: case when 1=1 then null end ;;
  }

  measure: total_ltv {
    type: sum
    sql: ${summed_ltv} ;;
  }

  measure: total_smv {
    type: sum
    sql: ${summed_smv} ;;
  }

  measure: avg_ltv {
    type: number
    sql: ${total_ltv}/nullif(${total_active_count},0) ;;
  }

  measure: avg_smv {
    type: number
    sql: ${total_smv}/nullif(${total_active_count},0) ;;
  }

  measure: total_active_count {
    type: sum
    sql: ${daily_active_count} ;;
  }

  measure: total_promotion_count {
    type: sum
    sql: ${daily_promotion_count} ;;
  }

  measure: total_promotion_spend_amount {
    type: sum
    sql: ${summed_promotion_spend} ;;
  }

  measure: cpa {
    label: "MARKETING CPA"
    type: number
    sql: ${marketing_spend.total_spend_amount}/nullif(${total_active_count},0) ;;
  }

  measure: cpa2 {
    label: "Cpa"
    type: number
    sql: ${marketing_spend.total_spend_amount}/nullif(${total_active_count},0) ;;
  }

  measure: adjusted_cpa {
    label: "MARKETING Adjusted CPA"
    type: number
    sql: (coalesce(${marketing_spend.total_spend_amount},0) + coalesce(${total_promotion_spend_amount},0))/nullif(${total_active_count},0) ;;
  }

  measure: adjusted_cpa2 {
    label: "Adjusted CPA"
    type: number
    sql: (coalesce(${marketing_spend.total_spend_amount},0) + coalesce(${total_promotion_spend_amount},0))/nullif(${total_active_count},0) ;;
  }

  measure: margin {
    type: number
    sql: (${avg_ltv}-${cpa}) ;;
  }

  measure: roi_smv {
    type: number
    sql: (${avg_smv}/nullif(${adjusted_cpa},0) - 1) * 100 ;;
  }

  measure: roi_ltv {
    type: number
    sql: (${avg_ltv}/nullif(${adjusted_cpa},0) - 1) * 100 ;;
  }
}
users_active_facts_daily.view.lookml · 106 lines
source-preserved
- view: users_active_facts_daily
  derived_table:
    sql: SELECT LOWER(TRIM(source)) AS source,
        LOWER(TRIM(medium)) AS medium,
        --LOWER(TRIM(campaign)) AS campaign, --removing campaign for now
        DATE(active_date) AS active_date,
        COUNT(1) AS active_count,
        SUM(CASE WHEN promotion_spend is NULL THEN 0
            ELSE 1 END) AS promotion_count,
        sum(ltv) as summed_ltv,
        sum(smv) as summed_smv,
        sum(promotion_spend) as summed_promotion_spend
FROM analytics_users_signup_facts
where active_date is not null
GROUP BY 1,2,3
  fields:
  - dimension: source
    primary_key: true
    sql: ${TABLE}.source
  - dimension: medium
    sql: ${TABLE}.medium
  - dimension: facility
    sql: ${TABLE}.facility
  - dimension: source_roll_up
    sql: CASE WHEN ${medium} = 'email' AND lower(${source}) similar to 'invit%|market%' THEN ${source}
  WHEN ${medium} = 'email' THEN ''
WHEN ${medium} ilike 'referral' then ''
WHEN ${medium} = 'directmail' AND ${source} IN ('belardi', 'handybook') THEN lower(${source})
WHEN ${medium} = 'directmail' THEN 'other'
WHEN ${medium} = 'video-paid' AND ${source} IN ('facebook', 'youtube', 'hulu', 'virool') THEN lower(${source})
WHEN ${medium} = 'video-paid' THEN 'other'
else ${source}
END
  - dimension: active
    type: time
    sql: ${TABLE}.active_date
  - dimension: daily_active_count
    type: number
    hidden: true
    sql: ${TABLE}.active_count
  - dimension: daily_promotion_count
    type: number
    hidden: true
    sql: ${TABLE}.promotion_count
  - dimension: summed_ltv
    type: number
    hidden: true
    sql: ${TABLE}.summed_ltv
  - dimension: summed_smv
    type: number
    hidden: true
    sql: ${TABLE}.summed_smv
  - dimension: summed_promotion_spend
    type: number
    hidden: true
    sql: ${TABLE}.summed_promotion_spend
  - dimension: dummy_pivot
    type: int
    label: x
    sql: case when 1=1 then null end
  - measure: total_ltv
    type: sum
    sql: ${summed_ltv}
  - measure: total_smv
    type: sum
    sql: ${summed_smv}
  - measure: avg_ltv
    type: number
    sql: ${total_ltv}/nullif(${total_active_count},0)
  - measure: avg_smv
    type: number
    sql: ${total_smv}/nullif(${total_active_count},0)
  - measure: total_active_count
    type: sum
    sql: ${daily_active_count}
  - measure: total_promotion_count
    type: sum
    sql: ${daily_promotion_count}
  - measure: total_promotion_spend_amount
    type: sum
    sql: ${summed_promotion_spend}
  - measure: cpa
    type: number
    label: MARKETING CPA
    sql: ${marketing_spend.total_spend_amount}/nullif(${total_active_count},0)
  - measure: cpa2
    type: number
    label: Cpa
    sql: ${marketing_spend.total_spend_amount}/nullif(${total_active_count},0)
  - measure: adjusted_cpa
    type: number
    label: MARKETING Adjusted CPA
    sql: (coalesce(${marketing_spend.total_spend_amount},0) + coalesce(${total_promotion_spend_amount},0))/nullif(${total_active_count},0)
  - measure: adjusted_cpa2
    type: number
    label: Adjusted CPA
    sql: (coalesce(${marketing_spend.total_spend_amount},0) + coalesce(${total_promotion_spend_amount},0))/nullif(${total_active_count},0)
  - measure: margin
    type: number
    sql: (${avg_ltv}-${cpa})
  - measure: roi_smv
    type: number
    sql: (${avg_smv}/nullif(${adjusted_cpa},0) - 1) * 100
  - measure: roi_ltv
    type: number
    sql: (${avg_ltv}/nullif(${adjusted_cpa},0) - 1) * 100

Contents

  • users_active_facts_daily.sql
  • users_active_facts_daily.sql
  • users_active_facts_daily.view.lkml
  • users_active_facts_daily.view.lookml