LKML Subscription jewelry

Item Histories

Item Histories model for subscription jewelry.

inferred

Blocks

item_histories.view.lkml · 284 lines
inferred
view: item_histories {
  sql_table_name: item_histories ;;

  dimension: credit_used {
    type: number
    sql: ${TABLE}.credit_used_cents / 100.0 ;;
  }

  dimension: customer_id {
    type: int
    hidden: yes
  }

  dimension: detailed_comments {
  }

  dimension: feedback {
    type: int
  }

  dimension: feedback_name {
  }

  dimension: general_comments {
  }

  dimension: id {
    type: int
    primary_key: yes
  }

  dimension: note {
  }

  dimension: item_descriptor_id {
    type: int
  }

  dimension: item_id {
    type: int
    hidden: yes
  }

  dimension: purchase_note {
  }

  dimension: quantity {
    type: int
  }

  dimension: recommendation_score {
    type: int
  }

  dimension: shipment_id {
    type: int
  }

  dimension: tax_rate {
    type: int
  }

  dimension: feedback_left_since_membership_start_days {
    type: number
    sql: ${updated_date}-${${TABLE}.start_date} ;;
  }

  dimension: feedback_left_since_membership_start_months {
    type: number
    sql: ${feedback_left_since_membership_start_days}/31 ;;
  }

  dimension: was_recommended {
    type: yesno
  }

  dimension: merchandise_revenue {
    type: number
    sql: ${TABLE}.purchase_price_cents / 100.0 ;;
  }

  dimension: average_merchandise_revenue {
    type: avg
    sql: ${merchandise_revenue} ;;
  }

  dimension: revenue_tier {
    type: tier
    sql: ${merchandise_revenue} ;;
  }

  dimension: purchase_sequence_number {
    type: number
    sql: CASE WHEN
  ${TABLE}.date_purchased IS NOT NULL
THEN
  (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.created_at < ${TABLE}.created_at
  AND ph.customer_id=${TABLE}.customer_id
  AND ph.date_purchased IS NOT NULL) + 1
ELSE NULL
END ;;
  }

  dimension: price_order_in_shipment {
    label: "Price Order in Shipment (1 is lowest)"
    type: int
    sql: (SELECT count(*)
FROM item_histories ph
LEFT JOIN item_descriptors pd on pd.id = ph.item_descriptor_id
WHERE ${TABLE}.shipment_id = ph.shipment_id
AND ${item_descriptors.retail_cents} > pd.retail_cents) + 1 ;;
  }

  dimension: product_descriptor_in_survey {
    type: yesno
    sql: (EXISTS(SELECT 1
       FROM style_survey_choices AS sss
       LEFT JOIN style_survey_answers AS ssr
       ON ssr.id = sss.survey_response_id
       WHERE item_histories.item_descriptor_id = sss.item_descriptor_id
       AND ssr.customer_id = item_histories.customer_id)) ;;
  }

  dimension: months_btwn_received_and_purchased {
    type: number
    sql: (DATE_PART('year',${purchased_date}::date) - DATE_PART('year',${${TABLE}.date_received}::date))*12
+
(DATE_PART('month',${purchased_date}::date) - DATE_PART('month',${${TABLE}.date_received}::date)) ;;
  }

  dimension: months_btwn_received_and_damaged {
    type: number
    sql: (DATE_PART('year',${date_damaged_date}::date) - DATE_PART('year',${${TABLE}.date_received}::date))*12
+
(DATE_PART('month',${date_damaged_date}::date) - DATE_PART('month',${${TABLE}.date_received}::date)) ;;
  }

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

  dimension_group: date_damaged {
    type: time
    timeframes: [date, week, month]
  }

  dimension_group: date_lost {
    type: time
    timeframes: [date, week, month]
  }

  dimension_group: purchased {
    type: time
    timeframes: [yesno, hod, dow, date, week, month]
    sql: ${TABLE}.date_purchased ;;
  }

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

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

  measure: count {
    type: count_distinct
    sql: ${id} ;;
  }

  measure: count_positive_feedback {
    type: count
    filters: [feedback: "1 to"]
  }

  measure: percent_positive_feedback {
    type: number
    sql: 100.0 * ${count_positive_feedback} / nullif(${count},0) ;;
  }

  measure: positive_feedback_percent_of_total {
    type: percent_of_total
    sql: ${count_positive_feedback} ;;
  }

  measure: returned_to_inventory_count {
    type: count_distinct
    filters: [returned_to_inventory: "True"]
    sql: ${id} ;;
  }

  measure: percent_returned_to_inventory {
    type: number
    sql: 100.0 * ${returned_to_inventory_count}/NULLIF(${count},0) ;;
  }

  measure: average_feedback {
    type: avg
    sql: ${feedback} ;;
  }

  measure: average_offer_price {
    type: avg
    sql: ${item_descriptors.price} ;;
  }

  measure: total_merchandise_revenue {
    type: sum
    sql: ${merchandise_revenue} ;;
  }

  measure: bought_count {
    type: count_distinct
    filters: [feedback: "3"]
    sql: ${id} ;;
  }

  measure: percent_bought {
    type: number
    sql: 100.0 * ${bought_count}/NULLIF(${count},0) ;;
  }

  measure: no_feedback_count {
    type: count_distinct
    filters: [feedback: "0"]
    sql: ${id} ;;
  }

  measure: percent_no_feedback {
    type: number
    sql: 100.0 * ${no_feedback_count}/NULLIF(${count},0) ;;
  }

  measure: dislike_count {
    type: count_distinct
    filters: [feedback: "-2"]
    sql: ${id} ;;
  }

  measure: percent_dislike {
    type: number
    sql: 100.0 * ${dislike_count}/NULLIF(${count},0) ;;
  }

  measure: liked_count {
    type: count_distinct
    filters: [feedback: "1"]
    sql: ${id} ;;
  }

  measure: percent_liked {
    type: number
    sql: 100.0 * ${liked_count}/NULLIF(${count},0) ;;
  }

  measure: loved_count {
    type: count_distinct
    filters: [feedback: "2"]
    sql: ${id} ;;
  }

  measure: percent_loved {
    type: number
    sql: 100.0 * ${loved_count}/NULLIF(${count},0) ;;
  }

  measure: avg_months_to_purchase {
    type: avg
    sql: ${months_btwn_received_and_purchased} ;;
  }

  measure: avg_months_to_damage {
    type: avg
    sql: ${months_btwn_received_and_damaged} ;;
  }
}
item_histories.view.lookml · 210 lines
source-preserved
- view: item_histories
  sql_table_name: item_histories
  fields:
  - dimension: credit_used
    type: number
    sql: ${TABLE}.credit_used_cents / 100.0
  - dimension: customer_id
    type: int
    hidden: true
  - dimension: detailed_comments
  - dimension: feedback
    type: int
  - dimension: feedback_name
  - dimension: general_comments
  - dimension: id
    type: int
    primary_key: true
  - dimension: note
  - dimension: item_descriptor_id
    type: int
  - dimension: item_id
    type: int
    hidden: true
  - dimension: purchase_note
  - dimension: quantity
    type: int
  - dimension: recommendation_score
    type: int
  - dimension: shipment_id
    type: int
  - dimension: tax_rate
    type: int
  - dimension: feedback_left_since_membership_start_days
    type: number
    sql: ${updated_date}-${${TABLE}.start_date}
  - dimension: feedback_left_since_membership_start_months
    type: number
    sql: ${feedback_left_since_membership_start_days}/31
  - dimension: was_recommended
    type: yesno
  - dimension: merchandise_revenue
    type: number
    sql: ${TABLE}.purchase_price_cents / 100.0
  - dimension: average_merchandise_revenue
    type: avg
    sql: ${merchandise_revenue}
  - dimension: revenue_tier
    type: tier
    sql: ${merchandise_revenue}
  - dimension: purchase_sequence_number
    type: number
    sql: CASE WHEN
  ${TABLE}.date_purchased IS NOT NULL
THEN
  (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.created_at < ${TABLE}.created_at
  AND ph.customer_id=${TABLE}.customer_id
  AND ph.date_purchased IS NOT NULL) + 1
ELSE NULL
END
  - dimension: price_order_in_shipment
    type: int
    label: Price Order in Shipment (1 is lowest)
    sql: (SELECT count(*)
FROM item_histories ph
LEFT JOIN item_descriptors pd on pd.id = ph.item_descriptor_id
WHERE ${TABLE}.shipment_id = ph.shipment_id
AND ${item_descriptors.retail_cents} > pd.retail_cents) + 1
  - dimension: product_descriptor_in_survey
    type: yesno
    sql: (EXISTS(SELECT 1
       FROM style_survey_choices AS sss
       LEFT JOIN style_survey_answers AS ssr
       ON ssr.id = sss.survey_response_id
       WHERE item_histories.item_descriptor_id = sss.item_descriptor_id
       AND ssr.customer_id = item_histories.customer_id))
  - dimension: months_btwn_received_and_purchased
    type: number
    sql: (DATE_PART('year',${purchased_date}::date) - DATE_PART('year',${${TABLE}.date_received}::date))*12
+
(DATE_PART('month',${purchased_date}::date) - DATE_PART('month',${${TABLE}.date_received}::date))
  - dimension: months_btwn_received_and_damaged
    type: number
    sql: (DATE_PART('year',${date_damaged_date}::date) - DATE_PART('year',${${TABLE}.date_received}::date))*12
+
(DATE_PART('month',${date_damaged_date}::date) - DATE_PART('month',${${TABLE}.date_received}::date))
  - dimension_group: created
    type: time
    timeframes:
    - time
    - hod
    - date
    - week
    - month
    sql: ${TABLE}.created_at
  - dimension_group: date_damaged
    type: time
    timeframes:
    - date
    - week
    - month
  - dimension_group: date_lost
    type: time
    timeframes:
    - date
    - week
    - month
  - dimension_group: purchased
    type: time
    timeframes:
    - yesno
    - hod
    - dow
    - date
    - week
    - month
    sql: ${TABLE}.date_purchased
  - dimension_group: returned_to_inventory
    type: time
    timeframes:
    - yesno
    - date
    - week
    - month
    sql: ${TABLE}.date_returned
  - dimension_group: updated
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.updated_at
  - measure: count
    type: count_distinct
    sql: ${id}
  - measure: count_positive_feedback
    type: count
    filters:
    - feedback: 1 to
  - measure: percent_positive_feedback
    type: number
    sql: 100.0 * ${count_positive_feedback} / nullif(${count},0)
  - measure: positive_feedback_percent_of_total
    type: percent_of_total
    sql: ${count_positive_feedback}
  - measure: returned_to_inventory_count
    type: count_distinct
    filters:
    - returned_to_inventory: True
    sql: ${id}
  - measure: percent_returned_to_inventory
    type: number
    sql: 100.0 * ${returned_to_inventory_count}/NULLIF(${count},0)
  - measure: average_feedback
    type: avg
    sql: ${feedback}
  - measure: average_offer_price
    type: avg
    sql: ${item_descriptors.price}
  - measure: total_merchandise_revenue
    type: sum
    sql: ${merchandise_revenue}
  - measure: bought_count
    type: count_distinct
    filters:
    - feedback: 3
    sql: ${id}
  - measure: percent_bought
    type: number
    sql: 100.0 * ${bought_count}/NULLIF(${count},0)
  - measure: no_feedback_count
    type: count_distinct
    filters:
    - feedback: 0
    sql: ${id}
  - measure: percent_no_feedback
    type: number
    sql: 100.0 * ${no_feedback_count}/NULLIF(${count},0)
  - measure: dislike_count
    type: count_distinct
    filters:
    - feedback: -2
    sql: ${id}
  - measure: percent_dislike
    type: number
    sql: 100.0 * ${dislike_count}/NULLIF(${count},0)
  - measure: liked_count
    type: count_distinct
    filters:
    - feedback: 1
    sql: ${id}
  - measure: percent_liked
    type: number
    sql: 100.0 * ${liked_count}/NULLIF(${count},0)
  - measure: loved_count
    type: count_distinct
    filters:
    - feedback: 2
    sql: ${id}
  - measure: percent_loved
    type: number
    sql: 100.0 * ${loved_count}/NULLIF(${count},0)
  - measure: avg_months_to_purchase
    type: avg
    sql: ${months_btwn_received_and_purchased}
  - measure: avg_months_to_damage
    type: avg
    sql: ${months_btwn_received_and_damaged}

Contents

  • item_histories.view.lkml
  • item_histories.view.lookml