SQL
Ecommerce grooming
Derived Subscription Type Subscriptions
Derived Subscription Type Subscriptions model for ecommerce grooming.
source-preserved
Blocks
derived_subscription_type_subscriptions.sql · 42 lines
inferred
-- models/derived_subscription_type_subscriptions.sql
{{ config(materialized='view') }}
select p.id as partner_id, p.partner_identifier, p.name as partner_name, p.contact_email as partner_email,
cs.id as customer_subscription_id, cs.customer_id, cs.start_date_time, o.sub_total+o.shipping_charges-o.discount as initial_order_amount
from customer_subscriptions cs
join orders o
on cs.customer_id = o.customer_id
and timestampdiff(minute, cs.start_date_time,o.created_at) = 0
join coupon_instances i
on o.coupon_instance_id = i.id
join partners_coupons pc
on i.coupon_id = pc.coupon_id
join partners p
on pc.partner_id = p.id
WHERE (NOT EXISTS (
select cs2.id
from customer_subscriptions cs2
join orders o2
on cs2.customer_id = o2.customer_id
and date(cs2.start_date_time) = date(o2.created_at)
join coupon_instances i2
on o2.coupon_instance_id = i2.id
join coupons cp2
on i2.coupon_id = cp2.id
where left(cp2.code,4) in ('PartnerCode01', 'PartnerCode08', 'PartnerCode09', 'PartnerCode11', 'PartnerCode12', 'PartnerCode13', 'PartnerCode14', 'PartnerCode15')
and cs2.start_date_time < '14/1/1'
and cs.id = cs2.id))
# models/schema.yml
version: 2
models:
- name: derived_subscription_type_subscriptions
columns:
- name: customer_id
- name: customer_subscription_id
- name: initial_order_amount
- name: partner_id
- name: partner_identifier
- name: partner_email
- name: partner_name
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.
derived_subscription_type_subscriptions.sql · 25 lines
source-preserved
validation: parses
select p.id as partner_id, p.partner_identifier, p.name as partner_name, p.contact_email as partner_email,
cs.id as customer_subscription_id, cs.customer_id, cs.start_date_time, o.sub_total+o.shipping_charges-o.discount as initial_order_amount
from customer_subscriptions cs
join orders o
on cs.customer_id = o.customer_id
and timestampdiff(minute, cs.start_date_time,o.created_at) = 0
join coupon_instances i
on o.coupon_instance_id = i.id
join partners_coupons pc
on i.coupon_id = pc.coupon_id
join partners p
on pc.partner_id = p.id
WHERE (NOT EXISTS (
select cs2.id
from customer_subscriptions cs2
join orders o2
on cs2.customer_id = o2.customer_id
and date(cs2.start_date_time) = date(o2.created_at)
join coupon_instances i2
on o2.coupon_instance_id = i2.id
join coupons cp2
on i2.coupon_id = cp2.id
where left(cp2.code,4) in ('PartnerCode01', 'PartnerCode08', 'PartnerCode09', 'PartnerCode11', 'PartnerCode12', 'PartnerCode13', 'PartnerCode14', 'PartnerCode15')
and cs2.start_date_time < '14/1/1'
and cs.id = cs2.id))
derived_subscription_type_subscriptions.view.lkml · 82 lines
inferred
view: derived_subscription_type_subscriptions {
derived_table: {
sql: select p.id as partner_id, p.partner_identifier, p.name as partner_name, p.contact_email as partner_email,
cs.id as customer_subscription_id, cs.customer_id, cs.start_date_time, o.sub_total+o.shipping_charges-o.discount as initial_order_amount
from customer_subscriptions cs
join orders o
on cs.customer_id = o.customer_id
and timestampdiff(minute, cs.start_date_time,o.created_at) = 0
join coupon_instances i
on o.coupon_instance_id = i.id
join partners_coupons pc
on i.coupon_id = pc.coupon_id
join partners p
on pc.partner_id = p.id
WHERE (NOT EXISTS (
select cs2.id
from customer_subscriptions cs2
join orders o2
on cs2.customer_id = o2.customer_id
and date(cs2.start_date_time) = date(o2.created_at)
join coupon_instances i2
on o2.coupon_instance_id = i2.id
join coupons cp2
on i2.coupon_id = cp2.id
where left(cp2.code,4) in ('PartnerCode01', 'PartnerCode08', 'PartnerCode09', 'PartnerCode11', 'PartnerCode12', 'PartnerCode13', 'PartnerCode14', 'PartnerCode15')
and cs2.start_date_time < '14/1/1'
and cs.id = cs2.id)) ;;
}
dimension: customer_id {
type: int
sql: ${TABLE}.customer_id ;;
}
dimension: customer_subscription_id {
type: int
sql: ${TABLE}.customer_subscription_id ;;
}
dimension: initial_order_amount {
type: number
sql: ${TABLE}.initial_order_amount ;;
}
dimension: partner_id {
type: int
sql: ${TABLE}.partner_id ;;
}
dimension: partner_identifier {
sql: ${TABLE}.partner_identifier ;;
}
dimension: partner_email {
sql: ${TABLE}.partner_email ;;
}
dimension: partner_name {
sql: ${TABLE}.partner_name ;;
}
dimension_group: customer_start {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.start_date_time ;;
}
measure: count {
type: count
}
measure: count_percent_of_total {
label: "Count (Percent of Total)"
type: percent_of_total
sql: ${count} ;;
}
measure: sum_order_amount {
type: sum
sql: ${initial_order_amount} ;;
}
}
derived_subscription_type_subscriptions.view.lookml · 62 lines
source-preserved
- view: derived_subscription_type_subscriptions
derived_table:
sql: select p.id as partner_id, p.partner_identifier, p.name as partner_name, p.contact_email as partner_email,
cs.id as customer_subscription_id, cs.customer_id, cs.start_date_time, o.sub_total+o.shipping_charges-o.discount as initial_order_amount
from customer_subscriptions cs
join orders o
on cs.customer_id = o.customer_id
and timestampdiff(minute, cs.start_date_time,o.created_at) = 0
join coupon_instances i
on o.coupon_instance_id = i.id
join partners_coupons pc
on i.coupon_id = pc.coupon_id
join partners p
on pc.partner_id = p.id
WHERE (NOT EXISTS (
select cs2.id
from customer_subscriptions cs2
join orders o2
on cs2.customer_id = o2.customer_id
and date(cs2.start_date_time) = date(o2.created_at)
join coupon_instances i2
on o2.coupon_instance_id = i2.id
join coupons cp2
on i2.coupon_id = cp2.id
where left(cp2.code,4) in ('PartnerCode01', 'PartnerCode08', 'PartnerCode09', 'PartnerCode11', 'PartnerCode12', 'PartnerCode13', 'PartnerCode14', 'PartnerCode15')
and cs2.start_date_time < '14/1/1'
and cs.id = cs2.id))
fields:
- dimension: customer_id
type: int
sql: ${TABLE}.customer_id
- dimension: customer_subscription_id
type: int
sql: ${TABLE}.customer_subscription_id
- dimension: initial_order_amount
type: number
sql: ${TABLE}.initial_order_amount
- dimension: partner_id
type: int
sql: ${TABLE}.partner_id
- dimension: partner_identifier
sql: ${TABLE}.partner_identifier
- dimension: partner_email
sql: ${TABLE}.partner_email
- dimension: partner_name
sql: ${TABLE}.partner_name
- dimension_group: customer_start
type: time
timeframes:
- date
- week
- month
sql: ${TABLE}.start_date_time
- measure: count
type: count
- measure: count_percent_of_total
type: percent_of_total
label: Count (Percent of Total)
sql: ${count}
- measure: sum_order_amount
type: sum
sql: ${initial_order_amount}
Contents
- derived_subscription_type_subscriptions.sql
- derived_subscription_type_subscriptions.sql
- derived_subscription_type_subscriptions.view.lkml
- derived_subscription_type_subscriptions.view.lookml