dbt Crowdfunding platform

Dt S Contribution User

Dt S Contribution User model for crowdfunding platform.

inferred

Blocks

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

select
  a.id,
  a.user_id,
  b.user_id as admin_id,
  a.api_user_id as contrib_api_user_id,
  b.api_user_id as admin_api_user_id,
  a.campaign_id,
  a.creation_date,
  a.charge_date,
  a.status,
  amount/100 as amount
from contributions a
join campaigns b
on a.campaign_id = b.id
where a.status in ('postauth_accepted', 'postauth_approved', 'sale_approved', 'credit_released', 'preauth_approved')

# models/schema.yml
version: 2

models:
  - name: dt_s_contribution_user
    columns:
      - name: user_id
      - name: admin_id
      - name: id
      - name: campaign_id
      - name: contrib_api_user_id
      - name: admin_api_user_id
      - name: status

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.
dt_s_contribution_user.sql · 15 lines
source-preserved validation: parses
select
  a.id,
  a.user_id,
  b.user_id as admin_id,
  a.api_user_id as contrib_api_user_id,
  b.api_user_id as admin_api_user_id,
  a.campaign_id,
  a.creation_date,
  a.charge_date,
  a.status,
  amount/100 as amount
from contributions a
join campaigns b
on a.campaign_id = b.id
where a.status in ('postauth_accepted', 'postauth_approved', 'sale_approved', 'credit_released', 'preauth_approved')
dt_s_contribution_user.view.lkml · 72 lines
inferred
view: dt_s_contribution_user {
  derived_table: {
    sql: select
  a.id,
  a.user_id,
  b.user_id as admin_id,
  a.api_user_id as contrib_api_user_id,
  b.api_user_id as admin_api_user_id,
  a.campaign_id,
  a.creation_date,
  a.charge_date,
  a.status,
  amount/100 as amount
from contributions a
join campaigns b
on a.campaign_id = b.id
where a.status in ('postauth_accepted', 'postauth_approved', 'sale_approved', 'credit_released', 'preauth_approved') ;;
  }

  dimension: user_id {
  }

  dimension: admin_id {
  }

  dimension: id {
  }

  dimension: campaign_id {
  }

  dimension: contrib_api_user_id {
  }

  dimension: admin_api_user_id {
  }

  dimension: status {
  }

  dimension_group: creation_date {
    type: time
    timeframes: [date, week, month]
    sql: ${TABLE}.creation_date ;;
  }

  dimension_group: charge_date {
    type: time
    timeframes: [date, week, month]
    sql: ${TABLE}.charge_date ;;
  }

  measure: count_contributors {
    type: count_distinct
    sql: ${TABLE}.user_id ;;
  }

  measure: count_admins {
    type: count_distinct
    sql: ${TABLE}.admin_id ;;
  }

  measure: count_campaigns {
    type: count_distinct
    sql: ${TABLE}.campaign_id ;;
  }

  measure: amount {
    type: sum
    sql: ${TABLE}.amount ;;
  }
}
dt_s_contribution_user.view.lookml · 51 lines
source-preserved
- view: dt_s_contribution_user
  derived_table:
    sql: select
  a.id,
  a.user_id,
  b.user_id as admin_id,
  a.api_user_id as contrib_api_user_id,
  b.api_user_id as admin_api_user_id,
  a.campaign_id,
  a.creation_date,
  a.charge_date,
  a.status,
  amount/100 as amount
from contributions a
join campaigns b
on a.campaign_id = b.id
where a.status in ('postauth_accepted', 'postauth_approved', 'sale_approved', 'credit_released', 'preauth_approved')
  fields:
  - dimension: user_id
  - dimension: admin_id
  - dimension: id
  - dimension: campaign_id
  - dimension: contrib_api_user_id
  - dimension: admin_api_user_id
  - dimension: status
  - dimension_group: creation_date
    type: time
    timeframes:
    - date
    - week
    - month
    sql: ${TABLE}.creation_date
  - dimension_group: charge_date
    type: time
    timeframes:
    - date
    - week
    - month
    sql: ${TABLE}.charge_date
  - measure: count_contributors
    type: count_distinct
    sql: ${TABLE}.user_id
  - measure: count_admins
    type: count_distinct
    sql: ${TABLE}.admin_id
  - measure: count_campaigns
    type: count_distinct
    sql: ${TABLE}.campaign_id
  - measure: amount
    type: sum
    sql: ${TABLE}.amount

Contents

  • dt_s_contribution_user.sql
  • dt_s_contribution_user.sql
  • dt_s_contribution_user.view.lkml
  • dt_s_contribution_user.view.lookml