Skip to content

Commit 35d73b3

Browse files
authored
fix(sql): deduplicate program entitlements based on user email and program title (#2373)
1 parent 9eeb137 commit 35d73b3

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

src/ol_dbt/models/migration/edxorg_to_mitxonline_program_entitlements.sql

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,29 @@ with mitxonline_programs as (
2424
, number_of_redeemed_entitlements
2525
from {{ ref('stg__edxorg__program_entitlement') }}
2626
where user_email is not null
27+
and (expiration_date is null or expiration_date >= current_date)
28+
)
29+
30+
, deduped_program_entitlements as (
31+
select
32+
program_title
33+
, user_email
34+
, user_id
35+
, program_type
36+
, purchase_date
37+
, expiration_date
38+
, number_of_entitlements
39+
, number_of_redeemed_entitlements
40+
from (
41+
select
42+
*
43+
, row_number() over (
44+
partition by lower(user_email), program_title
45+
order by purchase_date desc nulls last, expiration_date desc nulls last
46+
) as _row_num
47+
from program_entitlements
48+
) as ranked_program_entitlements
49+
where _row_num = 1
2750
)
2851

2952
, mitx_user as (
@@ -98,7 +121,7 @@ select
98121
mitx_user.user_mitxonline_id
99122
, mitx_user_by_edxorg_id.user_mitxonline_id
100123
) as user_mitxonline_id
101-
from program_entitlements
124+
from deduped_program_entitlements as program_entitlements
102125
left join mitxonline_programs
103126
on mitxonline_programs.program_title = program_entitlements.program_title
104127
left join program_product_versions

src/ol_dbt/models/staging/edxorg/stg__edxorg__program_entitlement.sql

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ with source as (
22
select * from {{ source('ol_warehouse_raw_data', 'raw__edxorg__program_entitlement') }}
33
)
44

5-
{{ deduplicate_raw_table(order_by='_airbyte_extracted_at' , partition_columns='"program title", email') }}
5+
{{ deduplicate_raw_table(
6+
order_by="_airbyte_extracted_at desc, cast(date_parse(\"purchase date\", '%m/%d/%Y') as date)",
7+
partition_columns='"program title", email'
8+
) }}
69

710
, cleaned as (
811
select

0 commit comments

Comments
 (0)