dbt Retail gastronomy

Payroll Check Weekly

Payroll Check Weekly model for retail gastronomy.

inferred

Blocks

payroll_check_weekly.sql · 33 lines
inferred
-- models/payroll_check_weekly.sql
{{ config(materialized='table') }}

SELECT
    f.department_key AS payroll_dept_key,
    d.IsoWeek AS iso_week,
    d.IsoYear AS iso_year,
    SUM(f.lineamount) AS amount,
    SUM(CASE WHEN isOT = 'Y' THEN linehours ELSE 0.0 END) AS ot_hours,
    SUM(CASE WHEN e.BkEarningsCode = 'VAC' THEN lineamount ELSE 0.0 END) AS vaca_amount,
    SUM(f.linehours) AS hours
FROM FactPayrollCheck f
INNER JOIN DimDate d
ON f.CheckDateKey = d.DateKey
INNER JOIN DimEarningsCode e
ON f.EarningsCodeKey = e.EarningsCodeKey
WHERE isEmployerCost = 'Y'
GROUP BY f.department_key, d.IsoWeek, d.IsoYear

# models/schema.yml
version: 2

models:
  - name: payroll_check_weekly
    columns:
      - name: payroll_dept_key
        tests:
          - unique
          - not_null
      - name: iso_week
      - name: iso_year
      - name: amount
      - name: hours

Assumptions

  • materialized='table' inferred from a LookML persist hint (persist_for / datagroup / sql_trigger_value).
  • schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
payroll_check_weekly.sql · 15 lines
source-preserved validation: parses
SELECT
    f.department_key AS payroll_dept_key,
    d.IsoWeek AS iso_week,
    d.IsoYear AS iso_year,
    SUM(f.lineamount) AS amount,
    SUM(CASE WHEN isOT = 'Y' THEN linehours ELSE 0.0 END) AS ot_hours,
    SUM(CASE WHEN e.BkEarningsCode = 'VAC' THEN lineamount ELSE 0.0 END) AS vaca_amount,
    SUM(f.linehours) AS hours
FROM FactPayrollCheck f
INNER JOIN DimDate d
ON f.CheckDateKey = d.DateKey
INNER JOIN DimEarningsCode e
ON f.EarningsCodeKey = e.EarningsCodeKey
WHERE isEmployerCost = 'Y'
GROUP BY f.department_key, d.IsoWeek, d.IsoYear
payroll_check_weekly.view.lkml · 72 lines
inferred
view: payroll_check_weekly {
  derived_table: {
    sql: SELECT
    f.department_key AS payroll_dept_key,
    d.IsoWeek AS iso_week,
    d.IsoYear AS iso_year,
    SUM(f.lineamount) AS amount,
    SUM(CASE WHEN isOT = 'Y' THEN linehours ELSE 0.0 END) AS ot_hours,
    SUM(CASE WHEN e.BkEarningsCode = 'VAC' THEN lineamount ELSE 0.0 END) AS vaca_amount,
    SUM(f.linehours) AS hours
FROM FactPayrollCheck f
INNER JOIN DimDate d
ON f.CheckDateKey = d.DateKey
INNER JOIN DimEarningsCode e
ON f.EarningsCodeKey = e.EarningsCodeKey
WHERE isEmployerCost = 'Y'
GROUP BY f.department_key, d.IsoWeek, d.IsoYear ;;
    persist_for: "24 hours"
  }

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

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

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

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

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

  measure: total_check_amount {
    type: sum
    sql: ${amount} ;;
  }

  measure: total_hours {
    type: sum
    sql: ${hours} ;;
  }

  measure: total_ot_hours {
    type: sum
    sql: ${TABLE}.ot_hours ;;
  }

  measure: total_vacation {
    type: sum
    sql: ${TABLE}.vaca_amount ;;
  }

  measure: labor_as_perc_of_sales {
    type: number
    value_format: "0.00%"
    sql: (${total_check_amount} / NULLIF(${sales_weekly.total_gross_amount},0)) ;;
  }
}
payroll_check_weekly.view.lookml · 51 lines
source-preserved
- view: payroll_check_weekly
  derived_table:
    sql: SELECT
    f.department_key AS payroll_dept_key,
    d.IsoWeek AS iso_week,
    d.IsoYear AS iso_year,
    SUM(f.lineamount) AS amount,
    SUM(CASE WHEN isOT = 'Y' THEN linehours ELSE 0.0 END) AS ot_hours,
    SUM(CASE WHEN e.BkEarningsCode = 'VAC' THEN lineamount ELSE 0.0 END) AS vaca_amount,
    SUM(f.linehours) AS hours
FROM FactPayrollCheck f
INNER JOIN DimDate d
ON f.CheckDateKey = d.DateKey
INNER JOIN DimEarningsCode e
ON f.EarningsCodeKey = e.EarningsCodeKey
WHERE isEmployerCost = 'Y'
GROUP BY f.department_key, d.IsoWeek, d.IsoYear
    persist_for: 24 hours
  fields:
  - dimension: payroll_dept_key
    type: int
    primary_key: true
    sql: ${TABLE}.payroll_dept_key
  - dimension: iso_week
    type: int
    sql: ${TABLE}.iso_week
  - dimension: iso_year
    type: int
    sql: ${TABLE}.iso_year
  - dimension: amount
    type: number
    sql: ${TABLE}.amount
  - dimension: hours
    type: number
    sql: ${TABLE}.hours
  - measure: total_check_amount
    type: sum
    sql: ${amount}
  - measure: total_hours
    type: sum
    sql: ${hours}
  - measure: total_ot_hours
    type: sum
    sql: ${TABLE}.ot_hours
  - measure: total_vacation
    type: sum
    sql: ${TABLE}.vaca_amount
  - measure: labor_as_perc_of_sales
    type: number
    value_format: '0.00%'
    sql: (${total_check_amount} / NULLIF(${sales_weekly.total_gross_amount},0))

Contents

  • payroll_check_weekly.sql
  • payroll_check_weekly.sql
  • payroll_check_weekly.view.lkml
  • payroll_check_weekly.view.lookml