SQL
Entertainment tech
Account Event Facts
Account Event Facts model for entertainment tech.
source-preserved
Blocks
account_event_facts.sql · 126 lines
inferred
-- models/account_event_facts.sql
{{ config(materialized='view') }}
SELECT
ss.install AS visitor_id
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Doctor Of The Heart', 'E01 Baby Bird Short', 'E01 Space', 'Mouse and Cheese', 'Winston Sly - This Little Piggy')
THEN 1
ELSE 0
END
) AS e1_events
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Crayons Short', 'E01 Lion v Zebra', 'E02 Intro - Let\'s be Friends', 'E02 Space Quest', 'Enchanted Forest', 'Winston Sly Trouble\'s Brewin')
THEN 1
ELSE 0
END
) AS e2_events
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os_version'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os_version
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$manufacturer'
THEN ss.statistic_value
ELSE NULL
END
) AS first_manufacturer
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$app_release'
THEN ss.statistic_value
ELSE NULL
END
) AS first_app_release
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_SHOWN'
THEN ss.time_utc
ELSE NULL
END
) AS signup_started
, MIN(
CASE
WHEN ss.category = 'PLAY_SCREEN_ENTRY'
THEN ss.time_utc
ELSE NULL
END
) AS first_entered
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete_tap
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION' AND ss.statistic_value = 'SUCCESS'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CONSENT_DONE_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS consent_old
, MIN(
CASE
WHEN ss.category = 'APP_OPENED' AND ss.account IS NULL
THEN ss.time_utc
ELSE NULL
END
) AS first_open
, (
SELECT ss1.account
FROM statistic_string AS ss1
WHERE ss.install = ss1.install
AND ss1.account IS NOT NULL
ORDER BY ss1.time_utc ASC
LIMIT 1) AS account_id
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-07-01'
GROUP BY visitor_id
# models/schema.yml
version: 2
models:
- name: account_event_facts
columns:
- name: visitor_id
tests:
- unique
- not_null
- name: has_complete_e1
- name: has_complete_e2
- name: account_id
- name: first_os_version
- name: first_major_os_version
- name: first_manufacturer
- name: first_os
- name: first_app_release
- name: days_since_activation
- name: days_since_activation_tier
- name: history
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_event_facts.sql · 101 lines
source-preserved
validation: parses
SELECT
ss.install AS visitor_id
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Doctor Of The Heart', 'E01 Baby Bird Short', 'E01 Space', 'Mouse and Cheese', 'Winston Sly - This Little Piggy')
THEN 1
ELSE 0
END
) AS e1_events
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Crayons Short', 'E01 Lion v Zebra', 'E02 Intro - Let\'s be Friends', 'E02 Space Quest', 'Enchanted Forest', 'Winston Sly Trouble\'s Brewin')
THEN 1
ELSE 0
END
) AS e2_events
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os_version'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os_version
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$manufacturer'
THEN ss.statistic_value
ELSE NULL
END
) AS first_manufacturer
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$app_release'
THEN ss.statistic_value
ELSE NULL
END
) AS first_app_release
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_SHOWN'
THEN ss.time_utc
ELSE NULL
END
) AS signup_started
, MIN(
CASE
WHEN ss.category = 'PLAY_SCREEN_ENTRY'
THEN ss.time_utc
ELSE NULL
END
) AS first_entered
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete_tap
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION' AND ss.statistic_value = 'SUCCESS'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CONSENT_DONE_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS consent_old
, MIN(
CASE
WHEN ss.category = 'APP_OPENED' AND ss.account IS NULL
THEN ss.time_utc
ELSE NULL
END
) AS first_open
, (
SELECT ss1.account
FROM statistic_string AS ss1
WHERE ss.install = ss1.install
AND ss1.account IS NOT NULL
ORDER BY ss1.time_utc ASC
LIMIT 1) AS account_id
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-07-01'
GROUP BY visitor_id
account_event_facts.view.lkml · 257 lines
inferred
view: account_event_facts {
derived_table: {
sql: SELECT
ss.install AS visitor_id
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Doctor Of The Heart', 'E01 Baby Bird Short', 'E01 Space', 'Mouse and Cheese', 'Winston Sly - This Little Piggy')
THEN 1
ELSE 0
END
) AS e1_events
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Crayons Short', 'E01 Lion v Zebra', 'E02 Intro - Let\'s be Friends', 'E02 Space Quest', 'Enchanted Forest', 'Winston Sly Trouble\'s Brewin')
THEN 1
ELSE 0
END
) AS e2_events
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os_version'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os_version
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$manufacturer'
THEN ss.statistic_value
ELSE NULL
END
) AS first_manufacturer
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$app_release'
THEN ss.statistic_value
ELSE NULL
END
) AS first_app_release
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_SHOWN'
THEN ss.time_utc
ELSE NULL
END
) AS signup_started
, MIN(
CASE
WHEN ss.category = 'PLAY_SCREEN_ENTRY'
THEN ss.time_utc
ELSE NULL
END
) AS first_entered
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete_tap
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION' AND ss.statistic_value = 'SUCCESS'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CONSENT_DONE_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS consent_old
, MIN(
CASE
WHEN ss.category = 'APP_OPENED' AND ss.account IS NULL
THEN ss.time_utc
ELSE NULL
END
) AS first_open
, (
SELECT ss1.account
FROM statistic_string AS ss1
WHERE ss.install = ss1.install
AND ss1.account IS NOT NULL
ORDER BY ss1.time_utc ASC
LIMIT 1) AS account_id
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-07-01'
GROUP BY visitor_id ;;
}
dimension: visitor_id {
primary_key: yes
}
dimension: has_complete_e1 {
type: yesno
sql: ${TABLE}.e1_events > 0 ;;
}
dimension: has_complete_e2 {
type: yesno
sql: ${TABLE}.e2_events > 0 ;;
}
dimension: account_id {
}
dimension: first_os_version {
}
dimension: first_major_os_version {
sql: SUBSTRING_INDEX(${first_os_version},'.',1) ;;
}
dimension: first_manufacturer {
}
dimension: first_os {
}
dimension: first_app_release {
}
dimension: days_since_activation {
type: int
sql: DATEDIFF(CURRENT_DATE,${consent_date}) ;;
}
dimension: days_since_activation_tier {
type: tier
sql: ${days_since_activation} ;;
}
dimension: history {
sql: ${visitor_id} ;;
}
dimension_group: first_open {
type: time
timeframes: [yesno, time, date, week, month]
}
dimension_group: signup_complete_tap {
type: time
timeframes: [yesno, time, date, week, month]
}
dimension_group: signup_started {
type: time
timeframes: [yesno, time, date, week, month]
}
dimension_group: signup_complete {
type: time
timeframes: [yesno, time, date, week, month]
}
dimension_group: consent {
type: time
timeframes: [yesno, time, date, week, month]
sql: ${account_details.consent_received_time} ;;
}
dimension_group: first_entered {
type: time
timeframes: [yesno, time, date, week, month]
}
measure: account.count {
type: count
}
measure: account.percent_of_total {
type: percent_of_total
sql: ${account.count} ;;
}
measure: account.opened_count {
type: count
filters: [first_open: "True"]
}
measure: account.entered_opened_percent {
type: number
sql: 100.0 * ${account.opened_count}/${account.entered_count} ;;
}
measure: account.signup_started_count {
type: count
filters: [signup_started: "True"]
}
measure: account.opened_started_percent {
type: number
sql: 100.0 * ${account.signup_started_count}/${account.opened_count} ;;
}
measure: account.signup_complete_count {
type: count
filters: [signup_complete: "True"]
}
measure: account.started_complete_tap_percent {
type: number
sql: 100.0 * ${account.signup_complete_tap_count}/${account.signup_started_count} ;;
}
measure: account.consent_count {
type: count
filters: [consent: "True"]
}
measure: account.complete_tap_completed_percent {
type: number
sql: 100.0 * ${account.signup_complete_count}/${account.signup_complete_tap_count} ;;
}
measure: account.signup_complete_tap_count {
type: count
filters: [signup_complete_tap: "True"]
}
measure: account.complete_consent_percent {
type: number
sql: 100.0 * ${account.consent_count}/${account.signup_complete_count} ;;
}
measure: account.entered_count {
type: count
filters: [first_entered: "True"]
}
measure: account.opened_app_to_consent_percent {
type: number
sql: 100.0 * ${account.consent_count}/${account.entered_count} ;;
}
measure: account.opened_app_to_created_percent {
type: number
sql: 100.0 * ${account.signup_complete_count}/${account.entered_count} ;;
}
}
account_event_facts.view.lookml · 226 lines
source-preserved
- view: account_event_facts
derived_table:
sql: SELECT
ss.install AS visitor_id
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Doctor Of The Heart', 'E01 Baby Bird Short', 'E01 Space', 'Mouse and Cheese', 'Winston Sly - This Little Piggy')
THEN 1
ELSE 0
END
) AS e1_events
, SUM(
CASE
WHEN ss.category ='ACTIVITY_COMPLETED'
AND ss.statistic_type ='CURRENT_ACTIVITY_NAME'
AND ss.statistic_value IN ('Crayons Short', 'E01 Lion v Zebra', 'E02 Intro - Let\'s be Friends', 'E02 Space Quest', 'Enchanted Forest', 'Winston Sly Trouble\'s Brewin')
THEN 1
ELSE 0
END
) AS e2_events
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os_version'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os_version
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$manufacturer'
THEN ss.statistic_value
ELSE NULL
END
) AS first_manufacturer
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$os'
THEN ss.statistic_value
ELSE NULL
END
) AS first_os
, MIN(
CASE
WHEN ss.account IS NULL AND ss.sequence = 0 AND ss.statistic_type = '$app_release'
THEN ss.statistic_value
ELSE NULL
END
) AS first_app_release
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_SHOWN'
THEN ss.time_utc
ELSE NULL
END
) AS signup_started
, MIN(
CASE
WHEN ss.category = 'PLAY_SCREEN_ENTRY'
THEN ss.time_utc
ELSE NULL
END
) AS first_entered
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete_tap
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CREATION' AND ss.statistic_value = 'SUCCESS'
THEN ss.time_utc
ELSE NULL
END
) AS signup_complete
, MIN(
CASE
WHEN ss.category = 'ACCOUNT_CONSENT_DONE_PRESSED'
THEN ss.time_utc
ELSE NULL
END
) AS consent_old
, MIN(
CASE
WHEN ss.category = 'APP_OPENED' AND ss.account IS NULL
THEN ss.time_utc
ELSE NULL
END
) AS first_open
, (
SELECT ss1.account
FROM statistic_string AS ss1
WHERE ss.install = ss1.install
AND ss1.account IS NOT NULL
ORDER BY ss1.time_utc ASC
LIMIT 1) AS account_id
FROM statistic_string AS ss
WHERE ss.application IN ('ShowName', 'TheShowName')
AND ss.time_utc > '2013-07-01'
GROUP BY visitor_id
fields:
- dimension: visitor_id
primary_key: true
- dimension: has_complete_e1
type: yesno
sql: ${TABLE}.e1_events > 0
- dimension: has_complete_e2
type: yesno
sql: ${TABLE}.e2_events > 0
- dimension: account_id
- dimension: first_os_version
- dimension: first_major_os_version
sql: SUBSTRING_INDEX(${first_os_version},'.',1)
- dimension: first_manufacturer
- dimension: first_os
- dimension: first_app_release
- dimension: days_since_activation
type: int
sql: DATEDIFF(CURRENT_DATE,${consent_date})
- dimension: days_since_activation_tier
type: tier
sql: ${days_since_activation}
- dimension: history
sql: ${visitor_id}
- dimension_group: first_open
type: time
timeframes:
- yesno
- time
- date
- week
- month
- dimension_group: signup_complete_tap
type: time
timeframes:
- yesno
- time
- date
- week
- month
- dimension_group: signup_started
type: time
timeframes:
- yesno
- time
- date
- week
- month
- dimension_group: signup_complete
type: time
timeframes:
- yesno
- time
- date
- week
- month
- dimension_group: consent
type: time
timeframes:
- yesno
- time
- date
- week
- month
sql: ${account_details.consent_received_time}
- dimension_group: first_entered
type: time
timeframes:
- yesno
- time
- date
- week
- month
- measure: account.count
type: count
- measure: account.percent_of_total
type: percent_of_total
sql: ${account.count}
- measure: account.opened_count
type: count
filters:
- first_open: True
- measure: account.entered_opened_percent
type: number
sql: 100.0 * ${account.opened_count}/${account.entered_count}
- measure: account.signup_started_count
type: count
filters:
- signup_started: True
- measure: account.opened_started_percent
type: number
sql: 100.0 * ${account.signup_started_count}/${account.opened_count}
- measure: account.signup_complete_count
type: count
filters:
- signup_complete: True
- measure: account.started_complete_tap_percent
type: number
sql: 100.0 * ${account.signup_complete_tap_count}/${account.signup_started_count}
- measure: account.consent_count
type: count
filters:
- consent: True
- measure: account.complete_tap_completed_percent
type: number
sql: 100.0 * ${account.signup_complete_count}/${account.signup_complete_tap_count}
- measure: account.signup_complete_tap_count
type: count
filters:
- signup_complete_tap: True
- measure: account.complete_consent_percent
type: number
sql: 100.0 * ${account.consent_count}/${account.signup_complete_count}
- measure: account.entered_count
type: count
filters:
- first_entered: True
- measure: account.opened_app_to_consent_percent
type: number
sql: 100.0 * ${account.consent_count}/${account.entered_count}
- measure: account.opened_app_to_created_percent
type: number
sql: 100.0 * ${account.signup_complete_count}/${account.entered_count}
Contents
- account_event_facts.sql
- account_event_facts.sql
- account_event_facts.view.lkml
- account_event_facts.view.lookml