Skip to content

Commit cc03d4b

Browse files
authored
Merge pull request #2832 from bcgov/2519-etl-responsible-party-property-owner
2519: ETL responsible party property owner
2 parents 9e638a9 + fc75b3d commit cc03d4b

File tree

18 files changed

+188
-21
lines changed

18 files changed

+188
-21
lines changed

bin/migrate-nris-data/ce_files/ce_files.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
def etl(batch_size):
8-
logger = setup_and_get_logger("ce-files-etl")
8+
logger = setup_and_get_logger("ce-file-etl")
99

1010
batch_read_write(
1111
logger,
@@ -21,8 +21,8 @@ def obfuscate(batch_size):
2121

2222
batch_read_write(
2323
logger,
24-
batch_size, # Obfuscation can be done in smaller batches to reduce transaction size.
25-
ABS_PATH / "ce_files/sql/count.sql",
24+
batch_size,
25+
ABS_PATH / "ce_files/sql/obfuscate_count.sql",
2626
ABS_PATH / "ce_files/sql/obfuscate_get_rows.sql",
2727
ABS_PATH / "ce_files/sql/obfuscate_update.sql",
2828
row_processor=row_obfuscator(),
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
select
2+
count(*)
3+
from
4+
alcs.compliance_and_enforcement ace;

bin/migrate-nris-data/ce_files/sql/obfuscate_update.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ set
88
from
99
(values %s) as v(uuid, intake_notes)
1010
where
11-
ace.uuid::text = v.uuid::text;
11+
ace.uuid::text = v.uuid::text
12+
and ace.intake_notes <> '';

bin/migrate-nris-data/db.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,20 @@ def batch_read_write(
7676
count_cursor.execute(count_sql)
7777
count_total = count_cursor.fetchone()[0]
7878

79-
logger.info(f"Total records to insert: {count_total}")
79+
logger.info(f"Total records to write: {count_total}")
8080

8181
num_successful = 0
8282

8383
with read_conn.cursor(
84-
name="read_cursor",
85-
cursor_factory=RealDictCursor
84+
name="read_cursor", cursor_factory=RealDictCursor
8685
) as read_cursor, write_conn.cursor() as write_cursor:
8786
read_cursor.execute(read_sql)
8887

8988
with Progress(SpinnerColumn(), BarColumn(), transient=True) as progress:
9089
task = progress.add_task("Progress:", total=count_total)
9190

9291
while rows := read_cursor.fetchmany(batch_size):
93-
num_to_insert = len(rows)
92+
curr_batch_size = len(rows)
9493

9594
if row_processor:
9695
rows = map(row_processor, rows)
@@ -103,19 +102,19 @@ def batch_read_write(
103102
)
104103
write_conn.commit()
105104

106-
num_successful += num_to_insert
105+
num_successful += curr_batch_size
107106

108-
progress.update(task, advance=num_to_insert)
107+
progress.update(task, advance=curr_batch_size)
109108
logger.debug(
110-
f"{num_to_insert} records inserted successfully; {num_successful} of {count_total} records inserted so far."
109+
f"{curr_batch_size} records ran successfully; {num_successful} of {count_total} records run so far."
111110
)
112111

113112
except Exception as err:
114113
logger.exception(err)
115114
write_conn.rollback()
116-
logger.info(f"Failed to insert batch of {num_to_insert}.")
115+
logger.info(f"Failed to run batch of {curr_batch_size}.")
117116

118-
logger.info(f"Successfully inserted {num_successful} of {count_total} records.")
117+
logger.info(f"Successfully ran {num_successful} of {count_total} records.")
119118

120119

121120
def load_sql(file_path):

bin/migrate-nris-data/migrate.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from common.constants import BATCH_UPLOAD_SIZE
55
import ce_files
6+
import responsible_parties
67
import submitters
78

89
console = Console()
@@ -28,6 +29,7 @@ def import_data(ctx, batch_size):
2829
# Order matters
2930
ctx.invoke(import_ce_files)
3031
ctx.invoke(import_submitters)
32+
ctx.invoke(import_responsible_parties)
3133

3234

3335
@import_data.command("ce-files")
@@ -46,6 +48,14 @@ def import_submitters(ctx):
4648
console.log("Submitter import complete.")
4749

4850

51+
@import_data.command("responsible-parties")
52+
@click.pass_context
53+
def import_responsible_parties(ctx):
54+
console.log("Start importing responsible parties...")
55+
responsible_parties.etl(batch_size=ctx.parent.params["batch_size"])
56+
console.log("Responsible party import complete.")
57+
58+
4959
@import_data.result_callback()
5060
def import_cleanup(results, batch_size):
5161
console.log("All imports complete. Cleaning up...")
@@ -68,6 +78,7 @@ def obfuscate(ctx, batch_size):
6878
# Order matters
6979
ctx.invoke(obfuscate_ce_files)
7080
ctx.invoke(obfuscate_submitters)
81+
ctx.invoke(obfuscate_responsible_parties)
7182

7283

7384
@obfuscate.command("ce-files")
@@ -82,10 +93,18 @@ def obfuscate_ce_files(ctx):
8293
@click.pass_context
8394
def obfuscate_submitters(ctx):
8495
console.log("Start obfuscating submitters...")
85-
submitters.obfuscate_submitters(batch_size=ctx.parent.params["batch_size"])
96+
submitters.obfuscate(batch_size=ctx.parent.params["batch_size"])
8697
console.log("Submitter obfuscation complete.")
8798

8899

100+
@obfuscate.command("responsible-parties")
101+
@click.pass_context
102+
def obfuscate_responsible_parties(ctx):
103+
console.log("Start obfuscating responsible parties...")
104+
responsible_parties.obfuscate(batch_size=ctx.parent.params["batch_size"])
105+
console.log("Responsible party obfuscation complete.")
106+
107+
89108
@obfuscate.result_callback()
90109
def obfuscation_cleanup(results, batch_size):
91110
console.log("All obfuscation complete. Cleaning up...")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .responsible_parties import *
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
from common.etl_logger import setup_and_get_logger
2+
from config import ABS_PATH
3+
from db import batch_read_write
4+
from faker import Faker
5+
6+
7+
def etl(batch_size):
8+
logger = setup_and_get_logger("responsible-party-etl")
9+
10+
batch_read_write(
11+
logger,
12+
batch_size,
13+
ABS_PATH / "responsible_parties/sql/count.sql",
14+
ABS_PATH / "responsible_parties/sql/et.sql",
15+
ABS_PATH / "responsible_parties/sql/l.sql",
16+
)
17+
18+
19+
def obfuscate(batch_size):
20+
logger = setup_and_get_logger("responsible-party-obfuscation")
21+
22+
batch_read_write(
23+
logger,
24+
batch_size,
25+
ABS_PATH / "responsible_parties/sql/obfuscate_count.sql",
26+
ABS_PATH / "responsible_parties/sql/obfuscate_get_rows.sql",
27+
ABS_PATH / "responsible_parties/sql/obfuscate_update.sql",
28+
row_processor=row_obfuscator(),
29+
)
30+
31+
32+
def row_obfuscator():
33+
faker = Faker("la")
34+
35+
def obfuscate_row(row):
36+
row["individual_name"] = faker.name()
37+
38+
return row
39+
40+
return obfuscate_row
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
select
2+
count(*)
3+
from
4+
nris.complaint nc;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
select
2+
'Property Owner'::alcs."compliance_and_enforcement_responsible_party_party_type_enum" as party_type,
3+
nc.foippa_type::alcs."compliance_and_enforcement_responsible_party_foippa_category_en" as foippa_category,
4+
false as is_previous,
5+
case
6+
when nc.foippa_type = 'Organization' then nc.submission_property_owner::text
7+
end as organization_name,
8+
case
9+
when nc.foippa_type <> 'Organization' then nc.submission_property_owner::text
10+
end as individual_name,
11+
ace.uuid as file_uuid
12+
from
13+
nris.complaint nc
14+
join alcs.compliance_and_enforcement ace on ace.file_number = nc.record_id
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
insert into
2+
alcs.compliance_and_enforcement_responsible_party (
3+
party_type,
4+
foippa_category,
5+
is_previous,
6+
organization_name,
7+
individual_name,
8+
file_uuid
9+
)
10+
values %s;

0 commit comments

Comments
 (0)