dbt Saas containerization

Daily Star Accumulation

Daily Star Accumulation model for saas containerization.

inferred

Blocks

daily_star_accumulation.sql · 62 lines
inferred
-- models/daily_star_accumulation.sql
{{ config(materialized='view') }}

select
  z.date_created as created,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_created rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    a.date_created,
    a.type,
    coalesce(b.count,0) as count
  from
  (
    select
      a.date_created,
      b.type
    from
      (select cast(created as date) as date_created from stars_star group by 1) as a,
      (select
        case
          when repository.is_private = 'yes'
          then 'Private'
          else 'Public'
        end as type
      from
        stars_star as star
      left join
        repository_table as repository
          on star.object_id = repository.id
      group by 1) as b
  ) as a
  left join
  (
    select
      cast(created as date) as date_created,
      case
        when repository.is_private = 'yes'
        then 'Private'
        else 'Public'
      end as type,
      count(*) as count
    from
      stars_star as star
    left join
      repository_table as repository
        on star.object_id = repository.id
    group by 1,2
  ) as b
    on a.date_created = b.date_created
    and a.type = b.type
) as z

# models/schema.yml
version: 2

models:
  - name: daily_star_accumulation
    columns:
      - name: created
      - name: type

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.
daily_star_accumulation.sql · 50 lines
source-preserved validation: parses
select
  z.date_created as created,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_created rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    a.date_created,
    a.type,
    coalesce(b.count,0) as count
  from
  (
    select
      a.date_created,
      b.type
    from
      (select cast(created as date) as date_created from stars_star group by 1) as a,
      (select
        case
          when repository.is_private = 'yes'
          then 'Private'
          else 'Public'
        end as type
      from
        stars_star as star
      left join
        repository_table as repository
          on star.object_id = repository.id
      group by 1) as b
  ) as a
  left join
  (
    select
      cast(created as date) as date_created,
      case
        when repository.is_private = 'yes'
        then 'Private'
        else 'Public'
      end as type,
      count(*) as count
    from
      stars_star as star
    left join
      repository_table as repository
        on star.object_id = repository.id
    group by 1,2
  ) as b
    on a.date_created = b.date_created
    and a.type = b.type
) as z
daily_star_accumulation.view.lkml · 68 lines
inferred
view: daily_star_accumulation {
  derived_table: {
    sql: select
  z.date_created as created,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_created rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    a.date_created,
    a.type,
    coalesce(b.count,0) as count
  from
  (
    select
      a.date_created,
      b.type
    from
      (select cast(created as date) as date_created from stars_star group by 1) as a,
      (select
        case
          when repository.is_private = 'yes'
          then 'Private'
          else 'Public'
        end as type
      from
        stars_star as star
      left join
        repository_table as repository
          on star.object_id = repository.id
      group by 1) as b
  ) as a
  left join
  (
    select
      cast(created as date) as date_created,
      case
        when repository.is_private = 'yes'
        then 'Private'
        else 'Public'
      end as type,
      count(*) as count
    from
      stars_star as star
    left join
      repository_table as repository
        on star.object_id = repository.id
    group by 1,2
  ) as b
    on a.date_created = b.date_created
    and a.type = b.type
) as z ;;
  }

  dimension: created {
    type: time
    sql: ${TABLE}.created ;;
  }

  dimension: type {
    sql: ${TABLE}.type ;;
  }

  measure: daily_accum_sum {
    type: sum
    sql: ${TABLE}.daily_accum_sum ;;
  }
}
daily_star_accumulation.view.lookml · 61 lines
source-preserved
- view: daily_star_accumulation
  derived_table:
    sql: select
  z.date_created as created,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_created rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    a.date_created,
    a.type,
    coalesce(b.count,0) as count
  from
  (
    select
      a.date_created,
      b.type
    from
      (select cast(created as date) as date_created from stars_star group by 1) as a,
      (select
        case
          when repository.is_private = 'yes'
          then 'Private'
          else 'Public'
        end as type
      from
        stars_star as star
      left join
        repository_table as repository
          on star.object_id = repository.id
      group by 1) as b
  ) as a
  left join
  (
    select
      cast(created as date) as date_created,
      case
        when repository.is_private = 'yes'
        then 'Private'
        else 'Public'
      end as type,
      count(*) as count
    from
      stars_star as star
    left join
      repository_table as repository
        on star.object_id = repository.id
    group by 1,2
  ) as b
    on a.date_created = b.date_created
    and a.type = b.type
) as z
  fields:
  - dimension: created
    type: time
    sql: ${TABLE}.created
  - dimension: type
    sql: ${TABLE}.type
  - measure: daily_accum_sum
    type: sum
    sql: ${TABLE}.daily_accum_sum

Contents

  • daily_star_accumulation.sql
  • daily_star_accumulation.sql
  • daily_star_accumulation.view.lkml
  • daily_star_accumulation.view.lookml