dbt Marketing digital

Last Page

Last Page model for marketing digital.

inferred

Blocks

last_page.sql · 35 lines
inferred
-- models/last_page.sql
{{ config(materialized='table') }}

SELECT
 domain_userid,
 domain_sessionidx,
 domain_userid || '-' || domain_sessionidx AS visit_id,
 MAX(page_urlhost) AS page_urlhost, -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 MAX(page_urlpath) AS page_urlpath  -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 FROM (
   SELECT
   domain_userid,
   domain_sessionidx,
   page_urlhost,
   page_urlpath,
   RANK() OVER (PARTITION BY domain_userid, domain_sessionidx ORDER BY dvce_tstamp DESC) AS "rank_desc"
   FROM {{ this }}.events
   WHERE event = 'page_view') AS a
 WHERE rank_desc = 1                -- Filter so only return landing pages
 GROUP BY 1,2,3                     -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)

# models/schema.yml
version: 2

models:
  - name: last_page
    columns:
      - name: visit_id
        tests:
          - unique
          - not_null
      - name: domain_userid
      - name: domain_sessionidx
      - name: host
      - name: path

Assumptions

  • materialized='table' inferred from a LookML persist hint (persist_for / datagroup / sql_trigger_value).
  • schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
last_page.sql · 17 lines
source-preserved validation: not checked
SELECT
 domain_userid,
 domain_sessionidx,
 domain_userid || '-' || domain_sessionidx AS visit_id,
 MAX(page_urlhost) AS page_urlhost, -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 MAX(page_urlpath) AS page_urlpath  -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 FROM (
   SELECT
   domain_userid,
   domain_sessionidx,
   page_urlhost,
   page_urlpath,
   RANK() OVER (PARTITION BY domain_userid, domain_sessionidx ORDER BY dvce_tstamp DESC) AS "rank_desc"
   FROM ${TABLE}.events
   WHERE event = 'page_view') AS a
 WHERE rank_desc = 1                -- Filter so only return landing pages
 GROUP BY 1,2,3                     -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
last_page.view.lkml · 50 lines
inferred
view: last_page {
  derived_table: {
    sql: SELECT
 domain_userid,
 domain_sessionidx,
 domain_userid || '-' || domain_sessionidx AS visit_id,
 MAX(page_urlhost) AS page_urlhost, -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 MAX(page_urlpath) AS page_urlpath  -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 FROM (
   SELECT
   domain_userid,
   domain_sessionidx,
   page_urlhost,
   page_urlpath,
   RANK() OVER (PARTITION BY domain_userid, domain_sessionidx ORDER BY dvce_tstamp DESC) AS "rank_desc"
   FROM ${TABLE}.events
   WHERE event = 'page_view') AS a
 WHERE rank_desc = 1                -- Filter so only return landing pages
 GROUP BY 1,2,3                     -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp) ;;
    persist_for: "6 hour"
  }

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

  dimension: domain_userid {
    hidden: yes
    sql: ${TABLE}.domain_userid ;;
  }

  dimension: domain_sessionidx {
    type: int
    hidden: yes
    sql: ${TABLE}.domain_sessionidx ;;
  }

  dimension: host {
    sql: ${TABLE}.page_urlhost ;;
  }

  dimension: path {
    sql: ${TABLE}.page_urlpath ;;
  }

  measure: page_views_count {
    type: count
  }
}
last_page.view.lookml · 37 lines
source-preserved
- view: last_page
  derived_table:
    sql: SELECT
 domain_userid,
 domain_sessionidx,
 domain_userid || '-' || domain_sessionidx AS visit_id,
 MAX(page_urlhost) AS page_urlhost, -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 MAX(page_urlpath) AS page_urlpath  -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
 FROM (
   SELECT
   domain_userid,
   domain_sessionidx,
   page_urlhost,
   page_urlpath,
   RANK() OVER (PARTITION BY domain_userid, domain_sessionidx ORDER BY dvce_tstamp DESC) AS "rank_desc"
   FROM ${TABLE}.events
   WHERE event = 'page_view') AS a
 WHERE rank_desc = 1                -- Filter so only return landing pages
 GROUP BY 1,2,3                     -- Remove duplicates (v. occasional case where two page views have exactly the same dvce_tstamp)
    persist_for: 6 hour
  fields:
  - dimension: visit_id
    primary_key: true
    sql: ${TABLE}.visit_id
  - dimension: domain_userid
    hidden: true
    sql: ${TABLE}.domain_userid
  - dimension: domain_sessionidx
    type: int
    hidden: true
    sql: ${TABLE}.domain_sessionidx
  - dimension: host
    sql: ${TABLE}.page_urlhost
  - dimension: path
    sql: ${TABLE}.page_urlpath
  - measure: page_views_count
    type: count

Contents

  • last_page.sql
  • last_page.sql
  • last_page.view.lkml
  • last_page.view.lookml