dbt Delivery service

Transport Ratings 2

Transport Ratings 2 model for delivery service.

inferred

Blocks

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

Select metros_id
      ,metro_name
      ,driver_rating_count
      ,((Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5) / driver_rating_count)  as driver_weighted_average_ratings
      ,(Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5)  as driver_weighted_total_ratings
      ,overall_rating_count
      ,((Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5) / overall_rating_count)  as overall_weighted_average_ratings
      ,(Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5)  as overall_weighted_total_ratings
      ,((NPS_Promoter - NPS_Detracter)/overall_rating_count) as Net_Promoter_Score
  From
    (Select
             metros.id as metros_id
            ,metros.name as metro_name
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 1 then 1 END),0) as Total_Driver_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 2 then 2 END),0) as Total_Driver_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 3 then 3 END),0) as Total_Driver_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 4 then 4 END),0) as Total_Driver_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 5 then 5 END),0) as Total_Driver_Rating_5
            ,Count(tr.driver_rating) as driver_rating_count
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 1 then 1 END),0) as Total_Overall_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 2 then 2 END),0) as Total_Overall_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 3 then 3 END),0) as Total_Overall_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 4 then 4 END),0) as Total_Overall_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 5 then 5 END),0) as Total_Overall_Rating_5
            ,Count(tr.overall_rating) as overall_rating_count
            ,IFNULL(SUM(CASE WHEN (tr.shipment_company_nps = 9 OR tr.shipment_company_nps = 10) THEN 1 END),0) as NPS_Promoter
            ,IFNULL(SUM(CASE WHEN tr.shipment_company_nps < 7 THEN 1 END),0) as NPS_Detracter
        FROM transport_ratings as tr
        LEFT JOIN shipment_companyeries
          ON shipment_companyeries.id = tr.transport_id
        LEFT JOIN orders
          ON shipment_companyeries.order_id = orders.id
        LEFT JOIN metros
          ON orders.metro_id=metros.id
      Where tr.id > 1940
      Group by 1,2
      ) a
 Group by 1,2

# models/schema.yml
version: 2

models:
  - name: transport_ratings_2
    columns:
      - name: metros_id
        tests:
          - unique
          - not_null
      - name: metro_name

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.
transport_ratings_2.sql · 38 lines
source-preserved validation: parses
Select metros_id
      ,metro_name
      ,driver_rating_count
      ,((Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5) / driver_rating_count)  as driver_weighted_average_ratings
      ,(Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5)  as driver_weighted_total_ratings
      ,overall_rating_count
      ,((Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5) / overall_rating_count)  as overall_weighted_average_ratings
      ,(Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5)  as overall_weighted_total_ratings
      ,((NPS_Promoter - NPS_Detracter)/overall_rating_count) as Net_Promoter_Score
  From
    (Select
             metros.id as metros_id
            ,metros.name as metro_name
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 1 then 1 END),0) as Total_Driver_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 2 then 2 END),0) as Total_Driver_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 3 then 3 END),0) as Total_Driver_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 4 then 4 END),0) as Total_Driver_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 5 then 5 END),0) as Total_Driver_Rating_5
            ,Count(tr.driver_rating) as driver_rating_count
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 1 then 1 END),0) as Total_Overall_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 2 then 2 END),0) as Total_Overall_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 3 then 3 END),0) as Total_Overall_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 4 then 4 END),0) as Total_Overall_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 5 then 5 END),0) as Total_Overall_Rating_5
            ,Count(tr.overall_rating) as overall_rating_count
            ,IFNULL(SUM(CASE WHEN (tr.shipment_company_nps = 9 OR tr.shipment_company_nps = 10) THEN 1 END),0) as NPS_Promoter
            ,IFNULL(SUM(CASE WHEN tr.shipment_company_nps < 7 THEN 1 END),0) as NPS_Detracter
        FROM transport_ratings as tr
        LEFT JOIN shipment_companyeries
          ON shipment_companyeries.id = tr.transport_id
        LEFT JOIN orders
          ON shipment_companyeries.order_id = orders.id
        LEFT JOIN metros
          ON orders.metro_id=metros.id
      Where tr.id > 1940
      Group by 1,2
      ) a
 Group by 1,2
transport_ratings_2.view.lkml · 85 lines
inferred
view: transport_ratings_2 {
  derived_table: {
    sql: Select metros_id
      ,metro_name
      ,driver_rating_count
      ,((Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5) / driver_rating_count)  as driver_weighted_average_ratings
      ,(Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5)  as driver_weighted_total_ratings
      ,overall_rating_count
      ,((Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5) / overall_rating_count)  as overall_weighted_average_ratings
      ,(Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5)  as overall_weighted_total_ratings
      ,((NPS_Promoter - NPS_Detracter)/overall_rating_count) as Net_Promoter_Score
  From
    (Select
             metros.id as metros_id
            ,metros.name as metro_name
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 1 then 1 END),0) as Total_Driver_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 2 then 2 END),0) as Total_Driver_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 3 then 3 END),0) as Total_Driver_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 4 then 4 END),0) as Total_Driver_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 5 then 5 END),0) as Total_Driver_Rating_5
            ,Count(tr.driver_rating) as driver_rating_count
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 1 then 1 END),0) as Total_Overall_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 2 then 2 END),0) as Total_Overall_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 3 then 3 END),0) as Total_Overall_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 4 then 4 END),0) as Total_Overall_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 5 then 5 END),0) as Total_Overall_Rating_5
            ,Count(tr.overall_rating) as overall_rating_count
            ,IFNULL(SUM(CASE WHEN (tr.shipment_company_nps = 9 OR tr.shipment_company_nps = 10) THEN 1 END),0) as NPS_Promoter
            ,IFNULL(SUM(CASE WHEN tr.shipment_company_nps < 7 THEN 1 END),0) as NPS_Detracter
        FROM transport_ratings as tr
        LEFT JOIN shipment_companyeries
          ON shipment_companyeries.id = tr.transport_id
        LEFT JOIN orders
          ON shipment_companyeries.order_id = orders.id
        LEFT JOIN metros
          ON orders.metro_id=metros.id
      Where tr.id > 1940
      Group by 1,2
      ) a
 Group by 1,2 ;;
  }

  dimension: metros_id {
    type: number
    primary_key: yes
    sql: ${TABLE}.metros_id ;;
  }

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

  measure: driver_rating_count {
    type: number
    sql: ${TABLE}.driver_rating_count ;;
  }

  measure: driver_weighted_average_ratings {
    sql: ${TABLE}.driver_weighted_average_ratings ;;
  }

  measure: driver_weighted_total_ratings {
    type: number
    sql: ${TABLE}.driver_weighted_total_ratings ;;
  }

  measure: overall_rating_count {
    type: number
    sql: ${TABLE}.overall_rating_count ;;
  }

  measure: overall_weighted_average_ratings {
    sql: ${TABLE}.overall_weighted_average_ratings ;;
  }

  measure: overall_weighted_total_ratings {
    type: number
    sql: ${TABLE}.overall_weighted_total_ratings ;;
  }

  measure: Net_Promoter_Score {
    type: percentage
    sql: ${TABLE}.Net_Promoter_Score ;;
  }
}
transport_ratings_2.view.lookml · 66 lines
source-preserved
- view: transport_ratings_2
  derived_table:
    sql: Select metros_id
      ,metro_name
      ,driver_rating_count
      ,((Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5) / driver_rating_count)  as driver_weighted_average_ratings
      ,(Total_Driver_Rating_1 + Total_Driver_Rating_2 + Total_Driver_Rating_3 + Total_Driver_Rating_4 + Total_Driver_Rating_5)  as driver_weighted_total_ratings
      ,overall_rating_count
      ,((Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5) / overall_rating_count)  as overall_weighted_average_ratings
      ,(Total_Overall_Rating_1 + Total_Overall_Rating_2 + Total_Overall_Rating_3 + Total_Overall_Rating_4 + Total_Overall_Rating_5)  as overall_weighted_total_ratings
      ,((NPS_Promoter - NPS_Detracter)/overall_rating_count) as Net_Promoter_Score
  From
    (Select
             metros.id as metros_id
            ,metros.name as metro_name
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 1 then 1 END),0) as Total_Driver_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 2 then 2 END),0) as Total_Driver_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 3 then 3 END),0) as Total_Driver_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 4 then 4 END),0) as Total_Driver_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.driver_rating = 5 then 5 END),0) as Total_Driver_Rating_5
            ,Count(tr.driver_rating) as driver_rating_count
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 1 then 1 END),0) as Total_Overall_Rating_1
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 2 then 2 END),0) as Total_Overall_Rating_2
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 3 then 3 END),0) as Total_Overall_Rating_3
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 4 then 4 END),0) as Total_Overall_Rating_4
            ,IFNULL(SUM(CASE WHEN tr.overall_rating = 5 then 5 END),0) as Total_Overall_Rating_5
            ,Count(tr.overall_rating) as overall_rating_count
            ,IFNULL(SUM(CASE WHEN (tr.shipment_company_nps = 9 OR tr.shipment_company_nps = 10) THEN 1 END),0) as NPS_Promoter
            ,IFNULL(SUM(CASE WHEN tr.shipment_company_nps < 7 THEN 1 END),0) as NPS_Detracter
        FROM transport_ratings as tr
        LEFT JOIN shipment_companyeries
          ON shipment_companyeries.id = tr.transport_id
        LEFT JOIN orders
          ON shipment_companyeries.order_id = orders.id
        LEFT JOIN metros
          ON orders.metro_id=metros.id
      Where tr.id > 1940
      Group by 1,2
      ) a
 Group by 1,2
  fields:
  - dimension: metros_id
    type: number
    primary_key: true
    sql: ${TABLE}.metros_id
  - dimension: metro_name
    sql: ${TABLE}.metro_name
  - measure: driver_rating_count
    type: number
    sql: ${TABLE}.driver_rating_count
  - measure: driver_weighted_average_ratings
    sql: ${TABLE}.driver_weighted_average_ratings
  - measure: driver_weighted_total_ratings
    type: number
    sql: ${TABLE}.driver_weighted_total_ratings
  - measure: overall_rating_count
    type: number
    sql: ${TABLE}.overall_rating_count
  - measure: overall_weighted_average_ratings
    sql: ${TABLE}.overall_weighted_average_ratings
  - measure: overall_weighted_total_ratings
    type: number
    sql: ${TABLE}.overall_weighted_total_ratings
  - measure: Net_Promoter_Score
    type: percentage
    sql: ${TABLE}.Net_Promoter_Score

Contents

  • transport_ratings_2.sql
  • transport_ratings_2.sql
  • transport_ratings_2.view.lkml
  • transport_ratings_2.view.lookml