dbt
Ecommerce analytics
Events
Events model for ecommerce analytics.
inferred
Blocks
events.sql · 63 lines
inferred
-- models/events.sql
{{ config(materialized='view') }}
select
a.requesthash as id,
a.datecreated as event_date,
b.value as session_id,
c.value as user_id,
d.value as namespace,
e.value as environment,
f.value as client_id,
g.value as category_id,
h.value as event
from
headerdata as a
left join
objectdata as b
on a.requesthash = b.requesthash
and b.key = 'post.sessionIdentifier'
left join
objectdata as c
on a.requesthash = c.requesthash
and c.key = 'post.userId'
left join
objectdata as d
on a.requesthash = d.requesthash
and d.key = 'post.namespace'
left join
objectdata as e
on a.requesthash = e.requesthash
and e.key = 'post.environment'
left join
objectdata as f
on a.requesthash = f.requesthash
and f.key = 'post.clientId'
left join
objectdata as g
on a.requesthash = g.requesthash
and g.key = 'post.categoryId'
left join
objectdata as h
on a.requesthash = h.requesthash
and h.key = 'post.event'
where
a.datecreated between getdate() - 6 and getdate() - 5
# models/schema.yml
version: 2
models:
- name: events
columns:
- name: id
tests:
- unique
- not_null
- name: session_id
- name: user_id
- name: namespace
- name: environment
- name: client_id
- name: category_id
- name: event
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.
events.sql · 42 lines
source-preserved
validation: parses
select
a.requesthash as id,
a.datecreated as event_date,
b.value as session_id,
c.value as user_id,
d.value as namespace,
e.value as environment,
f.value as client_id,
g.value as category_id,
h.value as event
from
headerdata as a
left join
objectdata as b
on a.requesthash = b.requesthash
and b.key = 'post.sessionIdentifier'
left join
objectdata as c
on a.requesthash = c.requesthash
and c.key = 'post.userId'
left join
objectdata as d
on a.requesthash = d.requesthash
and d.key = 'post.namespace'
left join
objectdata as e
on a.requesthash = e.requesthash
and e.key = 'post.environment'
left join
objectdata as f
on a.requesthash = f.requesthash
and f.key = 'post.clientId'
left join
objectdata as g
on a.requesthash = g.requesthash
and g.key = 'post.categoryId'
left join
objectdata as h
on a.requesthash = h.requesthash
and h.key = 'post.event'
where
a.datecreated between getdate() - 6 and getdate() - 5
events.view.lkml · 100 lines
inferred
view: events {
derived_table: {
sql: select
a.requesthash as id,
a.datecreated as event_date,
b.value as session_id,
c.value as user_id,
d.value as namespace,
e.value as environment,
f.value as client_id,
g.value as category_id,
h.value as event
from
headerdata as a
left join
objectdata as b
on a.requesthash = b.requesthash
and b.key = 'post.sessionIdentifier'
left join
objectdata as c
on a.requesthash = c.requesthash
and c.key = 'post.userId'
left join
objectdata as d
on a.requesthash = d.requesthash
and d.key = 'post.namespace'
left join
objectdata as e
on a.requesthash = e.requesthash
and e.key = 'post.environment'
left join
objectdata as f
on a.requesthash = f.requesthash
and f.key = 'post.clientId'
left join
objectdata as g
on a.requesthash = g.requesthash
and g.key = 'post.categoryId'
left join
objectdata as h
on a.requesthash = h.requesthash
and h.key = 'post.event'
where
a.datecreated between getdate() - 6 and getdate() - 5 ;;
}
dimension: id {
primary_key: yes
hidden: yes
sql: ${TABLE}.id ;;
}
dimension: session_id {
sql: ${TABLE}.session_id ;;
}
dimension: user_id {
sql: ${TABLE}.user_id ;;
}
dimension: namespace {
sql: ${TABLE}.namespace ;;
}
dimension: environment {
sql: ${TABLE}.environment ;;
}
dimension: client_id {
sql: ${TABLE}.client_id ;;
}
dimension: category_id {
sql: ${TABLE}.category_id ;;
}
dimension: event {
sql: ${TABLE}.event ;;
}
dimension_group: event {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.event_date ;;
}
measure: count {
type: count
}
measure: session_cnt {
type: count_distinct
sql: ${session_id} ;;
}
measure: user_cnt {
type: count_distinct
sql: ${user_id} ;;
}
}
events.view.lookml · 79 lines
source-preserved
- view: events
derived_table:
sql: select
a.requesthash as id,
a.datecreated as event_date,
b.value as session_id,
c.value as user_id,
d.value as namespace,
e.value as environment,
f.value as client_id,
g.value as category_id,
h.value as event
from
headerdata as a
left join
objectdata as b
on a.requesthash = b.requesthash
and b.key = 'post.sessionIdentifier'
left join
objectdata as c
on a.requesthash = c.requesthash
and c.key = 'post.userId'
left join
objectdata as d
on a.requesthash = d.requesthash
and d.key = 'post.namespace'
left join
objectdata as e
on a.requesthash = e.requesthash
and e.key = 'post.environment'
left join
objectdata as f
on a.requesthash = f.requesthash
and f.key = 'post.clientId'
left join
objectdata as g
on a.requesthash = g.requesthash
and g.key = 'post.categoryId'
left join
objectdata as h
on a.requesthash = h.requesthash
and h.key = 'post.event'
where
a.datecreated between getdate() - 6 and getdate() - 5
fields:
- dimension: id
primary_key: true
hidden: true
sql: ${TABLE}.id
- dimension: session_id
sql: ${TABLE}.session_id
- dimension: user_id
sql: ${TABLE}.user_id
- dimension: namespace
sql: ${TABLE}.namespace
- dimension: environment
sql: ${TABLE}.environment
- dimension: client_id
sql: ${TABLE}.client_id
- dimension: category_id
sql: ${TABLE}.category_id
- dimension: event
sql: ${TABLE}.event
- dimension_group: event
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.event_date
- measure: count
type: count
- measure: session_cnt
type: count_distinct
sql: ${session_id}
- measure: user_cnt
type: count_distinct
sql: ${user_id}
Contents
- events.sql
- events.sql
- events.view.lkml
- events.view.lookml