dbt
Marketing analytics
Last Page
Last Page model for marketing analytics.
inferred
Blocks
last_page.sql · 38 lines
inferred
-- models/last_page.sql
{{ config(materialized='view') }}
SELECT
domain_userid,
domain_sessionidx,
domain_userid || '-' || domain_sessionidx AS visit_id,
max(page_title) as page_title,
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,
page_title,
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_user_id
- name: domain_session_index
- name: page_url_host
- name: page_url_path
- name: page_title
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.
last_page.sql · 19 lines
source-preserved
validation: not checked
SELECT
domain_userid,
domain_sessionidx,
domain_userid || '-' || domain_sessionidx AS visit_id,
max(page_title) as page_title,
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,
page_title,
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 · 55 lines
inferred
view: last_page {
derived_table: {
sql: SELECT
domain_userid,
domain_sessionidx,
domain_userid || '-' || domain_sessionidx AS visit_id,
max(page_title) as page_title,
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,
page_title,
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) ;;
}
dimension: visit_id {
primary_key: yes
sql: ${TABLE}.visit_id ;;
}
dimension: domain_user_id {
hidden: yes
sql: ${TABLE}.domain_userid ;;
}
dimension: domain_session_index {
type: int
hidden: yes
sql: ${TABLE}.domain_sessionidx ;;
}
dimension: page_url_host {
sql: ${TABLE}.page_urlhost ;;
}
dimension: page_url_path {
sql: ${TABLE}.page_urlpath ;;
}
dimension: page_title {
sql: ${TABLE}.page_title ;;
}
measure: page_views_count {
type: count
}
}
last_page.view.lookml · 40 lines
source-preserved
- view: last_page
derived_table:
sql: SELECT
domain_userid,
domain_sessionidx,
domain_userid || '-' || domain_sessionidx AS visit_id,
max(page_title) as page_title,
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,
page_title,
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)
fields:
- dimension: visit_id
primary_key: true
sql: ${TABLE}.visit_id
- dimension: domain_user_id
hidden: true
sql: ${TABLE}.domain_userid
- dimension: domain_session_index
type: int
hidden: true
sql: ${TABLE}.domain_sessionidx
- dimension: page_url_host
sql: ${TABLE}.page_urlhost
- dimension: page_url_path
sql: ${TABLE}.page_urlpath
- dimension: page_title
sql: ${TABLE}.page_title
- measure: page_views_count
type: count
Contents
- last_page.sql
- last_page.sql
- last_page.view.lkml
- last_page.view.lookml