SQL Subscription fitness

Classes

Classes model for subscription fitness.

source-preserved

Blocks

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

select cv.class_id,
       cv.venue_id,
       cv.class_name,
       cv.class_alias,
       cv.class_source,
       cv.entity_type,
       cv.published,
       cv.base_price,
       cv.sold_out_price,
       pv.created_on,
       pv.disabled,
       pv.spots,
       pv.feature_disabled,
       pv.reserved_spots
from activity_classes cv
  left join external_classes pv
    on cv.class_id = pv.class_id

# models/schema.yml
version: 2

models:
  - name: classes
    columns:
      - name: class_id
        tests:
          - unique
          - not_null
      - name: venue_id
      - name: class_name
      - name: published
      - name: disabled
      - name: spots
      - name: feature_disabled
      - name: reserved_spots

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.
classes.sql · 17 lines
source-preserved validation: parses
select cv.class_id,
       cv.venue_id,
       cv.class_name,
       cv.class_alias,
       cv.class_source,
       cv.entity_type,
       cv.published,
       cv.base_price,
       cv.sold_out_price,
       pv.created_on,
       pv.disabled,
       pv.spots,
       pv.feature_disabled,
       pv.reserved_spots
from activity_classes cv
  left join external_classes pv
    on cv.class_id = pv.class_id
classes.view.lkml · 64 lines
inferred
view: classes {
  derived_table: {
    sql: select cv.class_id,
       cv.venue_id,
       cv.class_name,
       cv.class_alias,
       cv.class_source,
       cv.entity_type,
       cv.published,
       cv.base_price,
       cv.sold_out_price,
       pv.created_on,
       pv.disabled,
       pv.spots,
       pv.feature_disabled,
       pv.reserved_spots
from activity_classes cv
  left join external_classes pv
    on cv.class_id = pv.class_id ;;
  }

  dimension: class_id {
    type: int
    primary_key: yes
    sql: ${TABLE}.class_id ;;
  }

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

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

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

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

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

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

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

  measure: count {
    type: count
  }
}
classes.view.lookml · 45 lines
source-preserved
- view: classes
  derived_table:
    sql: select cv.class_id,
       cv.venue_id,
       cv.class_name,
       cv.class_alias,
       cv.class_source,
       cv.entity_type,
       cv.published,
       cv.base_price,
       cv.sold_out_price,
       pv.created_on,
       pv.disabled,
       pv.spots,
       pv.feature_disabled,
       pv.reserved_spots
from activity_classes cv
  left join external_classes pv
    on cv.class_id = pv.class_id
  fields:
  - dimension: class_id
    type: int
    primary_key: true
    sql: ${TABLE}.class_id
  - dimension: venue_id
    type: int
    sql: ${TABLE}.venue_id
  - dimension: class_name
    sql: ${TABLE}.class_name
  - dimension: published
    type: yesno
    sql: ${TABLE}.published
  - dimension: disabled
    sql: ${TABLE}.disabled
  - dimension: spots
    type: int
    sql: ${TABLE}.spots
  - dimension: feature_disabled
    type: yesno
    sql: ${TABLE}.feature_disabled
  - dimension: reserved_spots
    type: int
    sql: ${TABLE}.reserved_spots
  - measure: count
    type: count

Contents

  • classes.sql
  • classes.sql
  • classes.view.lkml
  • classes.view.lookml