SQL Saas containerization

Daily Repo Accumulation

Daily Repo Accumulation model for saas containerization.

source-preserved

Blocks

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

select
  z.date_registered as registered,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_registered rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    cast(date_registered as date) as date_registered,
    case
      when is_private = 'yes'
      then 'Private'
      else 'Public'
    end as type,
    count(*) as count
  from
    repository_table
  where
    status = 1
  group by 1,2
) as z

# models/schema.yml
version: 2

models:
  - name: daily_repo_accumulation
    columns:
      - name: registered
      - 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_repo_accumulation.sql · 20 lines
source-preserved validation: parses
select
  z.date_registered as registered,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_registered rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    cast(date_registered as date) as date_registered,
    case
      when is_private = 'yes'
      then 'Private'
      else 'Public'
    end as type,
    count(*) as count
  from
    repository_table
  where
    status = 1
  group by 1,2
) as z
daily_repo_accumulation.view.lkml · 38 lines
inferred
view: daily_repo_accumulation {
  derived_table: {
    sql: select
  z.date_registered as registered,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_registered rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    cast(date_registered as date) as date_registered,
    case
      when is_private = 'yes'
      then 'Private'
      else 'Public'
    end as type,
    count(*) as count
  from
    repository_table
  where
    status = 1
  group by 1,2
) as z ;;
  }

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

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

  measure: daily_accum_sum {
    type: sum
    sql: ${TABLE}.daily_accum_sum ;;
  }
}
daily_repo_accumulation.view.lookml · 31 lines
source-preserved
- view: daily_repo_accumulation
  derived_table:
    sql: select
  z.date_registered as registered,
  z.type,
  sum(z.count) over (partition by z.type order by z.date_registered rows between unbounded preceding and current row) as daily_accum_sum
from
(
  select
    cast(date_registered as date) as date_registered,
    case
      when is_private = 'yes'
      then 'Private'
      else 'Public'
    end as type,
    count(*) as count
  from
    repository_table
  where
    status = 1
  group by 1,2
) as z
  fields:
  - dimension: registered
    type: time
    sql: ${TABLE}.registered
  - dimension: type
    sql: ${TABLE}.type
  - measure: daily_accum_sum
    type: sum
    sql: ${TABLE}.daily_accum_sum

Contents

  • daily_repo_accumulation.sql
  • daily_repo_accumulation.sql
  • daily_repo_accumulation.view.lkml
  • daily_repo_accumulation.view.lookml