From 2602696abc16249aba5046f61efca24d05df12c8 Mon Sep 17 00:00:00 2001 From: Joshua Dias Date: Wed, 10 Apr 2024 17:12:53 +0100 Subject: [PATCH] Add finance and sales models for returned order value and monthly customer count --- jaffle_shop/models/final/finance/_models.yml | 15 +++++++++++++++ .../final/finance/fnl_returned_order_value.sql | 18 ++++++++++++++++++ jaffle_shop/models/final/sales/_models.yml | 14 ++++++++++++++ .../final/sales/fnl_monthly_customer_count.sql | 12 ++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 jaffle_shop/models/final/finance/_models.yml create mode 100644 jaffle_shop/models/final/finance/fnl_returned_order_value.sql create mode 100644 jaffle_shop/models/final/sales/_models.yml create mode 100644 jaffle_shop/models/final/sales/fnl_monthly_customer_count.sql diff --git a/jaffle_shop/models/final/finance/_models.yml b/jaffle_shop/models/final/finance/_models.yml new file mode 100644 index 000000000..28ae9fcc8 --- /dev/null +++ b/jaffle_shop/models/final/finance/_models.yml @@ -0,0 +1,15 @@ +version: 2 + +models: +- name: fnl_returned_order_value + meta: + owner: kensuke.morris@octoenergy.com + description: | + One row per total value of returned orders per customer + columns: + - name: customer_id + description: Primary key + tests: + - unique + - not_null + \ No newline at end of file diff --git a/jaffle_shop/models/final/finance/fnl_returned_order_value.sql b/jaffle_shop/models/final/finance/fnl_returned_order_value.sql new file mode 100644 index 000000000..c5aa0ab73 --- /dev/null +++ b/jaffle_shop/models/final/finance/fnl_returned_order_value.sql @@ -0,0 +1,18 @@ +WITH returned_orders AS ( + SELECT * + FROM {{ ref('wh_orders') }} + WHERE status = 'returned' +) + +customers AS ( + SELECT * + FROM {{ref('stg_customers') }} +) + +SELECT + customer_id + , SUM(COALESCE(total_amount, 0) AS total_value +FROM returned_orders +LEFT JOIN customers + ON returned_orders.customer_id = customers.customer_id +GROUP BY customer_id \ No newline at end of file diff --git a/jaffle_shop/models/final/sales/_models.yml b/jaffle_shop/models/final/sales/_models.yml new file mode 100644 index 000000000..326bf688c --- /dev/null +++ b/jaffle_shop/models/final/sales/_models.yml @@ -0,0 +1,14 @@ +version: 2 + +models: +- name: fnl_monthly_customer_count + meta: + owner: kensuke.morris@octoenergy.com + description: | + One row per customer count for each month based on their first orders. + columns: + - name: first_order_month + description: Primary key + tests: + - unique + - not_null \ No newline at end of file diff --git a/jaffle_shop/models/final/sales/fnl_monthly_customer_count.sql b/jaffle_shop/models/final/sales/fnl_monthly_customer_count.sql new file mode 100644 index 000000000..8ba784926 --- /dev/null +++ b/jaffle_shop/models/final/sales/fnl_monthly_customer_count.sql @@ -0,0 +1,12 @@ +WITH customer_orders AS ( + SELECT + customer_id + , DATE_FORMAT(first_order, 'MMMM') As order_month + FROM {{ ref('wh_customers') }} +) + +SELECT + first_order AS first_order_month + , COUNT(*) AS customer_count +FROM customer_orders +GROUP BY first_order \ No newline at end of file