diff --git a/models/marts/dim_members.sql b/models/marts/dim_members.sql new file mode 100644 index 0000000..7e56a49 --- /dev/null +++ b/models/marts/dim_members.sql @@ -0,0 +1,25 @@ +with members as ( + + select * + from {{ ref('stg_members') }} + +), + +final as ( + + select + member_id, + first_name, + last_name, + email, + missing_email_flag, + date_of_birth, + join_date, + membership_status, + home_club + from members + +) + +select * +from final \ No newline at end of file diff --git a/models/marts/dim_members.yml b/models/marts/dim_members.yml new file mode 100644 index 0000000..f9034fc --- /dev/null +++ b/models/marts/dim_members.yml @@ -0,0 +1,60 @@ +version: 2 + +models: + - name: dim_members + description: Final member dimension with one row per member and cleaned descriptive attributes. + + columns: + - name: member_id + description: Unique identifier for each member. + tests: + - not_null + - unique + + - name: first_name + description: Members first name. + tests: + - not_null + + - name: last_name + description: Members last name. + tests: + - not_null + + - name: email + description: Members email address, null if missing. + + - name: missing_email_flag + description: Flag indicating whether the member is missing an email address. + tests: + - not_null + - accepted_values: + arguments: + values: [true, false] + quote: false + + - name: date_of_birth + description: Members date of birth. + tests: + - not_null + + - name: join_date + description: Date the member joined. + tests: + - not_null + + - name: membership_status + description: Cleaned membership status. + tests: + - not_null + - accepted_values: + arguments: + values: ['active', 'inactive', 'unknown'] + + - name: home_club + description: Location of members home club. + tests: + - not_null + - accepted_values: + arguments: + values: ['Bow', 'Canary Wharf', 'Hackney', 'Stratford'] \ No newline at end of file diff --git a/tests/singular_tests/dim_members_join_date_after_birth_date.sql b/tests/singular_tests/dim_members_join_date_after_birth_date.sql new file mode 100644 index 0000000..011070d --- /dev/null +++ b/tests/singular_tests/dim_members_join_date_after_birth_date.sql @@ -0,0 +1,3 @@ +select * +from {{ ref('dim_members') }} +where join_date < date_of_birth