dbt Car manufacture

Huser

Huser model for car manufacture.

inferred

Blocks

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

select * from (
  select
    huser.id,
    huser.uidpk,
    huser.status,
    huser.first_name,
    huser.middle_name,
    huser.last_name,
    cast(huser.birthday as timestamp) as birthday,
    huser.email,
    huser.mobile_phone_number,
    huser.password_hash,
    huser.created_at,
    huser.updated_at,
    huser.salutation,
    huser.title,
    RANK() over (PARTITION by uidpk order by updated_at) as rank
  from unite_db_stage_user.huser as huser) tmp
where rank=1

# models/schema.yml
version: 2

models:
  - name: huser
    columns:
      - name: id
        tests:
          - unique
          - not_null
      - name: birthday
      - name: email
      - name: first_name
      - name: last_name
      - name: middle_name
      - name: mobile_phone_number
      - name: password_hash
      - name: salutation
      - name: status
      - name: title
      - name: uidpk
      - name: age

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.
huser.sql · 19 lines
source-preserved validation: parses
select * from (
  select
    huser.id,
    huser.uidpk,
    huser.status,
    huser.first_name,
    huser.middle_name,
    huser.last_name,
    cast(huser.birthday as timestamp) as birthday,
    huser.email,
    huser.mobile_phone_number,
    huser.password_hash,
    huser.created_at,
    huser.updated_at,
    huser.salutation,
    huser.title,
    RANK() over (PARTITION by uidpk order by updated_at) as rank
  from unite_db_stage_user.huser as huser) tmp
where rank=1
huser.view.lkml · 98 lines
inferred
view: huser {
  derived_table: {
    sql: select * from (
  select
    huser.id,
    huser.uidpk,
    huser.status,
    huser.first_name,
    huser.middle_name,
    huser.last_name,
    cast(huser.birthday as timestamp) as birthday,
    huser.email,
    huser.mobile_phone_number,
    huser.password_hash,
    huser.created_at,
    huser.updated_at,
    huser.salutation,
    huser.title,
    RANK() over (PARTITION by uidpk order by updated_at) as rank
  from unite_db_stage_user.huser as huser) tmp
where rank=1 ;;
  }

  dimension: id {
    primary_key: yes
    sql: ${TABLE}.id ;;
  }

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

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

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

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

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

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

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

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

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

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

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

  dimension: age {
    sql: TIMESTAMPDIFF(SQL_TSI_YEAR, ${birthday}, curdate()) ;;
  }

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

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

  measure: count {
    type: count
    drill_fields: [id, first_name, middle_name, last_name]
  }

  measure: average_age {
    type: avg
    sql: ${age} ;;
  }
}
huser.view.lookml · 75 lines
source-preserved
- view: huser
  derived_table:
    sql: select * from (
  select
    huser.id,
    huser.uidpk,
    huser.status,
    huser.first_name,
    huser.middle_name,
    huser.last_name,
    cast(huser.birthday as timestamp) as birthday,
    huser.email,
    huser.mobile_phone_number,
    huser.password_hash,
    huser.created_at,
    huser.updated_at,
    huser.salutation,
    huser.title,
    RANK() over (PARTITION by uidpk order by updated_at) as rank
  from unite_db_stage_user.huser as huser) tmp
where rank=1
  fields:
  - dimension: id
    primary_key: true
    sql: ${TABLE}.id
  - dimension: birthday
    sql: ${TABLE}.birthday
  - dimension: email
    sql: ${TABLE}.email
  - dimension: first_name
    sql: ${TABLE}.first_name
  - dimension: last_name
    sql: ${TABLE}.last_name
  - dimension: middle_name
    sql: ${TABLE}.middle_name
  - dimension: mobile_phone_number
    sql: ${TABLE}.mobile_phone_number
  - dimension: password_hash
    sql: ${TABLE}.password_hash
  - dimension: salutation
    sql: ${TABLE}.salutation
  - dimension: status
    sql: ${TABLE}.status
  - dimension: title
    sql: ${TABLE}.title
  - dimension: uidpk
    sql: ${TABLE}.uidpk
  - dimension: age
    sql: TIMESTAMPDIFF(SQL_TSI_YEAR, ${birthday}, curdate())
  - dimension_group: created
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.created_at
  - dimension_group: updated
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.updated_at
  - measure: count
    type: count
    drill_fields:
    - id
    - first_name
    - middle_name
    - last_name
  - measure: average_age
    type: avg
    sql: ${age}

Contents

  • huser.sql
  • huser.sql
  • huser.view.lkml
  • huser.view.lookml