dbt
Saas cloud infrastructure
Users By Num Slaves Num Frameworks
Users By Num Slaves Num Frameworks model for saas cloud infrastructure.
inferred
Blocks
users_by_num_slaves_num_frameworks.sql · 35 lines
inferred
-- models/users_by_num_slaves_num_frameworks.sql
{{ config(materialized='view') }}
select
max(cs.external_elb) as external_elb
, max(num_slaves) as num_slaves
, max(num_frameworks) as num_frameworks
, max(cs.user_id) as user_id
, count(distinct ss.user_id) as num_users
, max(cs.cluster_name) as cluster_name
, max(cs.sent_at) as last_heartbeat
, min(cs.sent_at) as first_heartbeat
from dcos.cluster_summary as cs
left outer join dcos.stint_started as ss
on lower(cs.external_elb) = lower(ss.external_elb)
where cs.external_elb is not null
and aws_stack_id not like '<% aws_stack_id_placeholder1 %>'
and aws_stack_id not like '<% aws_stack_id_placeholder2 %>'
group by cs.external_elb
order by max(num_slaves) desc
# models/schema.yml
version: 2
models:
- name: users_by_num_slaves_num_frameworks
columns:
- name: is_active
- name: num_slaves
- name: num_frameworks
- name: user_id
- name: cluster_name
- name: num_users
- name: age_in_hours
- name: age_in_hours_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.
users_by_num_slaves_num_frameworks.sql · 17 lines
source-preserved
validation: not checked
select
max(cs.external_elb) as external_elb
, max(num_slaves) as num_slaves
, max(num_frameworks) as num_frameworks
, max(cs.user_id) as user_id
, count(distinct ss.user_id) as num_users
, max(cs.cluster_name) as cluster_name
, max(cs.sent_at) as last_heartbeat
, min(cs.sent_at) as first_heartbeat
from dcos.cluster_summary as cs
left outer join dcos.stint_started as ss
on lower(cs.external_elb) = lower(ss.external_elb)
where cs.external_elb is not null
and aws_stack_id not like '<% aws_stack_id_placeholder1 %>'
and aws_stack_id not like '<% aws_stack_id_placeholder2 %>'
group by cs.external_elb
order by max(num_slaves) desc
users_by_num_slaves_num_frameworks.view.lkml · 85 lines
inferred
view: users_by_num_slaves_num_frameworks {
derived_table: {
sql: select
max(cs.external_elb) as external_elb
, max(num_slaves) as num_slaves
, max(num_frameworks) as num_frameworks
, max(cs.user_id) as user_id
, count(distinct ss.user_id) as num_users
, max(cs.cluster_name) as cluster_name
, max(cs.sent_at) as last_heartbeat
, min(cs.sent_at) as first_heartbeat
from dcos.cluster_summary as cs
left outer join dcos.stint_started as ss
on lower(cs.external_elb) = lower(ss.external_elb)
where cs.external_elb is not null
and aws_stack_id not like '<% aws_stack_id_placeholder1 %>'
and aws_stack_id not like '<% aws_stack_id_placeholder2 %>'
group by cs.external_elb
order by max(num_slaves) desc ;;
}
dimension: is_active {
type: yesno
sql: ${TABLE}.last_heartbeat >= (DATEADD(hour,-4, DATE_TRUNC('hour', GETDATE()) )) ;;
}
dimension: num_slaves {
type: number
sql: ${TABLE}.num_slaves ;;
}
dimension: num_frameworks {
type: number
sql: ${TABLE}.num_frameworks ;;
}
dimension: user_id {
sql: ${TABLE}.user_id ;;
}
dimension: cluster_name {
sql: ${TABLE}.cluster_name ;;
}
dimension: num_users {
sql: ${TABLE}.num_users ;;
}
dimension: age_in_hours {
type: number
sql: datediff(hour, ${TABLE}.first_heartbeat, ${TABLE}.last_heartbeat) ;;
}
dimension: age_in_hours_tier {
type: tier
sql: ${age_in_hours} ;;
}
dimension_group: first_heartbeat {
type: time
timeframes: [hour, date, week, month]
sql: ${TABLE}.first_heartbeat ;;
}
dimension_group: last_heartbeat {
type: time
timeframes: [hour, date, week, month]
sql: ${TABLE}.last_heartbeat ;;
}
measure: count {
type: count
drill_fields: [detail*]
}
measure: sum_of_slaves {
type: sum
sql: ${num_slaves} ;;
}
measure: sum_of_users {
type: sum
sql: ${num_users} ;;
}
}
users_by_num_slaves_num_frameworks.view.lookml · 67 lines
source-preserved
- view: users_by_num_slaves_num_frameworks
derived_table:
sql: select
max(cs.external_elb) as external_elb
, max(num_slaves) as num_slaves
, max(num_frameworks) as num_frameworks
, max(cs.user_id) as user_id
, count(distinct ss.user_id) as num_users
, max(cs.cluster_name) as cluster_name
, max(cs.sent_at) as last_heartbeat
, min(cs.sent_at) as first_heartbeat
from dcos.cluster_summary as cs
left outer join dcos.stint_started as ss
on lower(cs.external_elb) = lower(ss.external_elb)
where cs.external_elb is not null
and aws_stack_id not like '<% aws_stack_id_placeholder1 %>'
and aws_stack_id not like '<% aws_stack_id_placeholder2 %>'
group by cs.external_elb
order by max(num_slaves) desc
fields:
- dimension: is_active
type: yesno
sql: ${TABLE}.last_heartbeat >= (DATEADD(hour,-4, DATE_TRUNC('hour', GETDATE()) ))
- dimension: num_slaves
type: number
sql: ${TABLE}.num_slaves
- dimension: num_frameworks
type: number
sql: ${TABLE}.num_frameworks
- dimension: user_id
sql: ${TABLE}.user_id
- dimension: cluster_name
sql: ${TABLE}.cluster_name
- dimension: num_users
sql: ${TABLE}.num_users
- dimension: age_in_hours
type: number
sql: datediff(hour, ${TABLE}.first_heartbeat, ${TABLE}.last_heartbeat)
- dimension: age_in_hours_tier
type: tier
sql: ${age_in_hours}
- dimension_group: first_heartbeat
type: time
timeframes:
- hour
- date
- week
- month
sql: ${TABLE}.first_heartbeat
- dimension_group: last_heartbeat
type: time
timeframes:
- hour
- date
- week
- month
sql: ${TABLE}.last_heartbeat
- measure: count
type: count
drill_fields:
- detail*
- measure: sum_of_slaves
type: sum
sql: ${num_slaves}
- measure: sum_of_users
type: sum
sql: ${num_users}
Contents
- users_by_num_slaves_num_frameworks.sql
- users_by_num_slaves_num_frameworks.sql
- users_by_num_slaves_num_frameworks.view.lkml
- users_by_num_slaves_num_frameworks.view.lookml