From 96076eb89d14d144e3f4c1143919af193d5314b2 Mon Sep 17 00:00:00 2001 From: Yam ZhengLim Date: Mon, 3 Jul 2023 07:28:14 +0000 Subject: [PATCH] dim_exchange_users create --- ..._email_verifications_group_by_user_ids.sql | 47 ++++++++++++ .../marts/warehouse/dim_exchange__users.sql | 76 +++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 models/intermediate/int_exchange__user_email_verifications_group_by_user_ids.sql create mode 100644 models/marts/warehouse/dim_exchange__users.sql diff --git a/models/intermediate/int_exchange__user_email_verifications_group_by_user_ids.sql b/models/intermediate/int_exchange__user_email_verifications_group_by_user_ids.sql new file mode 100644 index 0000000..1d456ee --- /dev/null +++ b/models/intermediate/int_exchange__user_email_verifications_group_by_user_ids.sql @@ -0,0 +1,47 @@ +-- IMPORT +WITH user_email_verifications AS ( + SELECT * FROM {{ ref('stg_exchange__user_email_verifications') }} +), + +-- LOGIC +user_email_verifications_group_by_user_ids AS ( + SELECT + user_id, + ZEROIFNULL(COUNT(user_email_verification_id)) AS number_of_verification_email_sent, + LISTAGG(DISTINCT email, ',') WITHIN GROUP(ORDER BY email) AS email, + ZEROIFNULL(MAX(is_completed)) AS is_completed, + MIN(created_datetime) AS first_email_verification_created_datetime, + MAX(created_datetime) AS last_email_verification_created_datetime, + MIN(IFF(is_completed = 1, updated_datetime, null)) AS email_verification_completed_datetime, + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM user_email_verifications + + GROUP BY user_id +), + +-- FINAL +final__int_exchange__user_email_verifications_group_by_user_ids AS ( + SELECT + -- ids + user_id, + + -- dimensions + email, + is_completed, + + -- measures + number_of_verification_email_sent, + + -- date/times + first_email_verification_created_datetime, + last_email_verification_created_datetime, + email_verification_completed_datetime, + + -- metadata + _dbt_ran_datetime + + FROM user_email_verifications_group_by_user_ids +) + +SELECT * FROM final__int_exchange__user_email_verifications_group_by_user_ids \ No newline at end of file diff --git a/models/marts/warehouse/dim_exchange__users.sql b/models/marts/warehouse/dim_exchange__users.sql new file mode 100644 index 0000000..1a1336c --- /dev/null +++ b/models/marts/warehouse/dim_exchange__users.sql @@ -0,0 +1,76 @@ +-- IMPORT +WITH users AS ( + SELECT * FROM {{ ref('stg_exchange__users') }} +), + +user_email_verifications_group_by_user_ids AS ( + SELECT * FROM {{ ref('int_exchange__user_email_verifications_group_by_user_ids') }} +), + +companies_brg_users AS ( + SELECT * FROM {{ ref('stg_exchange__companies_brg_users') }} +), + + +-- LOGIC +users_data_enrich AS ( + SELECT + users.user_id, + users.name, + users.email, + users.user_type, + users.status AS user_status, + users.deleted_datetime AS user_deleted_datetime, + users.created_datetime AS user_created_datetime, + users.updated_datetime AS user_updated_datetime, + + user_email_verifications_group_by_user_ids.is_completed AS is_completed_email_verification, + user_email_verifications_group_by_user_ids.number_of_verification_email_sent AS number_of_verification_email_sent, + user_email_verifications_group_by_user_ids.first_email_verification_created_datetime, + user_email_verifications_group_by_user_ids.last_email_verification_created_datetime, + user_email_verifications_group_by_user_ids.email_verification_completed_datetime, + + companies_brg_users.company_id, + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM users + + LEFT JOIN user_email_verifications_group_by_user_ids + ON (users.user_id = user_email_verifications_group_by_user_ids.user_id) + + LEFT JOIN companies_brg_users + ON (users.user_id = companies_brg_users.user_id) +), + +-- FINAL +final__dim_exchange__users AS ( + SELECT + -- ids + user_id, + company_id, + + -- dimensions + name, + email, + user_type, + user_status, + is_completed_email_verification, + + -- measures + number_of_verification_email_sent, + + -- date/times + user_deleted_datetime, + user_created_datetime, + user_updated_datetime, + first_email_verification_created_datetime, + last_email_verification_created_datetime, + email_verification_completed_datetime, + + -- metadata + _dbt_ran_datetime + + FROM users_data_enrich +) + +SELECT * FROM final__dim_exchange__users \ No newline at end of file