dbt Social shopping

Order Delivery Details

Order Delivery Details model for social shopping.

inferred

Blocks

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

SELECT
  orders.id as order_id,
  fulfillments.state as fulfillment_status,
  shipment_trackings.status as shipment_trackings_status,

  CASE WHEN shipment_trackings.id IS NULL THEN false ELSE true END as has_shipment_tracking,
  CASE WHEN (fulfillments.tracking_number is NULL OR fulfillments.tracking_number = '') THEN false ELSE true END as has_tracking_number,
  fulfillments.tracking_number,
  {{ this }}.tracking_provider,
  fulfillments.tracking_url,
  shipment_trackings.carrier,
  CASE WHEN shipment_tracking_details.external_timestamarketplace IS NOT NULL THEN datediff('day',orders.placed_at,shipment_tracking_details.external_timestamarketplace) ELSE NULL END as days_to_deliver
FROM orders
JOIN sub_orders ON sub_orders.order_id = orders.id
LEFT OUTER JOIN fulfillments ON fulfillments.sub_order_id = sub_orders.id
LEFT OUTER JOIN fulfillment_shipment_trackings ON fulfillment_shipment_trackings.fulfillment_id = fulfillments.id
LEFT OUTER JOIN shipment_trackings ON fulfillment_shipment_trackings.shipment_tracking_id = shipment_trackings.id
LEFT OUTER JOIN shipment_tracking_details ON shipment_tracking_details.shipment_tracking_id = shipment_trackings.id AND shipment_tracking_details.status = <% shipment_status_delivered %>

# models/schema.yml
version: 2

models:
  - name: order_delivery_details
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: has_shipment_tracking
      - name: has_tracking_number

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.
order_delivery_details.sql · 18 lines
source-preserved validation: not checked
SELECT
  orders.id as order_id,
  fulfillments.state as fulfillment_status,
  shipment_trackings.status as shipment_trackings_status,

  CASE WHEN shipment_trackings.id IS NULL THEN false ELSE true END as has_shipment_tracking,
  CASE WHEN (fulfillments.tracking_number is NULL OR fulfillments.tracking_number = '') THEN false ELSE true END as has_tracking_number,
  fulfillments.tracking_number,
  ${TABLE}.tracking_provider,
  fulfillments.tracking_url,
  shipment_trackings.carrier,
  CASE WHEN shipment_tracking_details.external_timestamarketplace IS NOT NULL THEN datediff('day',orders.placed_at,shipment_tracking_details.external_timestamarketplace) ELSE NULL END as days_to_deliver
FROM orders
JOIN sub_orders ON sub_orders.order_id = orders.id
LEFT OUTER JOIN fulfillments ON fulfillments.sub_order_id = sub_orders.id
LEFT OUTER JOIN fulfillment_shipment_trackings ON fulfillment_shipment_trackings.fulfillment_id = fulfillments.id
LEFT OUTER JOIN shipment_trackings ON fulfillment_shipment_trackings.shipment_tracking_id = shipment_trackings.id
LEFT OUTER JOIN shipment_tracking_details ON shipment_tracking_details.shipment_tracking_id = shipment_trackings.id AND shipment_tracking_details.status = <% shipment_status_delivered %>
order_delivery_details.view.lkml · 83 lines
inferred
view: order_delivery_details {
  derived_table: {
    sql: SELECT
  orders.id as order_id,
  fulfillments.state as fulfillment_status,
  shipment_trackings.status as shipment_trackings_status,

  CASE WHEN shipment_trackings.id IS NULL THEN false ELSE true END as has_shipment_tracking,
  CASE WHEN (fulfillments.tracking_number is NULL OR fulfillments.tracking_number = '') THEN false ELSE true END as has_tracking_number,
  fulfillments.tracking_number,
  ${TABLE}.tracking_provider,
  fulfillments.tracking_url,
  shipment_trackings.carrier,
  CASE WHEN shipment_tracking_details.external_timestamarketplace IS NOT NULL THEN datediff('day',orders.placed_at,shipment_tracking_details.external_timestamarketplace) ELSE NULL END as days_to_deliver
FROM orders
JOIN sub_orders ON sub_orders.order_id = orders.id
LEFT OUTER JOIN fulfillments ON fulfillments.sub_order_id = sub_orders.id
LEFT OUTER JOIN fulfillment_shipment_trackings ON fulfillment_shipment_trackings.fulfillment_id = fulfillments.id
LEFT OUTER JOIN shipment_trackings ON fulfillment_shipment_trackings.shipment_tracking_id = shipment_trackings.id
LEFT OUTER JOIN shipment_tracking_details ON shipment_tracking_details.shipment_tracking_id = shipment_trackings.id AND shipment_tracking_details.status = <% shipment_status_delivered %> ;;
    persist_for: "6 hours"
  }

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

  dimension: has_shipment_tracking {
    type: yesno
    sql: ${TABLE}.has_shipment_tracking ;;
  }

  dimension: has_tracking_number {
    type: yesno
    sql: ${TABLE}.has_tracking_number ;;
  }

  dimension_group: fulfillment_status {
    type: string
    sql: ${TABLE}.fulfillment_status ;;
  }

  dimension_group: shipment_trackings_status {
    type: string
    sql: ${TABLE}.shipment_trackings_status ;;
  }

  dimension_group: tracking_number {
    type: string
    sql: ${TABLE}.tracking_number ;;
  }

  dimension_group: tracking_comarketplaceany {
    type: string
    sql: ${TABLE}.tracking_comarketplaceany ;;
  }

  dimension_group: tracking_url {
    type: string
    sql: ${TABLE}.tracking_url ;;
  }

  dimension_group: carrier {
    type: string
    sql: ${TABLE}.carrier ;;
  }

  dimension_group: days_to_deliver {
    type: int
    sql: ${TABLE}.days_to_deliver ;;
  }

  measure: average_days_to_deliver {
    type: avg
    sql: ${TABLE}.days_to_deliver ;;
  }

  measure: count {
    type: count
  }
}
order_delivery_details.view.lookml · 58 lines
source-preserved
- view: order_delivery_details
  derived_table:
    sql: SELECT
  orders.id as order_id,
  fulfillments.state as fulfillment_status,
  shipment_trackings.status as shipment_trackings_status,

  CASE WHEN shipment_trackings.id IS NULL THEN false ELSE true END as has_shipment_tracking,
  CASE WHEN (fulfillments.tracking_number is NULL OR fulfillments.tracking_number = '') THEN false ELSE true END as has_tracking_number,
  fulfillments.tracking_number,
  ${TABLE}.tracking_provider,
  fulfillments.tracking_url,
  shipment_trackings.carrier,
  CASE WHEN shipment_tracking_details.external_timestamarketplace IS NOT NULL THEN datediff('day',orders.placed_at,shipment_tracking_details.external_timestamarketplace) ELSE NULL END as days_to_deliver
FROM orders
JOIN sub_orders ON sub_orders.order_id = orders.id
LEFT OUTER JOIN fulfillments ON fulfillments.sub_order_id = sub_orders.id
LEFT OUTER JOIN fulfillment_shipment_trackings ON fulfillment_shipment_trackings.fulfillment_id = fulfillments.id
LEFT OUTER JOIN shipment_trackings ON fulfillment_shipment_trackings.shipment_tracking_id = shipment_trackings.id
LEFT OUTER JOIN shipment_tracking_details ON shipment_tracking_details.shipment_tracking_id = shipment_trackings.id AND shipment_tracking_details.status = <% shipment_status_delivered %>
    persist_for: 6 hours
  fields:
  - dimension: order_id
    type: int
    primary_key: true
    sql: ${TABLE}.order_id
  - dimension: has_shipment_tracking
    type: yesno
    sql: ${TABLE}.has_shipment_tracking
  - dimension: has_tracking_number
    type: yesno
    sql: ${TABLE}.has_tracking_number
  - dimension_group: fulfillment_status
    type: string
    sql: ${TABLE}.fulfillment_status
  - dimension_group: shipment_trackings_status
    type: string
    sql: ${TABLE}.shipment_trackings_status
  - dimension_group: tracking_number
    type: string
    sql: ${TABLE}.tracking_number
  - dimension_group: tracking_comarketplaceany
    type: string
    sql: ${TABLE}.tracking_comarketplaceany
  - dimension_group: tracking_url
    type: string
    sql: ${TABLE}.tracking_url
  - dimension_group: carrier
    type: string
    sql: ${TABLE}.carrier
  - dimension_group: days_to_deliver
    type: int
    sql: ${TABLE}.days_to_deliver
  - measure: average_days_to_deliver
    type: avg
    sql: ${TABLE}.days_to_deliver
  - measure: count
    type: count

Contents

  • order_delivery_details.sql
  • order_delivery_details.sql
  • order_delivery_details.view.lkml
  • order_delivery_details.view.lookml