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