LKML Ecommerce luxury consign

Simple Variants

Simple Variants model for ecommerce luxury consign.

inferred

Blocks

simple_variants.view.lkml · 313 lines
inferred
view: simple_variants {
  sql_table_name: spree_variants ;;

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

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

  dimension: is_sold {
    type: yesno
    sql: (SELECT o.state in ('complete','resumed')
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id
ORDER BY o.created_at DESC
LIMIT 1) ;;
  }

  dimension: price_sold {
    type: number
    sql: (SELECT li.price
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id and o.state in ('complete','resumed')
ORDER BY o.created_at DESC
LIMIT 1) ;;
  }

  dimension: is_demand_sold {
    type: yesno
    sql: (SELECT o.state
IN ('manual_intervention','resumed','complete','awaiting_return','partially_returned','returned','canceled')
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id
ORDER BY o.created_at DESC
LIMIT 1) ;;
  }

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

  dimension: consigner_id {
    type: int
    hidden: yes
    sql: ${TABLE}.consigner_id ;;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  dimension: warehouse_id {
    type: int
    hidden: yes
    sql: ${TABLE}.warehouse_id ;;
  }

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

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

  dimension: age_in_days {
    type: number
    sql: DATEDIFF(now(),${born_date}) ;;
  }

  dimension: age_in_days_tier {
    type: tier
    sql: ${age_in_days} ;;
  }

  dimension: taxons {
    sql: (SELECT GROUP_CONCAT(DISTINCT t.name ORDER BY t.name DESC SEPARATOR ', ' )
FROM store_production.spree_products_taxons AS pt
JOIN store_production.spree_taxons AS t
ON pt.taxon_id = t.id
WHERE pt.product_id = ${TABLE}.product_id
) ;;
  }

  dimension: permalink {
    sql: (SELECT t.permalink
FROM (select product_id, min(taxon_id) as min_taxon_id from store_production.spree_products_taxons group by product_id) as pt
JOIN store_production.spree_taxons as t
ON pt.min_taxon_id = t.id
WHERE pt.product_id = ${TABLE}.product_id
  ) ;;
  }

  dimension_group: born {
    type: time
    timeframes: [yesno, date, week, month]
    sql: ${TABLE}.born_date ;;
  }

  dimension_group: created {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.created_at ;;
  }

  dimension_group: born_date {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.born_date ;;
  }

  dimension_group: deleted {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.deleted_at ;;
  }

  dimension_group: killed {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.killed_at ;;
  }

  dimension_group: updated {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.updated_at ;;
  }

  measure: count {
    type: count
  }

  measure: count_skued {
    type: count
    filters: [is_master: "False"]
  }

  measure: count_tracked {
    type: count
    filters: [shipments.is_tracked: "True"]
  }

  measure: count_shipped {
    type: count
    filters: [shipments.is_shipped: "True"]
  }

  measure: percent_shipped {
    type: number
    sql: 100.0 * ${count_shipped} / nullif(${count_sold},0) ;;
  }

  measure: count_sold {
    type: count
    filters: [is_sold: "True"]
  }

  measure: percent_sold {
    type: number
    sql: 100.0 * ${count_sold} / nullif(${count_skued},0) ;;
  }

  measure: count_demand_sold {
    type: count
    filters: [is_demand_sold: "True"]
  }

  measure: percent_demand_sold {
    type: number
    sql: 100.0 * ${count_demand_sold} / nullif(${count_skued},0) ;;
  }

  measure: count_merchandised {
    type: count
    filters: [flash_sales_variants.is_merchandised: "True"]
  }

  measure: percent_sell_through {
    type: number
    sql: 100.0 * ${count_sold} / nullif(${count_merchandised},0) ;;
  }

  measure: percent_merchandised {
    type: number
    sql: 100.0 * ${count_merchandised} / nullif(${count_skued},0) ;;
  }

  measure: count_returned {
    type: count
    filters: [inventory_units.is_returned: "True"]
  }

  measure: sales_before_discount {
    label: "Total Sales Revenue Before Discount"
    type: sum
    sql: ${price_sold} ;;
  }
}
simple_variants.view.lookml · 230 lines
source-preserved
- view: simple_variants
  sql_table_name: spree_variants
  fields:
  - dimension: id
    type: int
    primary_key: true
    sql: ${TABLE}.id
  - dimension: bin
    sql: ${TABLE}.bin
  - dimension: is_sold
    type: yesno
    sql: (SELECT o.state in ('complete','resumed')
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id
ORDER BY o.created_at DESC
LIMIT 1)
  - dimension: price_sold
    type: number
    sql: (SELECT li.price
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id and o.state in ('complete','resumed')
ORDER BY o.created_at DESC
LIMIT 1)
  - dimension: is_demand_sold
    type: yesno
    sql: (SELECT o.state
IN ('manual_intervention','resumed','complete','awaiting_return','partially_returned','returned','canceled')
FROM spree_line_items li
LEFT JOIN spree_orders o on o.id = li.order_id
WHERE ${TABLE}.id = li.variant_id
ORDER BY o.created_at DESC
LIMIT 1)
  - dimension: condition_description
    sql: ${TABLE}.condition_description
  - dimension: consigner_id
    type: int
    hidden: true
    sql: ${TABLE}.consigner_id
  - dimension: cost_price
    type: number
    sql: ${TABLE}.cost_price
  - dimension: count_on_hand
    type: int
    sql: ${TABLE}.count_on_hand
  - dimension: depth
    type: number
    sql: ${TABLE}.depth
  - dimension: fabric_content
    sql: ${TABLE}.fabric_content
  - dimension: field_merchandiser_id
    type: int
    sql: ${TABLE}.field_merchandiser_id
  - dimension: foreign_size
    sql: ${TABLE}.foreign_size
  - dimension: has_discounts
    type: yesno
    sql: ${TABLE}.has_discounts
  - dimension: height
    type: number
    sql: ${TABLE}.height
  - dimension: hold_user_id
    type: int
    sql: ${TABLE}.hold_user_id
  - dimension: is_killed
    type: yesno
    sql: ${TABLE}.is_killed
  - dimension: is_master
    type: yesno
    sql: ${TABLE}.is_master
  - dimension: measurements
    sql: ${TABLE}.measurements
  - dimension: minimum_price
    type: number
    sql: ${TABLE}.minimum_price
  - dimension: notes
    sql: ${TABLE}.notes
  - dimension: original_price
    type: number
    sql: ${TABLE}.original_price
  - dimension: original_size
    sql: ${TABLE}.original_size
  - dimension: photos_available
    type: yesno
    sql: ${TABLE}.photos_available
  - dimension: position
    type: int
    sql: ${TABLE}.position
  - dimension: price
    type: number
    sql: ${TABLE}.price
  - dimension: product_id
    type: int
    sql: ${TABLE}.product_id
  - dimension: ready_for_sale
    type: yesno
    sql: ${TABLE}.ready_for_sale
  - dimension: sku
    sql: ${TABLE}.sku
  - dimension: check_price
    type: yesno
    sql: ${TABLE}.check_price
  - dimension: warehouse_id
    type: int
    hidden: true
    sql: ${TABLE}.warehouse_id
  - dimension: weight
    type: number
    sql: ${TABLE}.weight
  - dimension: width
    type: number
    sql: ${TABLE}.width
  - dimension: age_in_days
    type: number
    sql: DATEDIFF(now(),${born_date})
  - dimension: age_in_days_tier
    type: tier
    sql: ${age_in_days}
  - dimension: taxons
    sql: (SELECT GROUP_CONCAT(DISTINCT t.name ORDER BY t.name DESC SEPARATOR ', ' )
FROM store_production.spree_products_taxons AS pt
JOIN store_production.spree_taxons AS t
ON pt.taxon_id = t.id
WHERE pt.product_id = ${TABLE}.product_id
)
  - dimension: permalink
    sql: (SELECT t.permalink
FROM (select product_id, min(taxon_id) as min_taxon_id from store_production.spree_products_taxons group by product_id) as pt
JOIN store_production.spree_taxons as t
ON pt.min_taxon_id = t.id
WHERE pt.product_id = ${TABLE}.product_id
  )
  - dimension_group: born
    type: time
    timeframes:
    - yesno
    - date
    - week
    - month
    sql: ${TABLE}.born_date
  - dimension_group: created
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.created_at
  - dimension_group: born_date
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.born_date
  - dimension_group: deleted
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.deleted_at
  - dimension_group: killed
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.killed_at
  - dimension_group: updated
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.updated_at
  - measure: count
    type: count
  - measure: count_skued
    type: count
    filters:
    - is_master: False
  - measure: count_tracked
    type: count
    filters:
    - shipments.is_tracked: True
  - measure: count_shipped
    type: count
    filters:
    - shipments.is_shipped: True
  - measure: percent_shipped
    type: number
    sql: 100.0 * ${count_shipped} / nullif(${count_sold},0)
  - measure: count_sold
    type: count
    filters:
    - is_sold: True
  - measure: percent_sold
    type: number
    sql: 100.0 * ${count_sold} / nullif(${count_skued},0)
  - measure: count_demand_sold
    type: count
    filters:
    - is_demand_sold: True
  - measure: percent_demand_sold
    type: number
    sql: 100.0 * ${count_demand_sold} / nullif(${count_skued},0)
  - measure: count_merchandised
    type: count
    filters:
    - flash_sales_variants.is_merchandised: True
  - measure: percent_sell_through
    type: number
    sql: 100.0 * ${count_sold} / nullif(${count_merchandised},0)
  - measure: percent_merchandised
    type: number
    sql: 100.0 * ${count_merchandised} / nullif(${count_skued},0)
  - measure: count_returned
    type: count
    filters:
    - inventory_units.is_returned: True
  - measure: sales_before_discount
    type: sum
    label: Total Sales Revenue Before Discount
    sql: ${price_sold}

Contents

  • simple_variants.view.lkml
  • simple_variants.view.lookml