dbt
Entertainment tech
Account Session Facts
Account Session Facts model for entertainment tech.
inferred
Blocks
account_session_facts.sql · 40 lines
inferred
-- models/account_session_facts.sql
{{ config(materialized='view') }}
SELECT
s.account AS account
, s.install AS install
, SUM(TIMESTAMPDIFF(minute, s.first_event, s.last_event)) AS lifetime_duration_min
, COUNT(*) AS lifetime_sessions
FROM
(
SELECT
ss.play_session AS session_id
, ss.account AS account
, ss.install AS install
, MIN(ss.time_utc) AS first_event
, MAX(ss.time_utc) AS last_event
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-06-01'
GROUP BY session_id
) AS s
GROUP BY 1,2
# models/schema.yml
version: 2
models:
- name: account_session_facts
columns:
- name: install
tests:
- unique
- not_null
- name: account
- name: lifetime_duration_min
- name: lifetime_duration_min_tier
- name: lifetime_sessions
- name: lifetime_sessions_tier
- name: avg_session_duration_min
- name: avg_session_duration_min_tier
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.
account_session_facts.sql · 19 lines
source-preserved
validation: parses
SELECT
s.account AS account
, s.install AS install
, SUM(TIMESTAMPDIFF(minute, s.first_event, s.last_event)) AS lifetime_duration_min
, COUNT(*) AS lifetime_sessions
FROM
(
SELECT
ss.play_session AS session_id
, ss.account AS account
, ss.install AS install
, MIN(ss.time_utc) AS first_event
, MAX(ss.time_utc) AS last_event
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-06-01'
GROUP BY session_id
) AS s
GROUP BY 1,2
account_session_facts.view.lkml · 62 lines
inferred
view: account_session_facts {
derived_table: {
sql: SELECT
s.account AS account
, s.install AS install
, SUM(TIMESTAMPDIFF(minute, s.first_event, s.last_event)) AS lifetime_duration_min
, COUNT(*) AS lifetime_sessions
FROM
(
SELECT
ss.play_session AS session_id
, ss.account AS account
, ss.install AS install
, MIN(ss.time_utc) AS first_event
, MAX(ss.time_utc) AS last_event
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-06-01'
GROUP BY session_id
) AS s
GROUP BY 1,2 ;;
}
dimension: install {
primary_key: yes
}
dimension: account {
}
dimension: lifetime_duration_min {
type: int
}
dimension: lifetime_duration_min_tier {
type: tier
sql: ${lifetime_duration_min} ;;
}
dimension: lifetime_sessions {
type: int
}
dimension: lifetime_sessions_tier {
type: tier
sql: ${lifetime_sessions} ;;
}
dimension: avg_session_duration_min {
type: number
sql: CAST(${lifetime_duration_min}/NULLIF(${lifetime_sessions},0) AS DECIMAL(65,2)) ;;
}
dimension: avg_session_duration_min_tier {
type: tier
sql: ${avg_session_duration_min} ;;
}
measure: count {
type: count
}
}
account_session_facts.view.lookml · 43 lines
source-preserved
- view: account_session_facts
derived_table:
sql: SELECT
s.account AS account
, s.install AS install
, SUM(TIMESTAMPDIFF(minute, s.first_event, s.last_event)) AS lifetime_duration_min
, COUNT(*) AS lifetime_sessions
FROM
(
SELECT
ss.play_session AS session_id
, ss.account AS account
, ss.install AS install
, MIN(ss.time_utc) AS first_event
, MAX(ss.time_utc) AS last_event
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-06-01'
GROUP BY session_id
) AS s
GROUP BY 1,2
fields:
- dimension: install
primary_key: true
- dimension: account
- dimension: lifetime_duration_min
type: int
- dimension: lifetime_duration_min_tier
type: tier
sql: ${lifetime_duration_min}
- dimension: lifetime_sessions
type: int
- dimension: lifetime_sessions_tier
type: tier
sql: ${lifetime_sessions}
- dimension: avg_session_duration_min
type: number
sql: CAST(${lifetime_duration_min}/NULLIF(${lifetime_sessions},0) AS DECIMAL(65,2))
- dimension: avg_session_duration_min_tier
type: tier
sql: ${avg_session_duration_min}
- measure: count
type: count
Contents
- account_session_facts.sql
- account_session_facts.sql
- account_session_facts.view.lkml
- account_session_facts.view.lookml