dbt
Saas cicd
Plan Builds And Costs
Plan Builds And Costs model for saas cicd.
inferred
Blocks
plan_builds_and_costs.sql · 29 lines
inferred
-- models/plan_builds_and_costs.sql
{{ config(materialized='view') }}
select
plans.id as plan_id
, plans.org_name as org_name
, stripe.day as day
, stripe.discounted_amount as amount
, builds.container_seconds as container_seconds
from plans as plans
, {{ ref('org_plan_history_raw') }} as stripe
, {{ ref('plan_builds_day') }} as builds
where plans.id = builds.plan_id
and plans.org_name = stripe.org_name
and stripe.day = builds.day
# models/schema.yml
version: 2
models:
- name: plan_builds_and_costs
columns:
- name: org_name
- name: date
- name: amount
- name: container_seconds
- name: container_hours
- name: dollars
- name: dollars_container_hour
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.
plan_builds_and_costs.sql · 12 lines
source-preserved
validation: not checked
select
plans.id as plan_id
, plans.org_name as org_name
, stripe.day as day
, stripe.discounted_amount as amount
, builds.container_seconds as container_seconds
from plans as plans
, ${org_plan_history_raw.SQL_TABLE_NAME} as stripe
, ${plan_builds_day.SQL_TABLE_NAME} as builds
where plans.id = builds.plan_id
and plans.org_name = stripe.org_name
and stripe.day = builds.day
plan_builds_and_costs.view.lkml · 75 lines
inferred
view: plan_builds_and_costs {
derived_table: {
sql: select
plans.id as plan_id
, plans.org_name as org_name
, stripe.day as day
, stripe.discounted_amount as amount
, builds.container_seconds as container_seconds
from plans as plans
, ${org_plan_history_raw.SQL_TABLE_NAME} as stripe
, ${plan_builds_day.SQL_TABLE_NAME} as builds
where plans.id = builds.plan_id
and plans.org_name = stripe.org_name
and stripe.day = builds.day ;;
}
dimension: org_name {
sql: ${TABLE}.org_name ;;
}
dimension: date {
type: time
sql: ${TABLE}.day ;;
}
dimension: amount {
type: number
sql: ${TABLE}.amount ;;
}
dimension: container_seconds {
type: number
sql: ${TABLE}.container_seconds ;;
}
dimension: container_hours {
type: number
sql: ${TABLE}.container_seconds / 60 / 60 ;;
}
dimension: dollars {
type: number
sql: ${amount} ;;
}
dimension: dollars_container_hour {
type: number
sql: ${dollars} / NULLIF(${container_hours},0) ;;
}
measure: average_dollars_container_hour {
type: average
sql: ${dollars_container_hour} ;;
}
measure: average_container_hours {
type: average
sql: ${container_hours} ;;
}
measure: total_container_hours {
type: sum
sql: ${container_hours} ;;
}
measure: total_dollars {
type: sum
sql: ${dollars} ;;
}
measure: average_dollars {
type: average
sql: ${dollars} ;;
}
}
plan_builds_and_costs.view.lookml · 50 lines
source-preserved
- view: plan_builds_and_costs
derived_table:
sql: select
plans.id as plan_id
, plans.org_name as org_name
, stripe.day as day
, stripe.discounted_amount as amount
, builds.container_seconds as container_seconds
from plans as plans
, ${org_plan_history_raw.SQL_TABLE_NAME} as stripe
, ${plan_builds_day.SQL_TABLE_NAME} as builds
where plans.id = builds.plan_id
and plans.org_name = stripe.org_name
and stripe.day = builds.day
fields:
- dimension: org_name
sql: ${TABLE}.org_name
- dimension: date
type: time
sql: ${TABLE}.day
- dimension: amount
type: number
sql: ${TABLE}.amount
- dimension: container_seconds
type: number
sql: ${TABLE}.container_seconds
- dimension: container_hours
type: number
sql: ${TABLE}.container_seconds / 60 / 60
- dimension: dollars
type: number
sql: ${amount}
- dimension: dollars_container_hour
type: number
sql: ${dollars} / NULLIF(${container_hours},0)
- measure: average_dollars_container_hour
type: average
sql: ${dollars_container_hour}
- measure: average_container_hours
type: average
sql: ${container_hours}
- measure: total_container_hours
type: sum
sql: ${container_hours}
- measure: total_dollars
type: sum
sql: ${dollars}
- measure: average_dollars
type: average
sql: ${dollars}
Contents
- plan_builds_and_costs.sql
- plan_builds_and_costs.sql
- plan_builds_and_costs.view.lkml
- plan_builds_and_costs.view.lookml