Merged PR 2852: Fix: ensure priority selection on user migration

# Description

Fixing logic to ensure priority selection of claims when user satisfies multiple claim conditions.
It adds a new parameter that forcefully prioritises the selection of the date value for a certain claim over the others. If the value is repeated among claims, it will select the earliest date.

# Checklist

- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [X] The edited models contain PK tests, and I've ran and passed them.
- [X] I have checked for DRY opportunities with other models and docs.
- [X] I've picked the right materialization for the affected models.

# Other

- [ ] Check if a full-refresh is required after this PR is merged.

Related work items: #20773
This commit is contained in:
Oriol Roqué Paniagua 2024-09-16 09:34:44 +00:00
parent cf1d6e28cc
commit c1b97e17e6
2 changed files with 28 additions and 5 deletions

View file

@ -18,6 +18,11 @@ Important note: if a user migrates once a phase has started, we
It is likely that User B won't have Bookings from new dash It is likely that User B won't have Bookings from new dash
until it's migrated. So this migration date should be considered until it's migrated. So this migration date should be considered
as a hard, lower-limit of dates. as a hard, lower-limit of dates.
If a user satisfies more than one valid claims, in order to ensure
that the good date is considered we use the claim_enforcement_priority
value to force that a certain claim type will have precedence over
another. The lower the value, the more priority.
*/ */
{% macro get_new_dash_migration_phases_config() %} {% macro get_new_dash_migration_phases_config() %}
{% set migration_phases = [ {% set migration_phases = [
@ -25,11 +30,13 @@ Important note: if a user migrates once a phase has started, we
"phase_name": "MVP", "phase_name": "MVP",
"claim_type": "KYGMVP", "claim_type": "KYGMVP",
"default_deployment_date": "2024-07-30", "default_deployment_date": "2024-07-30",
"claim_enforcement_priority": 1,
}, },
{ {
"phase_name": "MVP", "phase_name": "MVP",
"claim_type": "MVPMIGRATEDUSER", "claim_type": "MVPMIGRATEDUSER",
"default_deployment_date": "2024-09-10", "default_deployment_date": "2024-09-10",
"claim_enforcement_priority": 0,
}, },
] %} ] %}
{{ return(migration_phases) }} {{ return(migration_phases) }}

View file

@ -36,7 +36,14 @@ with
then date('{{ phase.default_deployment_date }}') then date('{{ phase.default_deployment_date }}')
{% endfor %} {% endfor %}
else null else null
end as lower_limit_migration_date_utc end as lower_limit_migration_date_utc,
case
{% for phase in migration_phases %}
when upper(claim_type) = '{{ phase.claim_type }}'
then '{{ phase.claim_enforcement_priority }}'
{% endfor %}
else null
end as claim_enforcement_priority
from stg_core__claim from stg_core__claim
where where
{% for phase in migration_phases %} {% for phase in migration_phases %}
@ -45,17 +52,26 @@ with
{% endfor %} {% endfor %}
) )
-- Get only the first time the user was migrated, among different claim types that -- Get only one migration date per user migrated. If a user satisfies several claims,
-- satisfy the user migration possibility -- the date corresponding to the claim with more priority will be selected. The lower
select id_user_host, migration_phase, lower_limit_migration_date_utc -- the claim_enforcement_priority, the more priority it will have. If still 2 claims
-- have the same priority, select the earliest date.
select
id_user_host,
migration_phase,
lower_limit_migration_date_utc,
claim_enforcement_priority
from from
( (
select select
id_user_host, id_user_host,
migration_phase, migration_phase,
lower_limit_migration_date_utc, lower_limit_migration_date_utc,
claim_enforcement_priority,
row_number() over ( row_number() over (
partition by id_user_host order by lower_limit_migration_date_utc asc partition by id_user_host
order by
claim_enforcement_priority asc, lower_limit_migration_date_utc asc
) as rank ) as rank
from user_migration_from_claim from user_migration_from_claim
) )