SQL
Delivery alcohol
Delivery Distance
Delivery Distance model for delivery alcohol.
source-preserved
Blocks
delivery_distance.sql · 38 lines
inferred
-- models/delivery_distance.sql
{{ config(materialized='view') }}
SELECT
so.id as store_order_id
, so.status
, so.store_id
, s.internal_name
, so.order_id
, s.latitude
, s.longitude
, o.delivery_latitude
, o.delivery_longitude
, degrees(acos(sin(radians(s.latitude)) * sin(radians(o.delivery_latitude)) + cos(radians(s.latitude)) * cos(radians(o.delivery_latitude)) * cos(radians(s.longitude - o.delivery_longitude)))) * 60 * 1.1515 as miles
FROM orders o
JOIN orders so ON o.id = so.order_id
JOIN stores s ON s.id = so.store_id
ORDER BY so.id
# models/schema.yml
version: 2
models:
- name: delivery_distance
columns:
- name: store_order_id
tests:
- unique
- not_null
- name: store_id
- name: internal_name
- name: order_id
- name: latitude
- name: longitude
- name: delivery_latitude
- name: delivery_longitude
- name: status
- name: miles
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.
delivery_distance.sql · 15 lines
source-preserved
validation: parses
SELECT
so.id as store_order_id
, so.status
, so.store_id
, s.internal_name
, so.order_id
, s.latitude
, s.longitude
, o.delivery_latitude
, o.delivery_longitude
, degrees(acos(sin(radians(s.latitude)) * sin(radians(o.delivery_latitude)) + cos(radians(s.latitude)) * cos(radians(o.delivery_latitude)) * cos(radians(s.longitude - o.delivery_longitude)))) * 60 * 1.1515 as miles
FROM orders o
JOIN orders so ON o.id = so.order_id
JOIN stores s ON s.id = so.store_id
ORDER BY so.id
delivery_distance.view.lkml · 90 lines
inferred
view: delivery_distance {
derived_table: {
sql: SELECT
so.id as store_order_id
, so.status
, so.store_id
, s.internal_name
, so.order_id
, s.latitude
, s.longitude
, o.delivery_latitude
, o.delivery_longitude
, degrees(acos(sin(radians(s.latitude)) * sin(radians(o.delivery_latitude)) + cos(radians(s.latitude)) * cos(radians(o.delivery_latitude)) * cos(radians(s.longitude - o.delivery_longitude)))) * 60 * 1.1515 as miles
FROM orders o
JOIN orders so ON o.id = so.order_id
JOIN stores s ON s.id = so.store_id
ORDER BY so.id ;;
}
dimension: store_order_id {
type: number
primary_key: yes
sql: ${TABLE}.store_order_id ;;
}
dimension: store_id {
type: number
sql: ${TABLE}.store_id ;;
}
dimension: internal_name {
sql: ${TABLE}.internal_name ;;
}
dimension: order_id {
type: number
sql: ${TABLE}.order_id ;;
}
dimension: latitude {
type: number
sql: ${TABLE}.latitude ;;
}
dimension: longitude {
type: number
sql: ${TABLE}.longitude ;;
}
dimension: delivery_latitude {
sql: ${TABLE}.delivery_latitude ;;
}
dimension: delivery_longitude {
sql: ${TABLE}.delivery_longitude ;;
}
dimension: status {
sql: {% parameter state_6 %}SE
WHEN ${TABLE}.status = 6 THEN {% parameter order_status_completed %}
WHEN ${TABLE}.status = 7 THEN 'Voided'
WHEN ${TABLE}.status = 49 THEN 'Placed Gift'
WHEN ${TABLE}.status = 50 THEN 'Scheduled Not Delivered'
ELSE 'NA'
END ;;
}
dimension: miles {
type: number
sql: ${TABLE}.miles ;;
}
measure: count {
type: count
hidden: yes
drill_fields: [detail*]
}
measure: total_distance_traveled {
label: "Total Linear Distance Traveled"
type: sum
sql: ${miles} * 2 ;;
}
measure: avg_distance_traveled {
label: "Avg Linear Distance Traveled Per Order"
type: average
sql: (${miles} * 2) ;;
}
}
delivery_distance.view.lookml · 63 lines
source-preserved
- view: delivery_distance
derived_table:
sql: SELECT
so.id as store_order_id
, so.status
, so.store_id
, s.internal_name
, so.order_id
, s.latitude
, s.longitude
, o.delivery_latitude
, o.delivery_longitude
, degrees(acos(sin(radians(s.latitude)) * sin(radians(o.delivery_latitude)) + cos(radians(s.latitude)) * cos(radians(o.delivery_latitude)) * cos(radians(s.longitude - o.delivery_longitude)))) * 60 * 1.1515 as miles
FROM orders o
JOIN orders so ON o.id = so.order_id
JOIN stores s ON s.id = so.store_id
ORDER BY so.id
fields:
- dimension: store_order_id
type: number
primary_key: true
sql: ${TABLE}.store_order_id
- dimension: store_id
type: number
sql: ${TABLE}.store_id
- dimension: internal_name
sql: ${TABLE}.internal_name
- dimension: order_id
type: number
sql: ${TABLE}.order_id
- dimension: latitude
type: number
sql: ${TABLE}.latitude
- dimension: longitude
type: number
sql: ${TABLE}.longitude
- dimension: delivery_latitude
sql: ${TABLE}.delivery_latitude
- dimension: delivery_longitude
sql: ${TABLE}.delivery_longitude
- dimension: status
sql: {% parameter state_6 %}SE
WHEN ${TABLE}.status = 6 THEN {% parameter order_status_completed %}
WHEN ${TABLE}.status = 7 THEN 'Voided'
WHEN ${TABLE}.status = 49 THEN 'Placed Gift'
WHEN ${TABLE}.status = 50 THEN 'Scheduled Not Delivered'
ELSE 'NA'
END
- dimension: miles
type: number
sql: ${TABLE}.miles
- measure: count
type: count
drill_fields:
- detail*
- measure: total_distance_traveled
type: sum
label: Total Linear Distance Traveled
sql: ${miles} * 2
- measure: avg_distance_traveled
type: average
label: Avg Linear Distance Traveled Per Order
sql: (${miles} * 2)
Contents
- delivery_distance.sql
- delivery_distance.sql
- delivery_distance.view.lkml
- delivery_distance.view.lookml