SQL Saas crm

Provider Ad Stats Rollup

Provider Ad Stats Rollup model for saas crm.

source-preserved

Blocks

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

SELECT
a.provider_ad_id_all as provider_ad_id,
a.first_start_date,
sum(a.visitors) as visitors,
sum(a.views) as views,
sum(a.cta_submits) as cta_submits,
sum(a.unique_cta_submits) as unique_cta_submits,
sum(a.cta_clicks) as cta_clicks,
sum(a.leads) as leads,
sum(a.clicks) as clicks,
sum(a.total_spend) as total_spend,
sum(a.impressions) as impressions
FROM (
SELECT
  z.engagement_id,
  z.ad_id,
  z.provider_ad_id_all,
  z.start_date,
  MIN(z.start_date) OVER (PARTITION BY z.provider_ad_id_all) as first_start_date,
  z.visitors,
  z.views,
  z.cta_submits,
  z.unique_cta_submits,
  z.cta_clicks,
  z.leads,
  z.clicks,
  z.total_spend,
  z.impressions
  FROM (
    SELECT
      x.id as engagement_id,
      y.id as ad_id,
      CASE WHEN x.provider_ad_id IS NOT NULL THEN x.provider_ad_id
        ELSE y.provider_ad_id
      END
        AS provider_ad_id_all,
      CASE WHEN x.start_date IS NOT NULL then x.start_date
       ELSE y.start_date
      END
       as start_date,
      x.visitors,
      x.views,
      x.cta_submits,
      x.unique_cta_submits,
      x.cta_clicks,
      x.leads,
      y.clicks,
      y.total_spend,
      y.impressions
    FROM (
      SELECT
        *
      FROM
        public_schema.provider_engagement_stats
      WHERE
        provider_ad_id IS NOT NULL
      )  as x
    FULL OUTER JOIN
      public_schema.provider_ad_stats y
    ON
      x.provider_ad_id = y.provider_ad_id AND
      x.start_date = y.start_date
  ) as z
) as a
GROUP BY
  a.provider_ad_id_all, a.first_start_date

# models/schema.yml
version: 2

models:
  - name: provider_ad_stats_rollup
    columns:
      - name: provider_ad_id
      - name: manager
      - name: operations_lead

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.
provider_ad_stats_rollup.sql · 66 lines
source-preserved validation: parses
SELECT
a.provider_ad_id_all as provider_ad_id,
a.first_start_date,
sum(a.visitors) as visitors,
sum(a.views) as views,
sum(a.cta_submits) as cta_submits,
sum(a.unique_cta_submits) as unique_cta_submits,
sum(a.cta_clicks) as cta_clicks,
sum(a.leads) as leads,
sum(a.clicks) as clicks,
sum(a.total_spend) as total_spend,
sum(a.impressions) as impressions
FROM (
SELECT
  z.engagement_id,
  z.ad_id,
  z.provider_ad_id_all,
  z.start_date,
  MIN(z.start_date) OVER (PARTITION BY z.provider_ad_id_all) as first_start_date,
  z.visitors,
  z.views,
  z.cta_submits,
  z.unique_cta_submits,
  z.cta_clicks,
  z.leads,
  z.clicks,
  z.total_spend,
  z.impressions
  FROM (
    SELECT
      x.id as engagement_id,
      y.id as ad_id,
      CASE WHEN x.provider_ad_id IS NOT NULL THEN x.provider_ad_id
        ELSE y.provider_ad_id
      END
        AS provider_ad_id_all,
      CASE WHEN x.start_date IS NOT NULL then x.start_date
       ELSE y.start_date
      END
       as start_date,
      x.visitors,
      x.views,
      x.cta_submits,
      x.unique_cta_submits,
      x.cta_clicks,
      x.leads,
      y.clicks,
      y.total_spend,
      y.impressions
    FROM (
      SELECT
        *
      FROM
        public_schema.provider_engagement_stats
      WHERE
        provider_ad_id IS NOT NULL
      )  as x
    FULL OUTER JOIN
      public_schema.provider_ad_stats y
    ON
      x.provider_ad_id = y.provider_ad_id AND
      x.start_date = y.start_date
  ) as z
) as a
GROUP BY
  a.provider_ad_id_all, a.first_start_date
provider_ad_stats_rollup.view.lkml · 238 lines
inferred
view: provider_ad_stats_rollup {
  derived_table: {
    sql: SELECT
a.provider_ad_id_all as provider_ad_id,
a.first_start_date,
sum(a.visitors) as visitors,
sum(a.views) as views,
sum(a.cta_submits) as cta_submits,
sum(a.unique_cta_submits) as unique_cta_submits,
sum(a.cta_clicks) as cta_clicks,
sum(a.leads) as leads,
sum(a.clicks) as clicks,
sum(a.total_spend) as total_spend,
sum(a.impressions) as impressions
FROM (
SELECT
  z.engagement_id,
  z.ad_id,
  z.provider_ad_id_all,
  z.start_date,
  MIN(z.start_date) OVER (PARTITION BY z.provider_ad_id_all) as first_start_date,
  z.visitors,
  z.views,
  z.cta_submits,
  z.unique_cta_submits,
  z.cta_clicks,
  z.leads,
  z.clicks,
  z.total_spend,
  z.impressions
  FROM (
    SELECT
      x.id as engagement_id,
      y.id as ad_id,
      CASE WHEN x.provider_ad_id IS NOT NULL THEN x.provider_ad_id
        ELSE y.provider_ad_id
      END
        AS provider_ad_id_all,
      CASE WHEN x.start_date IS NOT NULL then x.start_date
       ELSE y.start_date
      END
       as start_date,
      x.visitors,
      x.views,
      x.cta_submits,
      x.unique_cta_submits,
      x.cta_clicks,
      x.leads,
      y.clicks,
      y.total_spend,
      y.impressions
    FROM (
      SELECT
        *
      FROM
        public_schema.provider_engagement_stats
      WHERE
        provider_ad_id IS NOT NULL
      )  as x
    FULL OUTER JOIN
      public_schema.provider_ad_stats y
    ON
      x.provider_ad_id = y.provider_ad_id AND
      x.start_date = y.start_date
  ) as z
) as a
GROUP BY
  a.provider_ad_id_all, a.first_start_date ;;
  }

  dimension: provider_ad_id {
    type: int
    sql: ${TABLE}.provider_ad_id ;;
  }

  dimension: manager {
    sql: COALESCE(${_account.manager}, ${people2.display_name}) ;;
  }

  dimension: operations_lead {
    sql: COALESCE(${_account.operations_lead}, ${people3.display_name}) ;;
  }

  dimension_group: first {
    label: "First Ad"
    type: time
    timeframes: [date, week, month]
    convert_tz: no
    sql: ${TABLE}.first_start_date ;;
  }

  measure: total_visitors {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.visitors ;;
  }

  measure: total_views {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.views ;;
  }

  measure: total_clicks {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.clicks ;;
  }

  measure: total_impressions {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.impressions ;;
  }

  measure: sum_total_spend {
    label: "Total Spend"
    type: sum
    value_format: "$#,##0.00"
    drill_fields: [detail*]
    sql: (1.00)*${TABLE}.total_spend/100 ;;
  }

  measure: total_non_redirect_leads {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.leads ;;
  }

  measure: total_cta_clicks {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.cta_clicks ;;
  }

  measure: total_leads {
    type: sum
    drill_fields: [detail*]
    sql: ${TABLE}.unique_cta_submits ;;
  }

  measure: avg_visitors {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.visitors ;;
  }

  measure: avg_views {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.views ;;
  }

  measure: avg_clicks {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.clicks ;;
  }

  measure: avg_impressions {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.impressions ;;
  }

  measure: avg_total_spend {
    type: average
    value_format: "$#,##0.00"
    drill_fields: [detail*]
    sql: (1.00)*${TABLE}.total_spend/100 ;;
  }

  measure: avg_non_redirect_leads {
    type: average
    hidden: yes
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.leads ;;
  }

  measure: avg_cta_clicks {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.cta_clicks ;;
  }

  measure: avg_leads {
    type: average
    drill_fields: [detail*]
    sql: 1.00*${TABLE}.unique_cta_submits ;;
  }

  measure: ctr {
    type: number
    value_format: "#.00%"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.total_clicks}/NULLIF(${provider_ad_stats_rollup.total_impressions},0) ;;
  }

  measure: cpc {
    type: number
    value_format: "$#,##0.00"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.sum_total_spend}/NULLIF(${provider_ad_stats_rollup.total_clicks},0) ;;
  }

  measure: percent_cta_clicks {
    type: number
    value_format: "#.00%"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.total_cta_clicks}/NULLIF(${provider_ad_stats_rollup.total_views},0) ;;
  }

  measure: percent_submit {
    type: number
    value_format: "#.00%"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.total_leads}/NULLIF(${provider_ad_stats_rollup.total_cta_clicks},0) ;;
  }

  measure: cpl {
    type: number
    value_format: "$#,##0.00"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.sum_total_spend}/NULLIF(${provider_ad_stats_rollup.total_leads},0) ;;
  }

  measure: conversion_rate {
    type: number
    value_format: "#.00%"
    drill_fields: [detail*]
    sql: 1.00*${provider_ad_stats_rollup.total_leads}/NULLIF(${provider_ad_stats_rollup.total_visitors},0) ;;
  }

  measure: count {
    type: count
    drill_fields: [detail*]
  }
}
provider_ad_stats_rollup.view.lookml · 207 lines
source-preserved
- view: provider_ad_stats_rollup
  derived_table:
    sql: SELECT
a.provider_ad_id_all as provider_ad_id,
a.first_start_date,
sum(a.visitors) as visitors,
sum(a.views) as views,
sum(a.cta_submits) as cta_submits,
sum(a.unique_cta_submits) as unique_cta_submits,
sum(a.cta_clicks) as cta_clicks,
sum(a.leads) as leads,
sum(a.clicks) as clicks,
sum(a.total_spend) as total_spend,
sum(a.impressions) as impressions
FROM (
SELECT
  z.engagement_id,
  z.ad_id,
  z.provider_ad_id_all,
  z.start_date,
  MIN(z.start_date) OVER (PARTITION BY z.provider_ad_id_all) as first_start_date,
  z.visitors,
  z.views,
  z.cta_submits,
  z.unique_cta_submits,
  z.cta_clicks,
  z.leads,
  z.clicks,
  z.total_spend,
  z.impressions
  FROM (
    SELECT
      x.id as engagement_id,
      y.id as ad_id,
      CASE WHEN x.provider_ad_id IS NOT NULL THEN x.provider_ad_id
        ELSE y.provider_ad_id
      END
        AS provider_ad_id_all,
      CASE WHEN x.start_date IS NOT NULL then x.start_date
       ELSE y.start_date
      END
       as start_date,
      x.visitors,
      x.views,
      x.cta_submits,
      x.unique_cta_submits,
      x.cta_clicks,
      x.leads,
      y.clicks,
      y.total_spend,
      y.impressions
    FROM (
      SELECT
        *
      FROM
        public_schema.provider_engagement_stats
      WHERE
        provider_ad_id IS NOT NULL
      )  as x
    FULL OUTER JOIN
      public_schema.provider_ad_stats y
    ON
      x.provider_ad_id = y.provider_ad_id AND
      x.start_date = y.start_date
  ) as z
) as a
GROUP BY
  a.provider_ad_id_all, a.first_start_date
  fields:
  - dimension: provider_ad_id
    type: int
    sql: ${TABLE}.provider_ad_id
  - dimension: manager
    sql: COALESCE(${_account.manager}, ${people2.display_name})
  - dimension: operations_lead
    sql: COALESCE(${_account.operations_lead}, ${people3.display_name})
  - dimension_group: first
    type: time
    timeframes:
    - date
    - week
    - month
    convert_tz: false
    sql: ${TABLE}.first_start_date
  - measure: total_visitors
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.visitors
  - measure: total_views
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.views
  - measure: total_clicks
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.clicks
  - measure: total_impressions
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.impressions
  - measure: sum_total_spend
    type: sum
    label: Total Spend
    value_format: '$#,##0.00'
    drill_fields:
    - detail*
    sql: (1.00)*${TABLE}.total_spend/100
  - measure: total_non_redirect_leads
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.leads
  - measure: total_cta_clicks
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.cta_clicks
  - measure: total_leads
    type: sum
    drill_fields:
    - detail*
    sql: ${TABLE}.unique_cta_submits
  - measure: avg_visitors
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.visitors
  - measure: avg_views
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.views
  - measure: avg_clicks
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.clicks
  - measure: avg_impressions
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.impressions
  - measure: avg_total_spend
    type: average
    value_format: '$#,##0.00'
    drill_fields:
    - detail*
    sql: (1.00)*${TABLE}.total_spend/100
  - measure: avg_non_redirect_leads
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.leads
  - measure: avg_cta_clicks
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.cta_clicks
  - measure: avg_leads
    type: average
    drill_fields:
    - detail*
    sql: 1.00*${TABLE}.unique_cta_submits
  - measure: ctr
    type: number
    value_format: '#.00%'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.total_clicks}/NULLIF(${provider_ad_stats_rollup.total_impressions},0)
  - measure: cpc
    type: number
    value_format: '$#,##0.00'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.sum_total_spend}/NULLIF(${provider_ad_stats_rollup.total_clicks},0)
  - measure: percent_cta_clicks
    type: number
    value_format: '#.00%'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.total_cta_clicks}/NULLIF(${provider_ad_stats_rollup.total_views},0)
  - measure: percent_submit
    type: number
    value_format: '#.00%'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.total_leads}/NULLIF(${provider_ad_stats_rollup.total_cta_clicks},0)
  - measure: cpl
    type: number
    value_format: '$#,##0.00'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.sum_total_spend}/NULLIF(${provider_ad_stats_rollup.total_leads},0)
  - measure: conversion_rate
    type: number
    value_format: '#.00%'
    drill_fields:
    - detail*
    sql: 1.00*${provider_ad_stats_rollup.total_leads}/NULLIF(${provider_ad_stats_rollup.total_visitors},0)
  - measure: count
    type: count
    drill_fields:
    - detail*

Contents

  • provider_ad_stats_rollup.sql
  • provider_ad_stats_rollup.sql
  • provider_ad_stats_rollup.view.lkml
  • provider_ad_stats_rollup.view.lookml