dbt Advertising automotive

Generic Organic Referer

Generic Organic Referer model for advertising automotive.

inferred

Blocks

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

SELECT
app_id,
domain_userid,
domain_sessionidx,
refr_source,
refr_medium,
refr_urlhost
FROM (
  SELECT
  app_id,
  domain_userid,
  domain_sessionidx,
  FIRST_VALUE(refr_source)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ORDER BY dvce_tstamp
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_source,
  FIRST_VALUE(refr_medium)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_medium,
  FIRST_VALUE(refr_urlhost)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_urlhost
  FROM atomic.events
  WHERE refr_medium <> 'internal'
) t
GROUP BY 1,2,3,4,5,6

# models/schema.yml
version: 2

models:
  - name: generic_organic_referer
    columns:
      - name: application_id
      - name: user_id
      - name: session_index
      - name: referer_source
      - name: referer_medium
      - name: referer_host

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.
generic_organic_referer.sql · 26 lines
source-preserved validation: parses
SELECT
app_id,
domain_userid,
domain_sessionidx,
refr_source,
refr_medium,
refr_urlhost
FROM (
  SELECT
  app_id,
  domain_userid,
  domain_sessionidx,
  FIRST_VALUE(refr_source)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ORDER BY dvce_tstamp
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_source,
  FIRST_VALUE(refr_medium)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_medium,
  FIRST_VALUE(refr_urlhost)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_urlhost
  FROM atomic.events
  WHERE refr_medium <> 'internal'
) t
GROUP BY 1,2,3,4,5,6
generic_organic_referer.view.lkml · 58 lines
inferred
view: generic_organic_referer {
  derived_table: {
    sql: SELECT
app_id,
domain_userid,
domain_sessionidx,
refr_source,
refr_medium,
refr_urlhost
FROM (
  SELECT
  app_id,
  domain_userid,
  domain_sessionidx,
  FIRST_VALUE(refr_source)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ORDER BY dvce_tstamp
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_source,
  FIRST_VALUE(refr_medium)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_medium,
  FIRST_VALUE(refr_urlhost)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_urlhost
  FROM atomic.events
  WHERE refr_medium <> 'internal'
) t
GROUP BY 1,2,3,4,5,6 ;;
  }

  dimension: application_id {
    sql: ${TABLE}.app_id ;;
  }

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

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

  dimension: referer_source {
    sql: ${TABLE}.refr_source ;;
  }

  dimension: referer_medium {
    sql: ${TABLE}.refr_medium ;;
  }

  dimension: referer_host {
    sql: ${TABLE}.refr_urlhost ;;
  }

  measure: count {
    type: count
  }
}
generic_organic_referer.view.lookml · 43 lines
source-preserved
- view: generic_organic_referer
  derived_table:
    sql: SELECT
app_id,
domain_userid,
domain_sessionidx,
refr_source,
refr_medium,
refr_urlhost
FROM (
  SELECT
  app_id,
  domain_userid,
  domain_sessionidx,
  FIRST_VALUE(refr_source)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ORDER BY dvce_tstamp
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_source,
  FIRST_VALUE(refr_medium)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_medium,
  FIRST_VALUE(refr_urlhost)
    OVER (PARTITION BY app_id, domain_userid, domain_sessionidx
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS refr_urlhost
  FROM atomic.events
  WHERE refr_medium <> 'internal'
) t
GROUP BY 1,2,3,4,5,6
  fields:
  - dimension: application_id
    sql: ${TABLE}.app_id
  - dimension: user_id
    sql: ${TABLE}.domain_userid
  - dimension: session_index
    sql: ${TABLE}.domain_sessionidx
  - dimension: referer_source
    sql: ${TABLE}.refr_source
  - dimension: referer_medium
    sql: ${TABLE}.refr_medium
  - dimension: referer_host
    sql: ${TABLE}.refr_urlhost
  - measure: count
    type: count

Contents

  • generic_organic_referer.sql
  • generic_organic_referer.sql
  • generic_organic_referer.view.lkml
  • generic_organic_referer.view.lookml