dbt Consulting it

Bookings Compare Weekly

Bookings Compare Weekly model for consulting it.

inferred

Blocks

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

SELECT
  COALESCE(dv.emp_id, ur.emp_id) AS employee_id,
  COALESCE(dv.proj_id, ur.proj_id) AS project_id,
  COALESCE(ur.year, dv.year) AS periodYear,
  COALESCE(ur.calendarweek, dv.calendarweek) AS periodWeekNum,
  dv.calendarweek AS booking_weeknum,
  ur.calendarweek AS actual_weeknum,
  ur.hours AS actual_hours,
  dv.sumOfBookings AS booking_hours,
  cal.datum AS mondayDate
 FROM
    (SELECT util.emp_id, util.proj_id, util.first_nm, util.last_nm, util.proj_nm, cal.year, cal.calendarweek, SUM(hours) AS hours
    FROM v_utilization_report util, t_calendar cal
    WHERE cal.datum = util.time_entry_dt
    GROUP BY emp_id, proj_id, first_nm, last_nm, proj_nm, cal.year, cal.calendarweek
    ) AS ur
 FULL OUTER JOIN
    (SELECT bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek, SUM(bookings.daily_projected_hours) AS sumOfBookings
    FROM v_bookings bookings INNER JOIN t_calendar cal
    ON (cal.datum = bookings.d_datum)
    GROUP BY bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek
    ) AS dv
 ON (ur.emp_id = dv.emp_id)
 AND (ur.proj_id = dv.proj_id)
 AND (ur.year = dv.year)
 AND (ur.calendarweek = dv.calendarweek)
 INNER JOIN (SELECT datum, year, calendarweek FROM t_calendar WHERE weekdayname = 'Monday') cal ON (COALESCE(ur.year, dv.year) = cal.year) AND (COALESCE(ur.calendarweek, dv.calendarweek) = cal.calendarweek)

# models/schema.yml
version: 2

models:
  - name: bookings_compare_weekly
    columns:
      - name: employee_id
      - name: project_id
      - name: periodYear
      - name: periodWeekNum
      - name: mondayDate
      - name: has_booking
      - name: has_actual
      - name: actual_hours
      - name: plugged_hours
      - name: has_variance
      - name: booking_hours

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.
bookings_compare_weekly.sql · 27 lines
source-preserved validation: parses
SELECT
  COALESCE(dv.emp_id, ur.emp_id) AS employee_id,
  COALESCE(dv.proj_id, ur.proj_id) AS project_id,
  COALESCE(ur.year, dv.year) AS periodYear,
  COALESCE(ur.calendarweek, dv.calendarweek) AS periodWeekNum,
  dv.calendarweek AS booking_weeknum,
  ur.calendarweek AS actual_weeknum,
  ur.hours AS actual_hours,
  dv.sumOfBookings AS booking_hours,
  cal.datum AS mondayDate
 FROM
    (SELECT util.emp_id, util.proj_id, util.first_nm, util.last_nm, util.proj_nm, cal.year, cal.calendarweek, SUM(hours) AS hours
    FROM v_utilization_report util, t_calendar cal
    WHERE cal.datum = util.time_entry_dt
    GROUP BY emp_id, proj_id, first_nm, last_nm, proj_nm, cal.year, cal.calendarweek
    ) AS ur
 FULL OUTER JOIN
    (SELECT bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek, SUM(bookings.daily_projected_hours) AS sumOfBookings
    FROM v_bookings bookings INNER JOIN t_calendar cal
    ON (cal.datum = bookings.d_datum)
    GROUP BY bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek
    ) AS dv
 ON (ur.emp_id = dv.emp_id)
 AND (ur.proj_id = dv.proj_id)
 AND (ur.year = dv.year)
 AND (ur.calendarweek = dv.calendarweek)
 INNER JOIN (SELECT datum, year, calendarweek FROM t_calendar WHERE weekdayname = 'Monday') cal ON (COALESCE(ur.year, dv.year) = cal.year) AND (COALESCE(ur.calendarweek, dv.calendarweek) = cal.calendarweek)
bookings_compare_weekly.view.lkml · 112 lines
inferred
view: bookings_compare_weekly {
  derived_table: {
    sql: SELECT
  COALESCE(dv.emp_id, ur.emp_id) AS employee_id,
  COALESCE(dv.proj_id, ur.proj_id) AS project_id,
  COALESCE(ur.year, dv.year) AS periodYear,
  COALESCE(ur.calendarweek, dv.calendarweek) AS periodWeekNum,
  dv.calendarweek AS booking_weeknum,
  ur.calendarweek AS actual_weeknum,
  ur.hours AS actual_hours,
  dv.sumOfBookings AS booking_hours,
  cal.datum AS mondayDate
 FROM
    (SELECT util.emp_id, util.proj_id, util.first_nm, util.last_nm, util.proj_nm, cal.year, cal.calendarweek, SUM(hours) AS hours
    FROM v_utilization_report util, t_calendar cal
    WHERE cal.datum = util.time_entry_dt
    GROUP BY emp_id, proj_id, first_nm, last_nm, proj_nm, cal.year, cal.calendarweek
    ) AS ur
 FULL OUTER JOIN
    (SELECT bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek, SUM(bookings.daily_projected_hours) AS sumOfBookings
    FROM v_bookings bookings INNER JOIN t_calendar cal
    ON (cal.datum = bookings.d_datum)
    GROUP BY bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek
    ) AS dv
 ON (ur.emp_id = dv.emp_id)
 AND (ur.proj_id = dv.proj_id)
 AND (ur.year = dv.year)
 AND (ur.calendarweek = dv.calendarweek)
 INNER JOIN (SELECT datum, year, calendarweek FROM t_calendar WHERE weekdayname = 'Monday') cal ON (COALESCE(ur.year, dv.year) = cal.year) AND (COALESCE(ur.calendarweek, dv.calendarweek) = cal.calendarweek) ;;
  }

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

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

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

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

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

  dimension: has_booking {
    type: yesno
    sql: ${TABLE}.booking_weeknum IS NOT NULL ;;
  }

  dimension: has_actual {
    type: yesno
    sql: ${TABLE}.actual_weeknum IS NOT NULL ;;
  }

  dimension: actual_hours {
    hidden: yes
    sql: COALESCE(${TABLE}.actual_hours, 0.0) ;;
  }

  dimension: plugged_hours {
    hidden: yes
    sql: COALESCE(${TABLE}.actual_hours, ${TABLE}.booking_hours, 0.0) ;;
  }

  dimension: has_variance {
    type: yesno
    sql: ${booking_hours} - ${actual_hours} <> 0 ;;
  }

  dimension: booking_hours {
    type: number
    hidden: yes
    sql: COALESCE(${TABLE}.booking_hours, 0.0) ;;
  }

  measure: total_booking_hours {
    type: sum
    sql: ${booking_hours} ;;
  }

  measure: total_actual_hours {
    type: sum
    sql: ${actual_hours} ;;
  }

  measure: total_plugged_hours {
    type: sum
    sql: ${plugged_hours} ;;
  }

  measure: total_variance {
    type: number
    sql: ${total_booking_hours} - ${total_actual_hours} ;;
  }

  measure: percent_variance {
    type: number
    sql: 100.0 * ${total_variance} / ${total_booking_hours} ;;
  }
}
bookings_compare_weekly.view.lookml · 79 lines
source-preserved
- view: bookings_compare_weekly
  derived_table:
    sql: SELECT
  COALESCE(dv.emp_id, ur.emp_id) AS employee_id,
  COALESCE(dv.proj_id, ur.proj_id) AS project_id,
  COALESCE(ur.year, dv.year) AS periodYear,
  COALESCE(ur.calendarweek, dv.calendarweek) AS periodWeekNum,
  dv.calendarweek AS booking_weeknum,
  ur.calendarweek AS actual_weeknum,
  ur.hours AS actual_hours,
  dv.sumOfBookings AS booking_hours,
  cal.datum AS mondayDate
 FROM
    (SELECT util.emp_id, util.proj_id, util.first_nm, util.last_nm, util.proj_nm, cal.year, cal.calendarweek, SUM(hours) AS hours
    FROM v_utilization_report util, t_calendar cal
    WHERE cal.datum = util.time_entry_dt
    GROUP BY emp_id, proj_id, first_nm, last_nm, proj_nm, cal.year, cal.calendarweek
    ) AS ur
 FULL OUTER JOIN
    (SELECT bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek, SUM(bookings.daily_projected_hours) AS sumOfBookings
    FROM v_bookings bookings INNER JOIN t_calendar cal
    ON (cal.datum = bookings.d_datum)
    GROUP BY bookings.emp_id, bookings.proj_id, cal.year, cal.calendarweek
    ) AS dv
 ON (ur.emp_id = dv.emp_id)
 AND (ur.proj_id = dv.proj_id)
 AND (ur.year = dv.year)
 AND (ur.calendarweek = dv.calendarweek)
 INNER JOIN (SELECT datum, year, calendarweek FROM t_calendar WHERE weekdayname = 'Monday') cal ON (COALESCE(ur.year, dv.year) = cal.year) AND (COALESCE(ur.calendarweek, dv.calendarweek) = cal.calendarweek)
  fields:
  - dimension: employee_id
    type: int
    sql: ${TABLE}.employee_id
  - dimension: project_id
    type: int
    sql: ${TABLE}.project_id
  - dimension: periodYear
    type: int
    sql: ${TABLE}.periodYear
  - dimension: periodWeekNum
    type: int
    sql: ${TABLE}.periodWeekNum
  - dimension: mondayDate
    type: time
    sql: ${TABLE}.mondayDate
  - dimension: has_booking
    type: yesno
    sql: ${TABLE}.booking_weeknum IS NOT NULL
  - dimension: has_actual
    type: yesno
    sql: ${TABLE}.actual_weeknum IS NOT NULL
  - dimension: actual_hours
    hidden: true
    sql: COALESCE(${TABLE}.actual_hours, 0.0)
  - dimension: plugged_hours
    hidden: true
    sql: COALESCE(${TABLE}.actual_hours, ${TABLE}.booking_hours, 0.0)
  - dimension: has_variance
    type: yesno
    sql: ${booking_hours} - ${actual_hours} <> 0
  - dimension: booking_hours
    type: number
    hidden: true
    sql: COALESCE(${TABLE}.booking_hours, 0.0)
  - measure: total_booking_hours
    type: sum
    sql: ${booking_hours}
  - measure: total_actual_hours
    type: sum
    sql: ${actual_hours}
  - measure: total_plugged_hours
    type: sum
    sql: ${plugged_hours}
  - measure: total_variance
    type: number
    sql: ${total_booking_hours} - ${total_actual_hours}
  - measure: percent_variance
    type: number
    sql: 100.0 * ${total_variance} / ${total_booking_hours}

Contents

  • bookings_compare_weekly.sql
  • bookings_compare_weekly.sql
  • bookings_compare_weekly.view.lkml
  • bookings_compare_weekly.view.lookml