LKML
Subscription jewelry
Members
Members model for subscription jewelry.
inferred
Blocks
members.view.lkml · 457 lines
inferred
view: members {
sql_table_name: members ;;
dimension: membership_length_in_days {
type: number
sql: CASE
WHEN ${canceled_date} IS NULL
THEN current_date - ${membership_start_date}
ELSE canceled_date - ${membership_start_date}
END ;;
}
dimension: membership_length_in_month {
type: number
sql: ${membership_length_in_days}/30 ;;
}
dimension: membership_length_in_days_tier {
type: tier
sql: ${membership_length_in_days} ;;
}
dimension: cancellation_reason {
type: int
}
dimension: cancellation_reason_name {
}
dimension: contact_id {
type: int
hidden: yes
}
dimension: customer_notes {
}
dimension: email {
}
dimension: first_name {
}
dimension: from_social_media {
}
dimension: from_social_media_binary {
type: yesno
sql: ${from_social_media} is not null ;;
}
dimension: avatar_file_name {
}
dimension: avatar {
type: yesno
sql: ${avatar_file_name} is not null ;;
}
dimension: id {
type: int
primary_key: yes
}
dimension: last_name {
}
dimension: last_shipment_id {
type: int
}
dimension: name {
sql: ${TABLE}.first_name || ' ' || ${TABLE}.last_name ;;
}
dimension: history {
sql: ${TABLE}.id ;;
}
dimension: official_source {
sql: lower(${TABLE}.official_source) ;;
}
dimension: partner_id {
type: int
}
dimension: priority {
type: int
}
dimension: priority_name {
}
dimension: purchased_product {
type: yesno
}
dimension: recurly_code {
}
dimension: ring_size {
type: number
}
dimension: shipping_status {
type: int
}
dimension: shipping_status_name {
}
dimension: sign_in_count {
type: int
}
dimension: sign_in_count_tier {
type: tier
sql: ${sign_in_count} ;;
}
dimension: signup_coupon_id {
type: int
}
dimension: signup_coupon_name {
}
dimension: source {
}
dimension: status {
type: int
}
dimension: status_name {
}
dimension: survey_id {
type: int
}
dimension: lifetime_purchases {
type: number
sql: (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id
AND ph.date_purchased IS NOT NULL) ;;
}
dimension: first_purchase {
type: time
sql: (SELECT ph.date_purchased
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id
AND ph.date_purchased IS NOT NULL
ORDER BY ph.date_purchased ASC
LIMIT 1) ;;
}
dimension: days_til_first_purchase {
type: int
sql: ${first_purchase_date} - ${created_date} ;;
}
dimension: months_til_first_purchase {
type: int
sql: ${days_til_first_purchase}/31 ;;
}
dimension: days_til_first_purchase_tier {
type: tier
sql: ${days_til_first_purchase} ;;
}
dimension: lifetime_item_histories {
type: number
sql: (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id) ;;
}
dimension: lifetime_purchases_tier {
type: tier
sql: ${lifetime_purchases} ;;
}
dimension: lifetime_revenue {
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL) ;;
}
dimension: revenue_first_60_days {
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL
AND ph.date_purchased < ${TABLE}.created_at + interval '60 days') ;;
}
dimension: average_revenue_first_60_days {
type: average
sql: ${revenue_first_60_days} ;;
}
dimension: revenue_first_90_days {
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL
AND ph.date_purchased < ${TABLE}.created_at + interval '90 days') ;;
}
dimension: average_revenue_first_90_days {
type: average
sql: ${revenue_first_90_days} ;;
}
dimension: days_since_first_box_shipped {
type: number
sql: CURRENT_DATE - DATE(${TABLE}.membership_start_time) ;;
}
dimension: count_of_deliveries {
type: number
sql: (select count(*) from deliveries where deliveries.customer_id = ${TABLE}.id) ;;
}
dimension: had_a_shipment {
type: yesno
sql: ${count_of_deliveries} > 0 ;;
}
dimension: days_since_first_box_shipped_tier {
type: tier
sql: ${days_since_first_box_shipped} ;;
}
dimension: lifer {
type: yesno
sql: ${days_since_first_box_shipped} > 90 ;;
}
dimension: member_segment {
}
dimension: referred_friends {
type: number
sql: (SELECT count(*)
FROM transactions c
WHERE c.customer_id = ${TABLE}.id
AND c.reason = 0
AND c.status = 1) ;;
}
dimension: referred_friend_bool {
type: yesno
sql: ${referred_friends} > 0 ;;
}
dimension: invites_tier {
type: tier
sql: ${referred_friends} ;;
}
dimension: days_to_cancel {
type: number
sql: ${TABLE}.canceled_date - DATE(${TABLE}.membership_start_time) ;;
}
dimension: months_to_cancel {
type: number
sql: (${TABLE}.canceled_date - DATE(${TABLE}.membership_start_time))/31 ;;
}
dimension: credit_score {
type: number
}
dimension: credit_score_tier {
type: tier
sql: ${credit_score} ;;
}
dimension: credit_score_present {
type: yesno
sql: ${credit_score} is not null ;;
}
dimension: utm_source {
}
dimension: referring_domain {
}
dimension: time_to_cancel_tier {
type: tier
sql: ${days_to_cancel} ;;
}
dimension: lifetime_revenue_tier {
type: tier
sql: ${lifetime_revenue} ;;
}
dimension_group: birthday {
type: time
timeframes: [time, date]
}
dimension_group: canceled {
type: time
timeframes: [yesno, date, week, month]
sql: ${TABLE}.canceled_date ;;
}
dimension_group: created {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.created_at ;;
}
dimension_group: entry {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.entry_time ;;
}
dimension_group: last_sign_in {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.last_sign_in_at ;;
}
dimension_group: membership_start {
type: time
timeframes: [yesno, date, week, month]
sql: ${TABLE}.membership_start_time ;;
}
measure: count {
type: count_distinct
sql: ${id} ;;
}
measure: share_of_members {
type: percent_of_total
sql: ${count} ;;
}
measure: lifer_percent {
type: number
sql: 100.0 * ${lifer_count}/NULLIF(${count},0) ;;
}
measure: purchaser_percent {
type: number
sql: 100.0 * ${purchaser_count}/NULLIF(${count},0) ;;
}
measure: purchaser_count {
type: count_distinct
filters: [lifetime_purchases: "1 to"]
sql: ${id} ;;
}
measure: lifer_count {
type: count_distinct
filters: [lifer: "True"]
sql: ${id} ;;
}
measure: needs_canceling_count {
type: count
filters: [shipping_status_name: "Needs Canceling"]
}
measure: average_lifetime_purchases {
type: avg
sql: ${lifetime_purchases} ;;
}
measure: total_lifetime_purchases {
type: sum
sql: ${lifetime_purchases} ;;
}
measure: average_item_histories {
type: avg
sql: ${lifetime_item_histories} ;;
}
measure: total_item_histories {
type: sum
sql: ${lifetime_item_histories} ;;
}
measure: total_lifetime_revenue {
type: sum
sql: ${lifetime_revenue} ;;
}
measure: total_lifetime_revenue_per_customer {
type: number
sql: ${total_lifetime_revenue} / NULLIF(${count},0) ;;
}
measure: average_lifetime_revenue {
type: avg
sql: ${lifetime_revenue} ;;
}
measure: average_referred_friends {
type: avg
sql: ${referred_friends} ;;
}
measure: total_referred_friends {
type: sum
sql: ${referred_friends} ;;
}
measure: count_members_who_referred_friends {
type: count
filters: [referred_friend_bool: "True"]
sql: ${id} ;;
}
measure: avg_credit_score {
type: avg
sql: ${credit_score} ;;
}
measure: average_time_to_cancellation {
type: avg
sql: ${days_to_cancel} ;;
}
measure: canceled_count {
type: count_distinct
filters: [canceled: "True"]
sql: ${TABLE}.id ;;
}
measure: percent_canceled {
type: number
sql: 100.0*${canceled_count}/NULLIF(${count},0) ;;
}
}
members.view.lookml · 300 lines
source-preserved
- view: members
sql_table_name: members
fields:
- dimension: membership_length_in_days
type: number
sql: CASE
WHEN ${canceled_date} IS NULL
THEN current_date - ${membership_start_date}
ELSE canceled_date - ${membership_start_date}
END
- dimension: membership_length_in_month
type: number
sql: ${membership_length_in_days}/30
- dimension: membership_length_in_days_tier
type: tier
sql: ${membership_length_in_days}
- dimension: cancellation_reason
type: int
- dimension: cancellation_reason_name
- dimension: contact_id
type: int
hidden: true
- dimension: customer_notes
- dimension: email
- dimension: first_name
- dimension: from_social_media
- dimension: from_social_media_binary
type: yesno
sql: ${from_social_media} is not null
- dimension: avatar_file_name
- dimension: avatar
type: yesno
sql: ${avatar_file_name} is not null
- dimension: id
type: int
primary_key: true
- dimension: last_name
- dimension: last_shipment_id
type: int
- dimension: name
sql: ${TABLE}.first_name || ' ' || ${TABLE}.last_name
- dimension: history
sql: ${TABLE}.id
- dimension: official_source
sql: lower(${TABLE}.official_source)
- dimension: partner_id
type: int
- dimension: priority
type: int
- dimension: priority_name
- dimension: purchased_product
type: yesno
- dimension: recurly_code
- dimension: ring_size
type: number
- dimension: shipping_status
type: int
- dimension: shipping_status_name
- dimension: sign_in_count
type: int
- dimension: sign_in_count_tier
type: tier
sql: ${sign_in_count}
- dimension: signup_coupon_id
type: int
- dimension: signup_coupon_name
- dimension: source
- dimension: status
type: int
- dimension: status_name
- dimension: survey_id
type: int
- dimension: lifetime_purchases
type: number
sql: (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id
AND ph.date_purchased IS NOT NULL)
- dimension: first_purchase
type: time
sql: (SELECT ph.date_purchased
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id
AND ph.date_purchased IS NOT NULL
ORDER BY ph.date_purchased ASC
LIMIT 1)
- dimension: days_til_first_purchase
type: int
sql: ${first_purchase_date} - ${created_date}
- dimension: months_til_first_purchase
type: int
sql: ${days_til_first_purchase}/31
- dimension: days_til_first_purchase_tier
type: tier
sql: ${days_til_first_purchase}
- dimension: lifetime_item_histories
type: number
sql: (SELECT COUNT(*)
FROM item_histories ph
WHERE ph.customer_id = ${TABLE}.id)
- dimension: lifetime_purchases_tier
type: tier
sql: ${lifetime_purchases}
- dimension: lifetime_revenue
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL)
- dimension: revenue_first_60_days
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL
AND ph.date_purchased < ${TABLE}.created_at + interval '60 days')
- dimension: average_revenue_first_60_days
type: average
sql: ${revenue_first_60_days}
- dimension: revenue_first_90_days
type: number
sql: (SELECT SUM(pd.retail_cents) / 100 *.8
FROM item_histories ph
LEFT JOIN item_descriptors pd
ON ph.item_descriptor_id=pd.id
WHERE ph.customer_id=${TABLE}.id AND ph.date_purchased IS NOT NULL
AND ph.date_purchased < ${TABLE}.created_at + interval '90 days')
- dimension: average_revenue_first_90_days
type: average
sql: ${revenue_first_90_days}
- dimension: days_since_first_box_shipped
type: number
sql: CURRENT_DATE - DATE(${TABLE}.membership_start_time)
- dimension: count_of_deliveries
type: number
sql: (select count(*) from deliveries where deliveries.customer_id = ${TABLE}.id)
- dimension: had_a_shipment
type: yesno
sql: ${count_of_deliveries} > 0
- dimension: days_since_first_box_shipped_tier
type: tier
sql: ${days_since_first_box_shipped}
- dimension: lifer
type: yesno
sql: ${days_since_first_box_shipped} > 90
- dimension: member_segment
- dimension: referred_friends
type: number
sql: (SELECT count(*)
FROM transactions c
WHERE c.customer_id = ${TABLE}.id
AND c.reason = 0
AND c.status = 1)
- dimension: referred_friend_bool
type: yesno
sql: ${referred_friends} > 0
- dimension: invites_tier
type: tier
sql: ${referred_friends}
- dimension: days_to_cancel
type: number
sql: ${TABLE}.canceled_date - DATE(${TABLE}.membership_start_time)
- dimension: months_to_cancel
type: number
sql: (${TABLE}.canceled_date - DATE(${TABLE}.membership_start_time))/31
- dimension: credit_score
type: number
- dimension: credit_score_tier
type: tier
sql: ${credit_score}
- dimension: credit_score_present
type: yesno
sql: ${credit_score} is not null
- dimension: utm_source
- dimension: referring_domain
- dimension: time_to_cancel_tier
type: tier
sql: ${days_to_cancel}
- dimension: lifetime_revenue_tier
type: tier
sql: ${lifetime_revenue}
- dimension_group: birthday
type: time
timeframes:
- time
- date
- dimension_group: canceled
type: time
timeframes:
- yesno
- date
- week
- month
sql: ${TABLE}.canceled_date
- dimension_group: created
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.created_at
- dimension_group: entry
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.entry_time
- dimension_group: last_sign_in
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.last_sign_in_at
- dimension_group: membership_start
type: time
timeframes:
- yesno
- date
- week
- month
sql: ${TABLE}.membership_start_time
- measure: count
type: count_distinct
sql: ${id}
- measure: share_of_members
type: percent_of_total
sql: ${count}
- measure: lifer_percent
type: number
sql: 100.0 * ${lifer_count}/NULLIF(${count},0)
- measure: purchaser_percent
type: number
sql: 100.0 * ${purchaser_count}/NULLIF(${count},0)
- measure: purchaser_count
type: count_distinct
filters:
- lifetime_purchases: 1 to
sql: ${id}
- measure: lifer_count
type: count_distinct
filters:
- lifer: True
sql: ${id}
- measure: needs_canceling_count
type: count
filters:
- shipping_status_name: Needs Canceling
- measure: average_lifetime_purchases
type: avg
sql: ${lifetime_purchases}
- measure: total_lifetime_purchases
type: sum
sql: ${lifetime_purchases}
- measure: average_item_histories
type: avg
sql: ${lifetime_item_histories}
- measure: total_item_histories
type: sum
sql: ${lifetime_item_histories}
- measure: total_lifetime_revenue
type: sum
sql: ${lifetime_revenue}
- measure: total_lifetime_revenue_per_customer
type: number
sql: ${total_lifetime_revenue} / NULLIF(${count},0)
- measure: average_lifetime_revenue
type: avg
sql: ${lifetime_revenue}
- measure: average_referred_friends
type: avg
sql: ${referred_friends}
- measure: total_referred_friends
type: sum
sql: ${referred_friends}
- measure: count_members_who_referred_friends
type: count
filters:
- referred_friend_bool: True
sql: ${id}
- measure: avg_credit_score
type: avg
sql: ${credit_score}
- measure: average_time_to_cancellation
type: avg
sql: ${days_to_cancel}
- measure: canceled_count
type: count_distinct
filters:
- canceled: True
sql: ${TABLE}.id
- measure: percent_canceled
type: number
sql: 100.0*${canceled_count}/NULLIF(${count},0)
Contents
- members.view.lkml
- members.view.lookml