Skip to content

Commit 932e56c

Browse files
authored
Merge pull request #5074 from navikt/chore/bigquery
Chore/bigquery
2 parents 4f8ae43 + 6ef3172 commit 932e56c

File tree

2 files changed

+152
-3
lines changed

2 files changed

+152
-3
lines changed

iac/bigquery-terraform/prod/datastreams.tf

+44
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ module "mr_api_datastream" {
2424
bigquery_connection_profile_id = module.mr_datastream_vpc.bigquery_connection_profile_id
2525
}
2626
big_query_dataset_delete_contents_on_destroy = true
27+
2728
postgresql_include_schemas = [
2829
{
2930
schema = "public",
@@ -40,4 +41,47 @@ module "mr_api_datastream" {
4041
]
4142
}
4243
]
44+
45+
access_roles = [
46+
{
47+
role = "OWNER"
48+
special_group = "projectOwners"
49+
},
50+
{
51+
role = "READER"
52+
special_group = "projectReaders"
53+
},
54+
{
55+
role = "WRITER"
56+
special_group = "projectWriters"
57+
},
58+
{
59+
role = "roles/bigquery.metadataViewer"
60+
group_by_email = "[email protected]"
61+
}
62+
]
63+
64+
authorized_views = [
65+
{
66+
view = {
67+
dataset_id = "mulighetsrommet_api_datastream"
68+
project_id = var.gcp_project["project"]
69+
table_id = "tiltakstype_view"
70+
}
71+
},
72+
{
73+
view = {
74+
dataset_id = "mulighetsrommet_api_datastream"
75+
project_id = var.gcp_project["project"]
76+
table_id = "avtale_view"
77+
}
78+
},
79+
{
80+
view = {
81+
dataset_id = "mulighetsrommet_api_datastream"
82+
project_id = var.gcp_project["project"]
83+
table_id = "gjennomforing_view"
84+
}
85+
},
86+
]
4387
}

iac/bigquery-terraform/prod/views-mr-api.tf

+108-3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,91 @@ WHERE tiltakskode IS NOT NULL
4242
EOF
4343
}
4444

45+
module "mr_api_avtale_view" {
46+
source = "../modules/google-bigquery-view"
47+
deletion_protection = false
48+
dataset_id = module.mr_api_datastream.dataset_id
49+
view_id = "avtale_view"
50+
view_schema = jsonencode(
51+
[
52+
{
53+
mode = "NULLABLE"
54+
name = "id"
55+
type = "STRING"
56+
description = "ID til avtalen."
57+
},
58+
{
59+
mode = "NULLABLE"
60+
name = "tiltakstype_id"
61+
type = "STRING"
62+
description = "ID til tiltakstypen."
63+
},
64+
{
65+
mode = "NULLABLE"
66+
name = "start_dato"
67+
type = "DATE"
68+
description = "Start-datoen til avtalen."
69+
},
70+
{
71+
mode = "NULLABLE"
72+
name = "slutt_dato"
73+
type = "DATE"
74+
description = "Slutt-datoen til avtalen. Denne kan være åpen (null), ellers indikerer den siste dagen som avtalen er pågående."
75+
},
76+
{
77+
mode = "NULLABLE"
78+
name = "avtaletype"
79+
type = "STRING"
80+
description = <<EOF
81+
Indikerer hvilken type avtale som har blitt inngått.
82+
83+
RAMMEAVTALE: Offentlig anskaffet rammeavtale.
84+
FORHANDSGODKJENT: Avtaler med forhåndsgodkjente tiltaksleverandører.
85+
OFFENTLIG_OFFENTLIG: Om dette er en avtale med offentlig-offentlig samarbeid.
86+
AVTALE: Enkelte avtaler som ikke faller under resten av kategoriene.
87+
EOF
88+
},
89+
{
90+
mode = "NULLABLE"
91+
name = "opprettet_tidspunkt"
92+
type = "TIMESTAMP"
93+
description = "Tidspunktet som avtalen ble opprettet (i databasen). Merk at dette tidspunktet ofte ikke samsvarer med når avtalen initielt ble opprettet (gjelder bl.a. for alle avtaler som har blitt overført fra Arena)."
94+
},
95+
{
96+
mode = "NULLABLE"
97+
name = "oppdatert_tidspunkt"
98+
type = "TIMESTAMP"
99+
description = "Tidspunktet som avtalen sist ble oppdatert (i databasen)."
100+
},
101+
{
102+
mode = "NULLABLE"
103+
name = "avbrutt_tidspunkt"
104+
type = "TIMESTAMP"
105+
description = "Indikerer om avtalen har blitt avbrutt eller ikke."
106+
},
107+
]
108+
)
109+
view_query = <<EOF
110+
SELECT
111+
id,
112+
tiltakstype_id,
113+
start_dato,
114+
slutt_dato,
115+
CASE
116+
WHEN avtaletype = 'Rammeavtale' THEN 'RAMMEAVTALE'
117+
WHEN avtaletype = 'Forhaandsgodkjent' THEN 'FORHANDSGODKJENT'
118+
WHEN avtaletype = 'OffentligOffentlig' THEN 'OFFENTLIG_OFFENTLIG'
119+
WHEN avtaletype = 'Avtale' THEN 'AVTALE'
120+
ELSE avtaletype
121+
END
122+
AS avtaletype,
123+
created_at as opprettet_tidspunkt,
124+
updated_at as oppdatert_tidspunkt,
125+
avbrutt_tidspunkt
126+
FROM `${var.gcp_project["project"]}.${module.mr_api_datastream.dataset_id}.public_avtale`
127+
EOF
128+
}
129+
45130
module "mr_api_gjennomforing_view" {
46131
source = "../modules/google-bigquery-view"
47132
deletion_protection = false
@@ -61,6 +146,12 @@ module "mr_api_gjennomforing_view" {
61146
type = "STRING"
62147
description = "ID til tiltakstypen."
63148
},
149+
{
150+
mode = "NULLABLE"
151+
name = "avtale_id"
152+
type = "STRING"
153+
description = "ID til avtalen."
154+
},
64155
{
65156
mode = "NULLABLE"
66157
name = "tiltaksnummer"
@@ -79,6 +170,18 @@ module "mr_api_gjennomforing_view" {
79170
type = "DATE"
80171
description = "Slutt-datoen til gjennomføringen. Denne kan være åpen (null), ellers indikerer den siste dagen som gjennomføringen er pågående."
81172
},
173+
{
174+
mode = "NULLABLE"
175+
name = "opprettet_tidspunkt"
176+
type = "TIMESTAMP"
177+
description = "Tidspunktet som gjennomføringen ble opprettet (i databasen). Merk at dette tidspunktet ofte ikke samsvarer med når gjennomføringen initielt ble opprettet (gjelder bl.a. for alle gjennomføringer som har blitt overført fra Arena)."
178+
},
179+
{
180+
mode = "NULLABLE"
181+
name = "oppdatert_tidspunkt"
182+
type = "TIMESTAMP"
183+
description = "Tidspunktet som gjennomføringen sist ble oppdatert (i databasen)."
184+
},
82185
{
83186
mode = "NULLABLE"
84187
name = "avsluttet_tidspunkt"
@@ -91,12 +194,14 @@ module "mr_api_gjennomforing_view" {
91194
SELECT
92195
id,
93196
tiltakstype_id,
197+
avtale_id,
94198
tiltaksnummer,
95-
avsluttet_tidspunkt,
96199
start_dato,
97-
slutt_dato
200+
slutt_dato,
201+
created_at as opprettet_tidspunkt,
202+
updated_at as oppdatert_tidspunkt,
203+
avsluttet_tidspunkt
98204
FROM `${var.gcp_project["project"]}.${module.mr_api_datastream.dataset_id}.public_gjennomforing`
99-
WHERE slutt_dato is null or slutt_dato >= DATE '2018-01-01'
100205
EOF
101206
}
102207

0 commit comments

Comments
 (0)