For most custom analyses, obt_orders and obt_customers provide everything you need:
-- Example: Custom cohort analysisWITH first_valid_order AS ( SELECT sm_customer_key, MIN(order_processed_at) AS first_valid_order_processed_at FROM `your_project.sm_transformed_v2.obt_orders` WHERE is_order_sm_valid = TRUE GROUP BY 1)SELECT DATE_TRUNC(DATE(first_valid_order_processed_at), MONTH) AS cohort_month, COUNT(DISTINCT o.sm_customer_key) AS customers, SUM(o.order_net_revenue) AS net_revenueFROM `your_project.sm_transformed_v2.obt_orders` oJOIN first_valid_order f ON o.sm_customer_key = f.sm_customer_keyWHERE o.is_order_sm_valid = TRUEGROUP BY 1ORDER BY 1
SELECT sm_customer_key, MIN(order_created_at) AS first_order_date, MAX(order_created_at) AS last_order_date, COUNT(DISTINCT sm_order_key) AS order_count, SUM(order_net_revenue) AS lifetime_revenueFROM `your_project.sm_transformed_v2.obt_orders`WHERE is_order_sm_valid = TRUEGROUP BY 1
SELECT a.product_title AS product_a, b.product_title AS product_b, COUNT(DISTINCT a.sm_order_key) AS co_purchase_countFROM `your_project.sm_transformed_v2.obt_order_lines` aJOIN `your_project.sm_transformed_v2.obt_order_lines` b ON a.sm_order_key = b.sm_order_key AND a.sm_order_line_key < b.sm_order_line_keyWHERE a.is_order_sm_valid = TRUEGROUP BY 1, 2HAVING co_purchase_count >= 10ORDER BY co_purchase_count DESC