dbt
Saas cloud infrastructure
Track Facts
Track Facts model for saas cloud infrastructure.
inferred
Blocks
track_facts.sql · 30 lines
inferred
-- models/track_facts.sql
{{ config(materialized='view') }}
select t.anonymous_id
, t.sent_at
, t.event_id
, t.event
, s.session_id
, t.looker_visitor_id
, row_number() over(partition by s.session_id order by t.sent_at) as track_sequence_number
from {{ ref('mapped_tracks') }} as t
inner join {{ ref('sessions_trk') }} as s
on t.looker_visitor_id = s.looker_visitor_id
and t.sent_at >= s.session_start_at
and (t.sent_at < s.next_session_start_at or s.next_session_start_at is null)
# models/schema.yml
version: 2
models:
- name: track_facts
columns:
- name: event_id
tests:
- unique
- not_null
- name: event
- name: session_id
- name: looker_visitor_id
- name: sequence_number
Assumptions
- Each ${view.SQL_TABLE_NAME} was mapped to {{ ref('view') }}; confirm a dbt model exists for each referenced view.
- 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.
track_facts.sql · 12 lines
source-preserved
validation: not checked
select t.anonymous_id
, t.sent_at
, t.event_id
, t.event
, s.session_id
, t.looker_visitor_id
, row_number() over(partition by s.session_id order by t.sent_at) as track_sequence_number
from ${mapped_tracks.SQL_TABLE_NAME} as t
inner join ${sessions_trk.SQL_TABLE_NAME} as s
on t.looker_visitor_id = s.looker_visitor_id
and t.sent_at >= s.session_start_at
and (t.sent_at < s.next_session_start_at or s.next_session_start_at is null)
track_facts.view.lkml · 44 lines
inferred
view: track_facts {
derived_table: {
sql: select t.anonymous_id
, t.sent_at
, t.event_id
, t.event
, s.session_id
, t.looker_visitor_id
, row_number() over(partition by s.session_id order by t.sent_at) as track_sequence_number
from ${mapped_tracks.SQL_TABLE_NAME} as t
inner join ${sessions_trk.SQL_TABLE_NAME} as s
on t.looker_visitor_id = s.looker_visitor_id
and t.sent_at >= s.session_start_at
and (t.sent_at < s.next_session_start_at or s.next_session_start_at is null) ;;
}
dimension: event_id {
primary_key: yes
hidden: yes
sql: ${TABLE}.event_id ;;
}
dimension: event {
sql: ${TABLE}.event ;;
}
dimension: session_id {
sql: ${TABLE}.session_id ;;
}
dimension: looker_visitor_id {
sql: ${TABLE}.looker_visitor_id ;;
}
dimension: sequence_number {
type: number
sql: ${TABLE}.track_sequence_number ;;
}
measure: count_visitors {
type: count_distinct
sql: ${looker_visitor_id} ;;
}
}
track_facts.view.lookml · 31 lines
source-preserved
- view: track_facts
derived_table:
sql: select t.anonymous_id
, t.sent_at
, t.event_id
, t.event
, s.session_id
, t.looker_visitor_id
, row_number() over(partition by s.session_id order by t.sent_at) as track_sequence_number
from ${mapped_tracks.SQL_TABLE_NAME} as t
inner join ${sessions_trk.SQL_TABLE_NAME} as s
on t.looker_visitor_id = s.looker_visitor_id
and t.sent_at >= s.session_start_at
and (t.sent_at < s.next_session_start_at or s.next_session_start_at is null)
fields:
- dimension: event_id
primary_key: true
hidden: true
sql: ${TABLE}.event_id
- dimension: event
sql: ${TABLE}.event
- dimension: session_id
sql: ${TABLE}.session_id
- dimension: looker_visitor_id
sql: ${TABLE}.looker_visitor_id
- dimension: sequence_number
type: number
sql: ${TABLE}.track_sequence_number
- measure: count_visitors
type: count_distinct
sql: ${looker_visitor_id}
Contents
- track_facts.sql
- track_facts.sql
- track_facts.view.lkml
- track_facts.view.lookml